Fagskolen - itnett/FTD02H-N GitHub Wiki
This document provides an overview of a GitHub repository containing assignments and guides from Fagskolen Innlandet, detailing file improvements, image file suggestions, and an Active Directory hierarchy setup guide.
Her er alle lenkene hentet fra dokumentet, hver på en egen linje:
- https://github.com/larsenjr/larsenjr.github.io
- https://fsi.larsenjr.no/fsi2/ADhierarkiDel1
- https://github.com/search?q=Fagskolen&type=repositories
- https://github.com/larsenjr/larsenjr.github.io/tree/master)
- https://github.com/larsenjr/larsenjr.github.io/tree/master).
- https://github.com/kristersoberg/Hash-gen-check).
- https://github.com/larsenjr/larsenjr.github.io/tree/master/img).
- https://github.com/larsenjr/larsenjr.github.io/blob/master/fsi2/ADhierarkiDel1.md).
- https://www.arduino.cc/en/software](https://www.arduino.cc/en/software)
- https://github.com/larsenjr/larsenjr.github.io/tree/master/fsi2).
- https://github.com/kristersoberg/tverrfaglig-prosjekt/blob/main/TP-GUI.py).
- https://github.com/kristersoberg/Hash-gen-check/blob/main/hash-comparator.py).
- https://github.com/kristersoberg/Hash-gen-check/blob/main/hash-generator3.py).
- https://choosealicense.com/
- https://choosealicense.com/licenses/mit/.
- https://choosealicense.com/),
- https://choosealicense.com/licenses/mit/).
- https://github.com/larsenjr/larsenjr.github.io/blob/master/fsi2/ADhierarkiDel1.md).
- https://github.com/larsenjr/larsenjr.github.io/blob/master/fsi2/ADhierarkiDel2.md).
- https://github.com/larsenjr/larsenjr.github.io/blob/master/fsi2/ConfigVPNIPSEC.md).
- https://github.com/larsenjr/larsenjr.github.io/blob/master/fsi2/ConfigVPNIPSEC.md).
- https://github.com/larsenjr/larsenjr.github.io/blob/master/fsi2/ConfigVPNIPSEC.md).
- https://github.com/larsenjr/larsenjr.github.io/blob/master/fsi2/MySQLGuide.md).
- https://github.com/larsenjr/larsenjr.github.io/blob/master/fsi2/OppgaveGpoPowershell.md).
- https://github.com/larsenjr/larsenjr.github.io/blob/master/fsi2/OsiModellen.md).
- https://github.com/larsenjr/larsenjr.github.io/blob/master/fsi2/SQLpr%C3%B8ve.md).
- https://github.com/larsenjr/larsenjr.github.io/blob/master/fsi2/arbeidskravII.md).
- https://raw.githubusercontent.com/larsenjr/larsenjr.github.io/master/fsi2/arbeidskravII.md).
- https://www.tutorialspoint.com/restful/index.htm)
- https://restfulapi.net/)
- https://github.com/KjetilIN/WarGames)
- https://www.coursera.org/learn/game-development)
- https://www.anylogic.com/resources/articles/an-introduction-to-simulation/)
- https://github.com/KjetilIN/rs-search-engine)
- https://www.rust-lang.org/learn)
- https://www.howstuffworks.com/internet/basics/search-engine.htm)
- https://www.geeksforgeeks.org/tf-idf-model-in-information-retrieval/)
- https://github.com/RIT-NTNU-Bachelor/OpenCV_Server)
- https://docs.opencv.org/master/)
- https://www.coursera.org/learn/computer-vision-basics)
- https://github.com/IT-Start-Gjovik/startgjovik_website)
- https://developer.mozilla.org/en-US/docs/Learn)
- https://www.freecodecamp.org/learn)
- https://github.com/Celebrian/Project-in-Object-Oriented-Programming)
- https://en.cppreference.com/w/)
- https://www.amazon.com/Object-Oriented-Programming-Balagurusamy/dp/0070669074)
- https://www.learncpp.com/)
- https://www.geeksforgeeks.org/object-oriented-programming-oops-concept-in-java/)
- https://www.udemy.com/course/free-learn-c-tutorial-beginners/)
- https://github.com/thomaslian/marketplace-celo)
- https://docs.celo.org/welcome)
- https://docs.celo.org/developer-guide/overview)
- https://remix.ethereum.org/)
- https://marketplace-celo.herokuapp.com/)
- https://chrome.google.com/webstore/detail/celoextensionwallet/kkiompjemlcfhjinhjeklibbgbakjcnc?hl=en)
- https://celo.org/developers/faucet)
- https://marketplace-celo.herokuapp.com/).
- https://alfajores-blockscout.celo-testnet.org/address/0xf4b26aead8fcaf64b87c9981e34b17e6aad9bb6/transactions)
- https://alfajores-blockscout.celo-testnet.org/tx/0xb8c30f168815a1d582947682eb66c5131f4824d061e17f632181471c7d049de6/internal-transactions)
- http://localhost:3000/](http://localhost:3000/).
- https://docs.celo.org/)
- https://soliditylang.org/)
- https://web3js.readthedocs.io/)
- https://webpack.js.org/)
- The GitHub repository contains assignments and guides from Fagskolen Innlandet, including key files like README.md and _config.yml.
- The repository mainly consists of HTML, CSS, SCSS, and JavaScript files, with suggestions for improving image files and detailed file enhancements.
- The document offers an Active Directory hierarchy setup guide for a company with 340 employees, covering domain setup, group nesting, and user home directories.
- Improvements include structuring content with headings, bullet points, and examples, enhancing technical accuracy, and providing detailed descriptions and examples.
- Scripts like
hash-comparator.py
andhash-generator3.py
are analyzed for improvements in error handling, readability, and modularization.
https://github.com/larsenjr/larsenjr.github.io
https://fsi.larsenjr.no/fsi2/ADhierarkiDel1
https://github.com/search?q=Fagskolen&type=repositories
The GitHub repository larsenjr.github.io contains various assignments and guides from Fagskolen Innlandet. It includes directories for configuration files, assets (CSS, images, JavaScript), and other project-specific files. Key files include the README.md and _config.yml, which likely contain documentation and configuration settings for the site. The repository is mainly composed of HTML, CSS, SCSS, and JavaScript. For more details, you can explore the repository directly here.
Here's an overview and suggestions for improving each image file in the repository:
-
README.md
- Content: Overview of the project, which involves creating Python scripts for hashing and checking hash integrity.
- Improvements: Add detailed descriptions, usage examples, and installation instructions.
-
hash-comparator.py
- Content: Script that reads a file and its hash to compare and verify if the file has changed.
- Improvements: Add comments explaining each function, improve error handling, and include examples of usage.
-
hash-generator3.py
- Content: Script that reads a file's contents and generates a SHA256 hash, saving it to a new file.
- Improvements: Add comments, ensure compatibility with different file types, and include a usage example.
-
hvorfor_denne_lisens.md
- Content: Explanation of the chosen license, detailing its function and contents.
- Improvements: Expand on the rationale for choosing the license, provide examples of how it affects usage, and clarify any legal implications.
README.md
# Hash Integrity with Python
## Overview
This project contains scripts to generate and compare SHA256 hashes for file integrity verification.
## Scripts
1. **hash-generator3.py**: Generates a SHA256 hash for a given file.
2. **hash-comparator.py**: Compares a file's content with its hash to check integrity.
## Usage
### hash-generator3.py
```bash
python hash-generator3.py <file_path>
python hash-comparator.py <file_path> <hash_file_path>
This project is licensed under the MIT License. See hvorfor_denne_lisens.md
for more details.
**hash-comparator.py**
```python
import hashlib
import sys
def read_file(file_path):
try:
with open(file_path, 'rb') as file:
return file.read()
except IOError as e:
print(f"Error reading file {file_path}: {e}")
sys.exit(1)
def compare_hashes(file_path, hash_file_path):
file_content = read_file(file_path)
with open(hash_file_path, 'r') as hash_file:
stored_hash = hash_file.read().strip()
file_hash = hashlib.sha256(file_content).hexdigest()
if file_hash == stored_hash:
print("The file has not been changed.")
else:
print("The file has been changed.")
if __name__ == "__main__":
if len(sys.argv) != 3:
print("Usage: python hash-comparator.py <file_path> <hash_file_path>")
sys.exit(1)
compare_hashes(sys.argv[1], sys.argv[2])
hash-generator3.py
import hashlib
import sys
def generate_hash(file_path):
try:
with open(file_path, 'rb') as file:
file_content = file.read()
file_hash = hashlib.sha256(file_content).hexdigest()
with open(f"{file_path}.sha256", 'w') as hash_file:
hash_file.write(file_hash)
print(f"Hash for {file_path} generated and saved as {file_path}.sha256")
except IOError as e:
print(f"Error: {e}")
sys.exit(1)
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python hash-generator3.py <file_path>")
sys.exit(1)
generate_hash(sys.argv[1])
hvorfor_denne_lisens.md
# Why This License?
## MIT License Overview
The MIT License is a permissive free software license. This means it is simple and easy to understand, and it places very few restrictions on reuse, making it suitable for a wide range of projects.
## Key Points
- **Freedom to Use**: Allows anyone to use the code for any purpose.
- **Freedom to Modify**: Users can modify and distribute the code freely.
- **Liability Disclaimer**: Protects the author from legal liability.
## Implications
Using this license encourages collaboration and sharing, which is essential for educational and open-source projects. By choosing the MIT License, we ensure that our work can benefit the community while protecting ourselves legally.
These improvements make the repository more user-friendly, better documented, and clearer for anyone looking to understand or contribute to the project. You can explore the repository here.
Original Code:
import hashlib
import sys
def read_file(file_path):
try:
with open(file_path, 'rb') as file:
return file.read()
except IOError as e:
print(f"Error reading file {file_path}: {e}")
sys.exit(1)
def compare_hashes(file_path, hash_file_path):
file_content = read_file(file_path)
with open(hash_file_path, 'r') as hash_file:
stored_hash = hash_file.read().strip()
file_hash = hashlib.sha256(file_content).hexdigest()
if file_hash == stored_hash:
print("The file has not been changed.")
else:
print("The file has been changed.")
if __name__ == "__main__":
if len(sys.argv) != 3:
print("Usage: python hash-comparator.py <file_path> <hash_file_path>")
sys.exit(1)
compare_hashes(sys.argv[1], sys.argv[2])
Analysis and Improvements:
- Error Handling: Improve error messages for clarity.
- Code Readability: Add comments to explain each function.
- Efficiency: Optimize reading the hash file.
Improved Code:
import hashlib
import sys
def read_file(file_path):
"""
Reads the contents of a file in binary mode.
"""
try:
with open(file_path, 'rb') as file:
return file.read()
except IOError as e:
print(f"Error reading file {file_path}: {e}")
sys.exit(1)
def compare_hashes(file_path, hash_file_path):
"""
Compares the hash of a file to a stored hash.
"""
file_content = read_file(file_path)
try:
with open(hash_file_path, 'r') as hash_file:
stored_hash = hash_file.read().strip()
except IOError as e:
print(f"Error reading hash file {hash_file_path}: {e}")
sys.exit(1)
file_hash = hashlib.sha256(file_content).hexdigest()
if file_hash == stored_hash:
print("The file has not been changed.")
else:
print("The file has been changed.")
if __name__ == "__main__":
if len(sys.argv) != 3:
print("Usage: python hash-comparator.py <file_path> <hash_file_path>")
sys.exit(1)
compare_hashes(sys.argv[1], sys.argv[2])
Original Code:
import hashlib
import sys
def generate_hash(file_path):
try:
with open(file_path, 'rb') as file:
file_content = file.read()
file_hash = hashlib.sha256(file_content).hexdigest()
with open(f"{file_path}.sha256", 'w') as hash_file:
hash_file.write(file_hash)
print(f"Hash for {file_path} generated and saved as {file_path}.sha256")
except IOError as e:
print(f"Error: {e}")
sys.exit(1)
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python hash-generator3.py <file_path>")
sys.exit(1)
generate_hash(sys.argv[1])
Analysis and Improvements:
- Error Handling: Separate reading and writing errors.
- Code Readability: Add comments and improve print statements for clarity.
Improved Code:
import hashlib
import sys
def generate_hash(file_path):
"""
Generates a SHA256 hash for the given file and saves it.
"""
try:
with open(file_path, 'rb') as file:
file_content = file.read()
except IOError as e:
print(f"Error reading file {file_path}: {e}")
sys.exit(1)
file_hash = hashlib.sha256(file_content).hexdigest()
try:
with open(f"{file_path}.sha256", 'w') as hash_file:
hash_file.write(file_hash)
print(f"Hash for {file_path} generated and saved as {file_path}.sha256")
except IOError as e:
print(f"Error writing hash file for {file_path}: {e}")
sys.exit(1)
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python hash-generator3.py <file_path>")
sys.exit(1)
generate_hash(sys.argv[1])
These improvements enhance the robustness, readability, and maintainability of the scripts. The comments provide clarity, making it easier for others to understand and modify the code if necessary.
- 2018-12-11_4aLkM9.png: Likely a screenshot. Improve by providing a clearer and annotated version.
- 4andfunksjon.png: Diagram of functions. Improve clarity and add labels.
- andboolsk.png: Boolean logic diagram. Add color coding and descriptions.
- can_u_do_this.jpg: Motivational image. Improve resolution.
- chrome_2018-08-22_08-35-25.png: Browser screenshot. Crop to focus on relevant content.
- dataexport.png: Data export interface. Highlight key buttons.
- dataexport1.png: Similar to above. Add usage instructions.
- dataimport.png: Data import interface. Annotate steps.
- dataimportnav.png: Navigation for data import. Highlight navigation paths.
- exportdesc.png: Description of export. Add text explanations.
- exporttable.png: Export table example. Ensure readability.
- forwardeng.png: Forward engineering diagram. Add legend.
- importself.png: Self-import interface. Improve instructions.
- modell.png: Model diagram. Improve detail and clarity.
- oppgave6.png: Task 6 image. Clarify with additional annotations.
- oppgave71.png: Task 7.1 image. Add step-by-step labels.
- oppgave72.png: Task 7.2 image. Annotate key areas.
- oppgave73.png: Task 7.3 image. Clarify with labels.
- oppgave74.png: Task 7.4 image. Add instructions.
- oppgave7grafikk.png: Graphics for Task 7. Improve design.
- rambo.jpg: Image of Rambo. Higher resolution needed.
- resultat12A.png: Result A. Annotate results.
- resultat12B.png: Result B. Improve readability.
- resultat1Prove.png: Test result. Add explanations.
- resultatGjennomsnitt.png: Average results. Clarify with annotations.
- resultatMeProve.png: Test results. Improve clarity.
- resultatProve.png: Test results. Add labels.
- resultatUsa.png: US results. Annotate for clarity.
- resultatgjennomsnitt2.png: Average results 2. Add descriptions.
- reverseeng.png: Reverse engineering diagram. Improve details.
- sky.jpeg: Sky image. Higher resolution needed.
- sporring12A.png: Query 12A. Add explanatory text.
- sporring12B.png: Query 12B. Improve readability.
- sporringGjennomsnitt.png: Average query. Clarify results.
- sporringTotal.png: Total query. Annotate key points.
- spørringCogUSA.png: Query and US comparison. Add context.
- startimport.png: Start import interface. Highlight key actions.
- tegningA.png: Drawing A. Improve clarity and detail.
- tegningB.png: Drawing B. Enhance details and annotations.
For more details, explore the images directly on the repository page.
The document outlines steps to set up an Active Directory (AD) hierarchy for a company with 340 employees across five departments. It covers domain setup with Organizational Units (OUs), group nesting using the IGDLA principle for access control, and setting up user home directories with proper permissions.
-
Structure and Clarity:
- Headings and Subheadings: Use clearer headings to break down the content into sections.
- Bullet Points and Numbered Lists: Use these to organize steps and lists for better readability.
- Images and Diagrams: Ensure all images are relevant, high-quality, and properly referenced in the text.
-
Content Enhancements:
- Detailed Descriptions: Provide more detailed explanations for each step, especially for complex tasks like setting up OUs and group nesting.
- Examples: Include specific examples or case studies to illustrate key points.
- Links to Resources: Ensure all external links are up-to-date and relevant.
-
Technical Accuracy:
- Commands and Scripts: Verify that all commands and scripts are accurate and compatible with current systems.
- Permissions and Policies: Detail the implications of different permission settings and policies.
Original Text:
## Oppgave 1
Beskriv hvordan du vil sette opp domenet med OU’er for enklest mulig administrasjon.
Som tabellen viser har man domene `HamarFotballGulvAS.local`. Heretter ville jeg delt opp slik at man har en `OU` for hele bedriften, for så å dele opp igjen bedriften i de respektive avdelingene.
Improved Text:
## Task 1: Setting Up the Domain with OUs for Simplified Administration
### Step-by-Step Instructions
1. **Create the Domain**:
- Domain Name: `HamarFotballGulvAS.local`.
2. **Organizational Units (OUs)**:
- **Top-Level OU**: Create a top-level OU named `HamarFotballGulvAS`.
- **Department OUs**: Under the top-level OU, create OUs for each department:
- `Administration`
- `Ham-Kam`
- `Warehouse`
- `Carpenters`
- `Support Staff`
3. **Computer OUs**:
- **Laptops and Desktops**: Create separate OUs for laptops and desktops within each department OU.
### Example:
- **Laptop Naming Convention**: `LSTO0101` (L for Laptop, STO for Support, 0101 as unique ID).
- **Hierarchy Diagram**: [Insert high-quality image]
These changes would help make the document more user-friendly and informative.
You can view the original document here.
Here are the improved versions of each file in the fsi2
directory, with enhancements for clarity, structure, and completeness:
# Active Directory Hierarchy Setup (Part 1)
## Task 1: Domain Setup with OUs for Simplified Administration
### Step-by-Step Instructions
1. **Create the Domain**:
- **Domain Name**: `HamarFotballGulvAS.local`
2. **Organizational Units (OUs)**:
- **Top-Level OU**: `HamarFotballGulvAS`
- **Department OUs**:
- `Administration`
- `Ham-Kam`
- `Warehouse`
- `Carpenters`
- `Support Staff`
- **Computer OUs**: Separate for laptops and desktops within each department.
### Example Hierarchy:
- **Diagram**: [Insert high-quality image]
## Task 2: Group Nesting with IGDLA Principle
1. **Create Groups**: Define groups based on roles and access levels.
2. **Assign Permissions**: Ensure proper access controls using IGDLA (Identities, Global Groups, Domain Local Groups, Access).
3. **Diagram**: [Insert example diagram]
## Task 3: User Home Directories
1. **Create Home Directories**: Set up user-specific directories.
2. **Set Permissions**: Configure permissions for security and accessibility.
### Commands:
- [Insert detailed PowerShell or CLI commands here]
## Conclusion
Ensure consistency and accuracy in the setup process.
# Active Directory Hierarchy Setup (Part 2)
## Task 4: Advanced Group Policies
### Step-by-Step Instructions
1. **Create Group Policies**: Define and implement GPOs for security and management.
2. **Apply GPOs**: Assign GPOs to specific OUs and groups.
### Examples:
- **Security Policies**: [Insert detailed examples]
- **Management Policies**: [Insert detailed examples]
## Task 5: Monitoring and Maintenance
1. **Monitor AD Health**: Regular checks using tools like `dcdiag` and `repadmin`.
2. **Backup and Recovery**: Implement regular backups and recovery procedures.
## Conclusion
Maintain the AD setup through continuous monitoring and updates.
# Configuring VPN with IPSEC
## Introduction
Guide to setting up a secure VPN using IPSEC.
## Step-by-Step Instructions
1. **Initial Setup**:
- **Install Necessary Packages**: Ensure IPSEC and VPN packages are installed.
- **Configuration Files**: Edit configuration files for IPSEC.
2. **VPN Configuration**:
- **Define VPN Settings**: IP ranges, encryption methods, etc.
- **Set Up Authentication**: Use secure methods like certificates or pre-shared keys.
3. **Testing and Troubleshooting**:
- **Test the Connection**: Ensure the VPN is working correctly.
- **Troubleshoot Issues**: Common issues and solutions.
## Security Best Practices
- Regularly update software.
- Use strong encryption methods.
- Monitor VPN usage.
### Example Configuration:
- [Insert sample configuration file here]
## Conclusion
Ensure the VPN setup is secure and functional.
# MySQL Guide
## Introduction
Comprehensive guide for using MySQL effectively.
## Step-by-Step Instructions
1. **Installation and Setup**:
- **Install MySQL**: Follow platform-specific instructions.
- **Initial Configuration**: Set up root user and secure the installation.
2. **Basic Commands**:
- **Creating Databases and Tables**: Syntax and examples.
- **Inserting, Updating, Deleting Data**: Basic CRUD operations.
3. **Advanced Features**:
- **Indexes and Optimization**: Improve query performance.
- **Stored Procedures and Triggers**: Enhance database functionality.
4. **Security Practices**:
- **User Permissions**: Grant and revoke permissions.
- **Data Encryption**: Secure sensitive data.
### Example Commands:
- [Insert sample commands and scripts here]
## Conclusion
Follow best practices for efficient and secure MySQL usage.
# Task: Using GPO with PowerShell
## Introduction
Guide to managing Group Policy Objects (GPO) using PowerShell.
## Step-by-Step Instructions
1. **Creating GPOs with PowerShell**:
- **Create a New GPO**: Command and example.
- **Link GPO to OU**: Command and example.
2. **Modifying GPOs**:
- **Edit GPO Settings**: Commands for common settings.
- **Backup and Restore GPOs**: Ensure GPOs can be restored if needed.
### Example Scripts:
- [Insert sample PowerShell scripts here]
## Conclusion
Use PowerShell to streamline GPO management and enhance productivity.
# The OSI Model
## Introduction
Overview of the OSI model and its layers.
## Detailed Explanation of Each Layer
1. **Physical Layer**:
- **Description**: Hardware and physical connections.
- **Examples**: Cables, switches.
2. **Data Link Layer**:
- **Description**: Node-to-node data transfer.
- **Examples**: MAC addresses, switches.
3. **Network Layer**:
- **Description**: Routing and forwarding.
- **Examples**: IP addresses, routers.
4. **Transport Layer**:
- **Description**: End-to-end communication.
- **Examples**: TCP, UDP.
5. **Session Layer**:
- **Description**: Session management.
- **Examples**: APIs, sockets.
6. **Presentation Layer**:
- **Description**: Data translation.
- **Examples**: Encryption, compression.
7. **Application Layer**:
- **Description**: Network services.
- **Examples**: HTTP, FTP.
### Diagrams and Real-World Examples:
- [Insert diagrams and examples here]
## Conclusion
Understanding the OSI model is crucial for networking.
# SQL Practice Problems
## Introduction
Collection of SQL practice problems to enhance your skills.
## Problems and Solutions
1. **Basic Queries**:
- **Problem 1**: Select data from a table.
- **Solution**: [Insert SQL query and explanation]
2. **Joins**:
- **Problem 2**: Perform a join between two tables.
- **Solution**: [Insert SQL query and explanation]
3. **Subqueries**:
- **Problem 3**: Use subqueries to filter results.
- **Solution**: [Insert SQL query and explanation]
4. **Aggregation**:
- **Problem 4**: Aggregate data using GROUP BY.
- **Solution**: [Insert SQL query and explanation]
### Advanced Problems:
- [Insert additional problems and solutions here]
## Conclusion
Practice these problems to improve your SQL proficiency.
# Work Requirements for Task II
## Introduction
Outline of the requirements for Task II.
## Task Details
1. **Objective**:
- **Description**: Clear statement of the task's objective.
- **Expected Outcome**: Define what is expected upon completion.
2. **Requirements**:
- **Technical Specifications**: Hardware, software requirements.
- **Steps to Complete**: Detailed instructions.
### Example:
- [Insert example scenario and step-by-step guide]
## Conclusion
Follow the guidelines to successfully complete Task II.
Absolutely! Here's a refined version of the Arduino Project Guide, incorporating formatting improvements and a few additional details:
## Arduino Project Guide: From Beginner to Maker
### Introduction
This guide is your stepping stone into the exciting world of Arduino projects. We'll cover the essential setup, guide you through foundational projects to build your confidence, and then delve into more advanced challenges. Whether you're a novice or have some experience, you'll find valuable information here.
### Step-by-Step Instructions
**Setup and Installation**
1. **Install Arduino IDE:**
* Download the Arduino IDE from the official website: [https://www.arduino.cc/en/software](https://www.arduino.cc/en/software)
* Follow the instructions for your operating system (Windows, macOS, Linux) to complete the installation.
2. **Connect Arduino Board:**
* Use a USB cable to connect your Arduino board (e.g., Uno, Nano, Mega) to your computer.
* The Arduino IDE should automatically detect the board.
**Basic Projects**
**1. Blink LED**
* **Components:**
* Arduino board
* LED (any color)
* 220-ohm resistor
* Jumper wires
* **Code:**
```c++
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // Set the built-in LED pin as output
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // Turn the LED on
delay(1000); // Wait for a second
digitalWrite(LED_BUILTIN, LOW); // Turn the LED off
delay(1000); // Wait for a second
}
-
Explanation: This code repeatedly turns the LED on for one second, then off for one second. The
LED_BUILTIN
constant refers to a pin on the Arduino board that has a built-in LED.
2. Temperature Sensor (LM35)
-
Components:
- Arduino board
- LM35 temperature sensor
- Jumper wires
-
Code:
int sensorPin = A0; // Connect LM35 to analog pin A0
void setup() {
Serial.begin(9600); // Initialize serial communication
}
void loop() {
int reading = analogRead(sensorPin);
float voltage = reading * 5.0 / 1023.0;
float temperatureC = (voltage - 0.5) * 100.0;
Serial.println(temperatureC);
delay(1000); // Read every second
}
- Explanation: The LM35 sensor produces an analog voltage proportional to the temperature. The code reads this voltage, converts it to Celsius, and prints it to the serial monitor.
Advanced Projects
- Home Automation: Control lights, appliances, and more using your Arduino. You'll need relays, sensors, and possibly a Wi-Fi module.
- Robotics: Build simple or complex robots that move, sense their environment, and interact with it.
- Data Logging: Use sensors to collect data and store it on an SD card or send it to a cloud service.
Troubleshooting Tips
-
Board Not Responding:
- Check your USB connection.
- Ensure you've selected the correct board and port in the Arduino IDE.
- Try pressing the reset button on the board.
-
Incorrect Wiring:
- Double-check your circuit connections against the project diagram.
- Make sure components are oriented correctly.
-
Code Errors:
- Read the error messages carefully.
- Look for typos or missing semicolons.
Conclusion
This guide is just the beginning of your Arduino journey. Explore online resources, project tutorials, and forums to discover the endless possibilities Arduino offers!
Let me know if you'd like more detailed instructions for any of these projects or want to explore specific advanced projects!
Comprehensive guide to getting started with Arduino projects.
-
Setup and Installation:
- Install Arduino IDE: Instructions for different platforms.
- Connect Arduino Board: Detailed setup process.
-
Basic Projects:
- Blink LED: Step-by-step guide to your first project.
- Temperature Sensor: Reading data from a sensor.
-
Advanced Projects:
- Home Automation: Control devices using Arduino.
- Robotics: Build and program a simple robot.
- [Insert sample Arduino code here]
- Common issues and solutions.
Use this guide to explore and create various Arduino projects.
These improvements should enhance the readability, clarity, and utility of the documents. You can explore the repository for more details [here](https://github.com/larsenjr/larsenjr.github.io/tree/master/fsi2).
### Analysis and Comments
The script `TP-GUI.py` is a Python GUI application that interacts with a MySQL database to manage warehouse data. It uses the `tkinter` library for the GUI and `mysql.connector` for database operations.
**Key Features:**
1. **User Authentication:** Prompts for database credentials.
2. **Class Definitions:** Models for `Vare`, `Ordre`, `Ordredetaljer`, and `Visallekunder`.
3. **Input Validation:** Functions to validate user inputs for names, addresses, and numeric fields.
4. **Database Operations:** Functions to list inventory, orders, order details, and customers. It also includes a placeholder for generating invoices.
5. **GUI Components:** Functions to update the GUI based on database queries.
### Improvements
**General Improvements:**
1. **Modularization:** Split the code into multiple modules (e.g., `gui.py`, `database.py`, `models.py`) for better maintainability.
2. **Error Handling:** Improve error handling to catch and display database errors.
3. **Comments and Documentation:** Add more comments and docstrings for better understanding.
**Improved Code Example:**
**database.py**
```python
import mysql.connector
from mysql.connector import Error
def create_connection(user, password, host, database, port):
try:
connection = mysql.connector.connect(
user=user,
password=password,
host=host,
database=database,
port=port
)
if connection.is_connected():
return connection
except Error as e:
print(f"Error connecting to MySQL: {e}")
return None
models.py
class Vare:
def __init__(self, varenummer, navn, antall, pris):
self.varenummer = varenummer
self.navn = navn
self.antall = antall
self.pris = pris
def __str__(self):
return f"{self.varenummer} - {self.navn} - {self.antall} - {self.pris}"
# Additional classes for Ordre, Ordredetaljer, and Visallekunder
gui.py
import tkinter as tk
from tkinter import ttk, messagebox
from database import create_connection
from models import Vare
def prompt_for_credentials():
dialog = tk.Tk()
dialog.title("Database innlogging")
dialog.geometry("300x200")
# Fields for user inputs...
def on_ok():
global db_user, db_password, db_host, db_name, db_port
# Fetch values from the entries...
dialog.destroy()
tk.Button(dialog, text="Ok", command=on_ok).pack()
tk.Button(dialog, text="Avbryt", command=dialog.destroy).pack()
dialog.mainloop()
def list_varelager(connection):
cursor = connection.cursor()
cursor.callproc('VisVarelager')
varer = []
for result in cursor.stored_results():
for row in result.fetchall():
varer.append(Vare(*row))
return varer
def update_output_varelager():
data = list_varelager(conn)
output_field.delete('1.0', tk.END)
for item in data:
output_field.insert(tk.END, str(item) + "\n")
# Additional functions for other database operations...
if __name__ == "__main__":
prompt_for_credentials()
conn = create_connection(db_user, db_password, db_host, db_name, db_port)
if conn:
root = tk.Tk()
# GUI setup and mainloop...
The TP-GUI.py
script provides a GUI for managing warehouse data using a MySQL database. The improvements suggested include better modularization, enhanced error handling, and more comments for readability. For more details, refer to the repository.
Original Code Analysis:
The hash-comparator.py
script reads a file and its corresponding hash to verify if the file's content has changed. It uses Python's hashlib
library for SHA256 hashing and standard file I/O for reading files.
import hashlib
import sys
def read_file(file_path):
try:
with open(file_path, 'rb') as file:
return file.read()
except IOError as e:
print(f"Error reading file {file_path}: {e}")
sys.exit(1)
def compare_hashes(file_path, hash_file_path):
file_content = read_file(file_path)
with open(hash_file_path, 'r') as hash_file:
stored_hash = hash_file.read().strip()
file_hash = hashlib.sha256(file_content).hexdigest()
if file_hash == stored_hash:
print("The file has not been changed.")
else:
print("The file has been changed.")
if __name__ == "__main__":
if len(sys.argv) != 3:
print("Usage: python hash-comparator.py <file_path> <hash_file_path>")
sys.exit(1)
compare_hashes(sys.argv[1], sys.argv[2])
- Error Handling: Improve error messages and separate reading file errors.
- Code Readability: Add comments for better understanding.
- Efficiency: Ensure consistent error handling.
import hashlib
import sys
def read_file(file_path):
"""
Reads the contents of a file in binary mode.
"""
try:
with open(file_path, 'rb') as file:
return file.read()
except IOError as e:
print(f"Error reading file {file_path}: {e}")
sys.exit(1)
def read_hash(hash_file_path):
"""
Reads the stored hash from the hash file.
"""
try:
with open(hash_file_path, 'r') as hash_file:
return hash_file.read().strip()
except IOError as e:
print(f"Error reading hash file {hash_file_path}: {e}")
sys.exit(1)
def compare_hashes(file_path, hash_file_path):
"""
Compares the hash of a file to a stored hash.
"""
file_content = read_file(file_path)
stored_hash = read_hash(hash_file_path)
file_hash = hashlib.sha256(file_content).hexdigest()
if file_hash == stored_hash:
print("The file has not been changed.")
else:
print("The file has been changed.")
if __name__ == "__main__":
if len(sys.argv) != 3:
print("Usage: python hash-comparator.py <file_path> <hash_file_path>")
sys.exit(1)
compare_hashes(sys.argv[1], sys.argv[2])
This improved version enhances readability with comments, separates concerns by adding a read_hash
function, and ensures consistent error handling. This makes the script more maintainable and understandable. For more details, you can check the original script here.
Original Code Analysis:
The hash-generator3.py
script generates a SHA256 hash for a given file and saves the hash to a new file. It uses Python's hashlib
library for hashing and standard file I/O for reading and writing files.
import hashlib
import sys
def generate_hash(file_path):
try:
with open(file_path, 'rb') as file:
file_content = file.read()
file_hash = hashlib.sha256(file_content).hexdigest()
with open(f"{file_path}.sha256", 'w') as hash_file:
hash_file.write(file_hash)
print(f"Hash for {file_path} generated and saved as {file_path}.sha256")
except IOError as e:
print(f"Error: {e}")
sys.exit(1)
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python hash-generator3.py <file_path>")
sys.exit(1)
generate_hash(sys.argv[1])
- Error Handling: Separate reading and writing errors.
- Code Readability: Add comments and improve print statements for clarity.
- Modularization: Create separate functions for reading file content and writing the hash file.
import hashlib
import sys
def read_file(file_path):
"""
Reads the contents of a file in binary mode.
"""
try:
with open(file_path, 'rb') as file:
return file.read()
except IOError as e:
print(f"Error reading file {file_path}: {e}")
sys.exit(1)
def write_hash(file_path, file_hash):
"""
Writes the hash to a file.
"""
try:
with open(f"{file_path}.sha256", 'w') as hash_file:
hash_file.write(file_hash)
print(f"Hash for {file_path} generated and saved as {file_path}.sha256")
except IOError as e:
print(f"Error writing hash file for {file_path}: {e}")
sys.exit(1)
def generate_hash(file_path):
"""
Generates a SHA256 hash for the given file and saves it.
"""
file_content = read_file(file_path)
file_hash = hashlib.sha256(file_content).hexdigest()
write_hash(file_path, file_hash)
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python hash-generator3.py <file_path>")
sys.exit(1)
generate_hash(sys.argv[1])
This improved version enhances readability with comments, separates concerns by creating dedicated functions for reading and writing files, and ensures consistent error handling. This makes the script more maintainable and understandable. For more details, you can check the original script here.
Original Text:
Basert på en gjennomgang av veilederen på https://choosealicense.com/ endte jeg opp med MIT lisensen.
MIT lisensen tillater at hvem som helst kan bruke den, både til privat og kommersielt bruk. Programmene jeg har produsert kan distribueres og modifiseres fritt
slik at det kan tilpasses spesifikke behov, bruksområdet eller situasjoner.
Lisensen krever at lisensen og et notat om opphavsrett skal følge det lisensierte materialet.
Ved å bruke denne lisensen er jeg sikret mot å være ansvarlig for hva programmet eventuelt forårsaker, og at jeg ikke kan holdes ansvarlig hvis programmet ikke fungerer som det skal.
Informasjonen om hva lisensen dekker og ikke dekker fant jeg på https://choosealicense.com/licenses/mit/.
Improved Text:
# Why This License?
Based on a review of the guide at [choosealicense.com](https://choosealicense.com/), I chose the MIT License.
The MIT License allows anyone to use the software for private or commercial purposes. The programs I have produced can be freely distributed and modified to meet specific needs or usage scenarios. The license requires that it and a copyright notice accompany the licensed material.
By using this license, I am protected from liability for any issues the software may cause, and I cannot be held responsible if the program does not work as intended.
More information about the license can be found [here](https://choosealicense.com/licenses/mit/).
- Language and Clarity: Improved the clarity and flow of the text.
- Links: Ensured proper linking to resources.
- Format: Used proper markdown formatting for the title and links.
The document outlines how to set up an Active Directory (AD) hierarchy for a company. It includes instructions for creating Organizational Units (OUs) for different departments, group nesting using the IGDLA principle, and setting up user home directories with appropriate permissions.
- Detailed Instructions: Expand each step with more detailed instructions.
- Examples and Diagrams: Include visual aids and specific examples to illustrate the setup process.
- Formatting: Use bullet points and numbered lists for clarity.
- Error Handling: Add common troubleshooting tips and best practices.
# AD Hierarchy Setup (Part 1)
## Task 1: Setting Up the Domain with OUs for Simplified Administration
### Step-by-Step Instructions
1. **Create the Domain**:
- **Domain Name**: `HamarFotballGulvAS.local`
2. **Organizational Units (OUs)**:
- **Top-Level OU**: `HamarFotballGulvAS`
- **Department OUs**:
- `Administration`
- `Ham-Kam`
- `Warehouse`
- `Carpenters`
- `Support Staff`
- **Computer OUs**: Separate OUs for laptops and desktops within each department.
### Example Hierarchy:
- **Diagram**: [Insert high-quality image]
## Task 2: Group Nesting with IGDLA Principle
1. **Create Groups**: Define groups based on roles and access levels.
2. **Assign Permissions**: Ensure proper access controls using IGDLA (Identities, Global Groups, Domain Local Groups, Access).
3. **Diagram**: [Insert example diagram]
## Task 3: User Home Directories
1. **Create Home Directories**: Set up user-specific directories.
2. **Set Permissions**: Configure permissions for security and accessibility.
### Commands:
- [Insert detailed PowerShell or CLI commands here]
## Conclusion
Ensure consistency and accuracy in the setup process.
For more details, you can visit the original document here.
The document outlines advanced tasks for setting up and maintaining an Active Directory (AD) hierarchy. It includes instructions for creating advanced group policies (GPOs), monitoring AD health, and implementing backup and recovery procedures.
- Detailed Instructions: Provide more detailed steps for each task.
- Examples and Diagrams: Include practical examples and diagrams to illustrate concepts.
- Formatting: Use bullet points and numbered lists for better readability.
- Best Practices: Add common best practices and troubleshooting tips.
# AD Hierarchy Setup (Part 2)
## Task 4: Advanced Group Policies
### Step-by-Step Instructions
1. **Create Group Policies**: Define and implement GPOs for security and management.
- **Example Policies**: Password policies, software restrictions.
2. **Apply GPOs**: Assign GPOs to specific OUs and groups.
- **Commands**: [Insert PowerShell commands]
### Examples:
- **Security Policies**: [Insert detailed examples]
- **Management Policies**: [Insert detailed examples]
## Task 5: Monitoring and Maintenance
1. **Monitor AD Health**: Regular checks using tools like `dcdiag` and `repadmin`.
2. **Backup and Recovery**: Implement regular backups and recovery procedures.
- **Tools**: [Insert tools and commands]
## Conclusion
Maintain the AD setup through continuous monitoring and updates.
For more details, you can visit the original document here.
The document provides a guide for configuring VPN using IPSEC, including initial setup, defining VPN settings, setting up authentication, and testing/troubleshooting.
- Detailed Instructions: Add more specific configuration steps with examples.
- Screenshots/Diagrams: Include visual aids for each step.
- Formatting: Use bullet points and numbered lists for clarity.
- Security Best Practices: Highlight important security considerations.
# Configuring VPN with IPSEC
## Introduction
Guide to setting up a secure VPN using IPSEC.
## Step-by-Step Instructions
1. **Initial Setup**:
- **Install Necessary Packages**: Ensure IPSEC and VPN packages are installed.
- **Configuration Files**: Edit configuration files for IPSEC.
2. **VPN Configuration**:
- **Define VPN Settings**: IP ranges, encryption methods, etc.
- **Set Up Authentication**: Use secure methods like certificates or pre-shared keys.
3. **Testing and Troubleshooting**:
- **Test the Connection**: Ensure the VPN is working correctly.
- **Troubleshoot Issues**: Common issues and solutions.
## Security Best Practices
- Regularly update software.
- Use strong encryption methods.
- Monitor VPN usage.
### Example Configuration:
- [Insert sample configuration file here]
## Conclusion
Ensure the VPN setup is secure and functional.
For more details, you can visit the original document here.
The document provides a guide for configuring VPN using IPSEC, including initial setup, defining VPN settings, setting up authentication, and testing/troubleshooting.
- Detailed Instructions: Add more specific configuration steps with examples.
- Screenshots/Diagrams: Include visual aids for each step.
- Formatting: Use bullet points and numbered lists for clarity.
- Security Best Practices: Highlight important security considerations.
# Configuring VPN with IPSEC
## Introduction
Guide to setting up a secure VPN using IPSEC.
## Step-by-Step Instructions
1. **Initial Setup**:
- **Install Necessary Packages**: Ensure IPSEC and VPN packages are installed.
- **Configuration Files**: Edit configuration files for IPSEC.
2. **VPN Configuration**:
- **Define VPN Settings**: IP ranges, encryption methods, etc.
- **Set Up Authentication**: Use secure methods like certificates or pre-shared keys.
3. **Testing and Troubleshooting**:
- **Test the Connection**: Ensure the VPN is working correctly.
- **Troubleshoot Issues**: Common issues and solutions.
## Security Best Practices
- Regularly update software.
- Use strong encryption methods.
- Monitor VPN usage.
### Example Configuration:
- [Insert sample configuration file here]
## Conclusion
Ensure the VPN setup is secure and functional.
For more details, you can visit the original document here.
The document provides a guide for configuring VPN using IPSEC, including initial setup, defining VPN settings, setting up authentication, and testing/troubleshooting.
- Detailed Instructions: Add more specific configuration steps with examples.
- Screenshots/Diagrams: Include visual aids for each step.
- Formatting: Use bullet points and numbered lists for clarity.
- Security Best Practices: Highlight important security considerations.
# Configuring VPN with IPSEC
## Introduction
Guide to setting up a secure VPN using IPSEC.
## Step-by-Step Instructions
1. **Initial Setup**:
- **Install Necessary Packages**: Ensure IPSEC and VPN packages are installed.
- **Configuration Files**: Edit configuration files for IPSEC.
2. **VPN Configuration**:
- **Define VPN Settings**: IP ranges, encryption methods, etc.
- **Set Up Authentication**: Use secure methods like certificates or pre-shared keys.
3. **Testing and Troubleshooting**:
- **Test the Connection**: Ensure the VPN is working correctly.
- **Troubleshoot Issues**: Common issues and solutions.
## Security Best Practices
- Regularly update software.
- Use strong encryption methods.
- Monitor VPN usage.
### Example Configuration:
- [Insert sample configuration file here]
## Conclusion
Ensure the VPN setup is secure and functional.
For more details, you can visit the original document here.
The document provides a comprehensive guide for using MySQL, covering installation, basic commands, advanced features, and security practices.
- Detailed Examples: Add more detailed examples for each command.
- Screenshots/Diagrams: Include visual aids for better understanding.
- Formatting: Use bullet points and numbered lists for better readability.
- Best Practices: Highlight important security and optimization tips.
# MySQL Guide
## Introduction
Comprehensive guide for using MySQL effectively.
## Step-by-Step Instructions
1. **Installation and Setup**:
- **Install MySQL**: Follow platform-specific instructions.
- **Initial Configuration**: Set up root user and secure the installation.
2. **Basic Commands**:
- **Creating Databases and Tables**: Syntax and examples.
- **Inserting, Updating, Deleting Data**: Basic CRUD operations.
3. **Advanced Features**:
- **Indexes and Optimization**: Improve query performance.
- **Stored Procedures and Triggers**: Enhance database functionality.
4. **Security Practices**:
- **User Permissions**: Grant and revoke permissions.
- **Data Encryption**: Secure sensitive data.
### Example Commands:
- [Insert sample commands and scripts here]
## Conclusion
Follow best practices for efficient and secure MySQL usage.
For more details, you can visit the original document here.
The document provides a guide on using Group Policy Objects (GPO) with PowerShell, including creating, modifying, and managing GPOs through scripting.
- Detailed Examples: Add more detailed PowerShell script examples.
- Screenshots/Diagrams: Include visual aids to illustrate steps.
- Formatting: Use bullet points and numbered lists for better readability.
- Best Practices: Highlight important tips for effective GPO management.
# Using GPO with PowerShell
## Introduction
Guide to managing Group Policy Objects (GPO) using PowerShell.
## Step-by-Step Instructions
1. **Creating GPOs with PowerShell**:
- **Create a New GPO**: Command and example.
- **Link GPO to OU**: Command and example.
2. **Modifying GPOs**:
- **Edit GPO Settings**: Commands for common settings.
- **Backup and Restore GPOs**: Ensure GPOs can be restored if needed.
### Example Scripts:
- [Insert sample PowerShell scripts here]
## Conclusion
Use PowerShell to streamline GPO management and enhance productivity.
For more details, you can visit the original document here.
The document explains the OSI model and its seven layers, detailing their functions and importance in networking.
- Detailed Explanations: Add more in-depth descriptions for each layer.
- Visual Aids: Include diagrams to visually represent the OSI model.
- Real-World Examples: Provide practical examples to illustrate how each layer is used.
- Formatting: Use bullet points and numbered lists for clarity.
# The OSI Model
## Introduction
Overview of the OSI model and its layers.
## Detailed Explanation of Each Layer
1. **Physical Layer**:
- **Description**: Hardware and physical connections.
- **Examples**: Cables, switches.
2. **Data Link Layer**:
- **Description**: Node-to-node data transfer.
- **Examples**: MAC addresses, switches.
3. **Network Layer**:
- **Description**: Routing and forwarding.
- **Examples**: IP addresses, routers.
4. **Transport Layer**:
- **Description**: End-to-end communication.
- **Examples**: TCP, UDP.
5. **Session Layer**:
- **Description**: Session management.
- **Examples**: APIs, sockets.
6. **Presentation Layer**:
- **Description**: Data translation.
- **Examples**: Encryption, compression.
7. **Application Layer**:
- **Description**: Network services.
- **Examples**: HTTP, FTP.
### Diagrams and Real-World Examples:
- [Insert diagrams and examples here]
## Conclusion
Understanding the OSI model is crucial for networking.
For more details, you can visit the original document here.
The document provides a set of SQL practice problems aimed at improving SQL skills, including basic queries, joins, subqueries, and data aggregation.
- Detailed Solutions: Provide detailed explanations for each SQL query solution.
- Real-World Examples: Include practical scenarios where these queries would be used.
- Formatting: Use bullet points and numbered lists to organize problems and solutions clearly.
- Additional Problems: Add more advanced SQL problems for further practice.
# SQL Practice Problems
## Introduction
Collection of SQL practice problems to enhance your skills.
## Problems and Solutions
1. **Basic Queries**:
- **Problem 1**: Select data from a table.
- **Solution**:
```sql
SELECT * FROM table_name;
```
Explanation: This query selects all columns from `table_name`.
2. **Joins**:
- **Problem 2**: Perform a join between two tables.
- **Solution**:
```sql
SELECT a.column1, b.column2
FROM table1 a
JOIN table2 b ON a.common_column = b.common_column;
```
Explanation: This query joins `table1` and `table2` on a common column.
3. **Subqueries**:
- **Problem 3**: Use subqueries to filter results.
- **Solution**:
```sql
SELECT column1
FROM table1
WHERE column2 IN (SELECT column2 FROM table2 WHERE condition);
```
Explanation: This query uses a subquery to filter results from `table1`.
4. **Aggregation**:
- **Problem 4**: Aggregate data using GROUP BY.
- **Solution**:
```sql
SELECT column1, COUNT(*)
FROM table_name
GROUP BY column1;
```
Explanation: This query groups data by `column1` and counts the occurrences.
### Advanced Problems:
- [Insert additional problems and solutions here]
## Conclusion
Practice these problems to improve your SQL proficiency.
For more details, you can visit the original document here.
# Work Requirements for Task II
## Introduction
This document outlines the requirements and steps for successfully completing Task II.
## Task Details
### Objective
- **Description**: Clearly state the objective of Task II.
- **Expected Outcome**: Define the expected results upon completion of the task.
### Requirements
- **Technical Specifications**:
- **Hardware**: List necessary hardware components.
- **Software**: List required software and versions.
### Steps to Complete
1. **Initial Setup**:
- Install necessary software.
- Configure initial settings.
2. **Task Execution**:
- **Step 1**: Detailed instructions for the first step.
- **Step 2**: Detailed instructions for the second step.
- Continue with all necessary steps.
### Example
- **Scenario**: Provide a practical example with step-by-step guidance.
### Best Practices
- Follow coding standards.
- Ensure proper documentation.
## Conclusion
Adhere to the guidelines and steps provided to complete Task II successfully.
---
### Example Content
#### Objective
The objective of this task is to set up a new web server for hosting company applications.
#### Requirements
- **Hardware**:
- Server with at least 16GB RAM and 500GB storage.
- **Software**:
- Ubuntu Server 20.04 LTS
- Apache 2.4
- MySQL 8.0
- PHP 7.4
#### Steps to Complete
1. **Initial Setup**:
- Install Ubuntu Server 20.04 LTS on the server hardware.
- Configure network settings and update the system.
2. **Task Execution**:
- **Step 1**: Install Apache 2.4
```bash
sudo apt update
sudo apt install apache2
```
- **Step 2**: Install MySQL 8.0
```bash
sudo apt install mysql-server
```
- **Step 3**: Install PHP 7.4
```bash
sudo apt install php libapache2-mod-php php-mysql
```
3. **Configure Apache**:
- Set up virtual hosts for the company applications.
- Ensure proper permissions and security settings.
#### Example Scenario
- Setting up a virtual host for the company application `example.com`.
```bash
sudo nano /etc/apache2/sites-available/example.com.conf
Add the following configuration:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/html/example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Enable the new virtual host:
sudo a2ensite example.com.conf
sudo systemctl reload apache2
- Follow coding standards to ensure maintainability.
- Document all configurations and changes made to the system.
By following the provided guidelines and steps, you will be able to set up the web server and host company applications successfully.
For more details, you can view the original document here.
This document outlines the requirements and steps for completing Task II.
- Description: Clearly state the task's objective.
- Expected Outcome: Define the expected results upon task completion.
-
Technical Specifications:
- Hardware: Necessary components.
- Software: Required software and versions.
-
Initial Setup:
- Install necessary software.
- Configure initial settings.
-
Task Execution:
- Detailed steps for execution with examples.
- Scenario: Practical example with step-by-step guidance.
- Follow coding standards.
- Ensure proper documentation.
Adhere to guidelines and steps to successfully complete Task II.
For more details, view the original document here.
Dette ser ut som en kombinasjon av nettverksdesign og feilsøkingsspørsmål, muligens inspirert av en CCNA-lignende eksamen eller øvelse. La oss gå gjennom hvert punkt:
1. Planlegging av nettverk
- Offentlig nett: Dette er den delen av nettverket som er eksponert mot internett. Her vil typisk servere som skal være tilgjengelige utenfra (f.eks., webservere) befinne seg.
- Private nett bak NAT (Salg/Forskning): Disse er interne nettverk som er skjult bak en NAT-ruter (Network Address Translation). Dette gir økt sikkerhet ved å skjule de interne IP-adressene.
-
Enhetsnavn, interfacenavn og IP-adresse:
- Enhetsnavn: Et beskrivende navn for hver enhet (f.eks., "Router5", "Switch2").
- Interfacenavn: Identifikatorer for de ulike portene på en enhet (f.eks., "GigabitEthernet0/0").
- IP-adresse: En unik adresse som identifiserer hver enhet på nettverket.
- DHCP: Dynamic Host Configuration Protocol. En tjeneste som automatisk tildeler IP-adresser, nettverksmasker, gatewayer og andre nettverksinnstillinger til enheter.
2. NAT (Network Address Translation)
NAT oversetter private IP-adresser til en offentlig IP-adresse. Dette gjør det mulig for enheter på et privat nettverk å kommunisere med internett.
3. DHCP (Dynamic Host Configuration Protocol)
DHCP automatiserer tildelingen av IP-adresser og andre nettverkskonfigurasjoner, noe som reduserer behovet for manuell konfigurasjon og forenkler nettverksadministrasjon.
5. EIGRP-avstand
EIGRP (Enhanced Interior Gateway Routing Protocol) bruker en metrisk for å beregne avstanden til et nettverk. Denne metrikken er basert på båndbredde, forsinkelse, pålitelighet og belastning. For å finne avstanden fra ruter 5 til det offentlige servernettet, må du se på EIGRP-topologien og beregne metrikken basert på koblingene mellom ruterne.
6. STP (Spanning Tree Protocol)
STP forhindrer løkker i switchede nettverk. Den gjør dette ved å blokkere redundante koblinger, og dermed skape et loopfritt tre.
7. NAT-sikkerhet
NAT gir en viss grad av sikkerhet ved å skjule de interne IP-adressene fra det offentlige nettverket. Dette gjør det vanskeligere for angripere å direkte målrette enheter på det private nettverket.
8. VLAN-fordeler
VLAN (Virtual Local Area Network) deler opp et fysisk nettverk i flere logiske nettverk. Dette gir flere fordeler:
- Økt sikkerhet: Trafikk mellom VLANer må rutes, noe som gir mulighet for å implementere tilgangskontroll.
- Bedre ytelse: Ved å segmentere trafikk kan man redusere unødvendig kringkastingstrafikk og dermed forbedre nettverksytelsen.
- Enklere administrasjon: VLANer gjør det enklere å administrere nettverket ved å gruppere enheter basert på funksjon eller avdeling.
9. & 10. Pakkevei og verifisering
For å finne ut hvilken vei en pakke tar, kan du bruke kommandoer som traceroute
(fra klienten) og show ip route
eller debug ip packet
(fra ruteren). Disse kommandoene vil vise deg hvilke rutere pakken passerer gjennom på vei til målet.
11. IP-adressering i OSI-modellen
IP-adressering finner vi på nettverkslaget (lag 3) i OSI-modellen.
12. Encapsulation
Encapsulation er prosessen der data pakkes inn i flere lag med protokollinformasjon før de sendes over nettverket. Hvert lag legger til sin egen header, som inneholder informasjon som er relevant for det aktuelle laget.
13. & 14. Tilgangskontroll
For å kontrollere tilgangen mellom VLANer og nettverk, kan du bruke tilgangskontrollister (ACL) på ruterne. ACLer er regler som definerer hvilken trafikk som skal tillates eller blokkeres basert på kriterier som kilde- og destinasjons-IP-adresse, portnummer og protokoll.
Eksempel på ACL for å tillate ping fra VLAN salg til Public nett:
access-list 101 permit icmp any 192.168.10.0 0.0.0.255
Eksempel på ACL for å tillate HTTP og FTP fra VLAN forskning til VLAN salg:
access-list 102 permit tcp 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255 eq 80
access-list 102 permit tcp 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255 eq 21
Gi meg beskjed hvis du vil ha mer detaljerte forklaringer eller eksempler på noen av punktene!
LAN | Enhet | NettID | VLAN | Antall brukere | Subnett | CIDR | Wildcard | 1.brukbare adresse | Siste brukbare | Broadcast | Antall tilgjengelige hosts |
---|---|---|---|---|---|---|---|---|---|---|---|
#1 | Switch1 | 10.0.0.0 | 90 FORSKNING | 87 | 255.255.255.128 | /25 | 0.0.0.127 | 10.0.0.1 | 10.0.0.126 | 10.0.0.127 | 126 |
#2 | Switch0 | 10.0.0.128 | 80 SALG | 80 | 255.255.255.128 | /25 | 0.0.0.127 | 10.0.0.129 | 10.0.0.254 | 10.0.0.255 | 126 |
#3 | Router4 - Switch4 | 220.82.12.0 | Public nett | 28 | 255.255.255.224 | /27 | 0.0.0.31 | 220.82.12.1 | 220.82.12.30 | 220.82.12.31 | 30 |
#4 | Router5 - Router0 | 220.82.12.32 | - | 2 | 255.255.255.252 | /30 | 0.0.0.3 | 220.82.12.33 | 220.82.12.34 | 220.82.12.35 | 2 |
#5 | Router 0 - Router2 | 220.82.12.36 | - | 2 | 255.255.255.252 | /30 | 0.0.0.3 | 220.82.12.37 | 220.82.12.38 | 220.82.12.39 | 2 |
#6 | Router0-Router2 | 220.82.12.40 | - | 2 | 255.255.255.252 | /30 | 0.0.0.3 | 220.82.12.41 | 220.82.12.42 | 220.82.12.43 | 2 |
#7 | Router2 - Router3 | 220.82.12.44 | - | 2 | 255.255.255.252 | /30 | 0.0.0.3 | 220.82.12.45 | 220.82.12.46 | 220.82.12.47 | 2 |
#8 | Router3-Router1 | 220.82.12.48 | - | 2 | 255.255.255.252 | /30 | 0.0.0.3 | 220.82.12.49 | 220.82.12.50 | 220.82.12.51 | 2 |
#9 | Router1 - Router4 | 220.82.12.52 | - | 2 | 255.255.255.252 | /30 | 0.0.0.3 | 220.82.12.53 | 220.82.12.54 | 220.82.12.55 | 2 |
Interface | IP-adresse |
---|---|
Router5 | |
FastEthernet 0/0.80 | 10.0.0.1 |
FastEthernet 0/0.90 | 10.0.0.129 |
FastEthernet 0/1 | 220.82.12.33 |
Router0 | |
FastEthernet 0/0 | 220.82.12.34 |
FastEthernet 0/1 | 220.82.12.41 |
Serial 1/0 | 220.82.12.37 |
Router2 | |
FastEthernet 0/0 | 220.82.12.42 |
FastEthernet 0/1 | 220.82.12.45 |
Router3 | |
FastEthernet 0/0 | 220.82.12.46 |
FastEthernet 0/1 | 220.82.12.49 |
Router1 | |
FastEthernet 0/0 | 220.82.12.50 |
FastEthernet 0/1 | 220.82.12.53 |
Serial 1/0 | 220.82.12.38 |
Router4 | |
FastEthernet 0/0 | 220.82.12.54 |
FastEthernet 0/1 | 220.82.12.1 |
Switch4 | |
FTP-server | 220.82.12.2 |
Web-server | 220.82.12.3 |
DNS-server | 220.82.12.4 |
Router 5 er konfigurert med NAT overload (PAT) for å oversette private IP-adresser (10.0.0.0/25) til den offentlige IP-adressen 220.82.12.33. FORSKNINGS-VLAN (10.0.0.0/25) er ekskludert fra NAT, slik at disse enhetene ikke har tilgang til det offentlige internettet. NAT overload gjør det mulig for flere enheter å dele én offentlig IP-adresse, noe som sparer offentlige IP-adresser og gir et ekstra lag med sikkerhet ved å skjule de interne IP-adressene.
DHCP er konfigurert på Router 5 for å tildele IP-adresser til enheter i VLAN SALG (10.0.0.128/25) og VLAN FORSKNING (10.0.0.0/25). Subinterfaces er brukt for å skille DHCP-konfigurasjonen for hvert VLAN. IP-adresser som er tildelt routerne og andre enheter som ikke skal motta DHCP-adresser er ekskludert. DNS-serveren er satt til 10.0.0.2 for VLAN FORSKNING og til den offentlige DNS-serveren (220.82.12.4) for VLAN SALG.
EIGRP er konfigurert på alle routerne. Ved å bruke kommandoen show ip route eigrp
på Router 5, ser vi at avstanden (metric) til public-server nettet (220.82.12.0/24) er 40960. EIGRP beregner denne avstanden basert på båndbredde og forsinkelse på lenkene mellom Router 5 og public-server nettet.
Spanning Tree Protocol (STP) er aktivert i det switchede nettverket til venstre for å forhindre loop i nettverket. STP velger en rotbro (root bridge) og blokkerer overflødige porter for å skape et loopfritt tre. Dette sikrer at datapakker ikke sirkulerer uendelig i nettverket, noe som kan føre til redusert ytelse og ustabilitet. STP gir også feiltoleranse ved å aktivere blokkerte porter hvis en aktiv port feiler.
NAT-oppsettet på Router 5 gir økt sikkerhet ved å skjule de interne IP-adressene for det offentlige internettet. NAT fungerer som en brannmur ved å blokkere uønsket innkommende trafikk som ikke er initiert fra innsiden av nettverket. Dette gjør det vanskeligere for eksterne angripere å få tilgang til enheter i det private nettverket.
VLAN-oppsettet gir flere fordeler:
- Fleksibilitet: Nettverket kan deles inn i logiske grupper (VLAN) uten å måtte endre den fysiske kablingen. Dette gjør det enklere å administrere og skalere nettverket.
- Sikkerhet: VLAN kan brukes til å isolere trafikk mellom ulike grupper av enheter, noe som øker sikkerheten ved å begrense tilgangen til sensitive ressurser.
- Ytelse: VLAN kan forbedre ytelsen ved å segmentere nettverkstrafikk og redusere unødvendig kringkasting. Dette kan føre til redusert trafikkbelastning og bedre responstid for applikasjoner.
For å verifisere pakkebanen fra VLAN SALG til public-server nettet, kan du bruke traceroute
fra en klient i VLAN SALG (f.eks., PC0) til en server i public-server nettet (f.eks., FTP-serveren med IP-adresse 220.82.12.2). Traceroute vil vise hver router som pakken passerer på vei til destinasjonen. Du kan også bruke show ip route
på routerne for å se rutingtabellen og bekrefte at pakken følger den forventede ruten.
IP-adressering finner vi på lag 3 (nettverkslaget) i OSI-modellen. IP-adresser brukes til å identifisere enheter på nettverket og rute pakker fra kilde til destinasjon. Hver IP-pakke inneholder kilde- og destinasjons-IP-adresser, som brukes av routere til å videresende pakken mot riktig destinasjon.
Encapsulation er prosessen med å legge til headere og trailere til data på hvert lag i OSI-modellen. Hver header inneholder informasjon som er nødvendig for at det tilsvarende laget skal behandle pakken riktig. For eksempel inneholder TCP-header informasjon om portnummer og sekvensnummer, mens IP-header inneholder kilde- og destinasjons-IP-adresser.
Access Control Lists (ACL) er implementert på Router 4 og Router 5 for å kontrollere trafikkflyten mellom VLANene.
Router 4:
Trafikktype | Kilde | Destinasjon | Tillatt/Blokkert |
---|---|---|---|
ICMP | 220.82.12.33 | 220.82.12.0/24 | Tillatt |
FTP | Alle | 220.82.12.0/24 | Tillatt |
HTTP | Alle | 220.82.12.0/24 | Tillatt |
DNS | Alle | 220.82.12.0/24 | Tillatt |
Router 5:
Trafikktype | Kilde | Destinasjon | Tillatt/Blokkert |
---|---|---|---|
FTP | 10.0.0.128/25 | 10.0.0.0/25 | Blokkert |
HTTP | 10.0.0.128/25 | 10.0.0.0/25 | Blokkert |
HTTPS | 10.0.0.128/25 | 10.0.0.0/25 | Blokkert |
Denne konfigurasjonen tillater enheter i VLAN SALG å få tilgang til servere i public-server nettet, mens enheter i VLAN FORSKNING kun kan få tilgang til HTTP- og FTP-servere i VLAN SALG. Trafikk i motsatt retning er blokkert for å øke sikkerheten.
This guide helps you get started with Arduino projects, covering setup, basic, and advanced projects.
- Install Arduino IDE: Download and install from the official website.
- Connect Arduino Board: Use a USB cable to connect the Arduino board to your computer.
-
Blink LED:
- Components: Arduino board, LED, resistor.
-
Code:
void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); }
- Explanation: This code makes the built-in LED blink with a 1-second interval.
-
Temperature Sensor:
- Components: Arduino board, temperature sensor (e.g., LM35), jumper wires.
-
Code:
int sensorPin = A0; void setup() { Serial.begin(9600); } void loop() { int sensorValue = analogRead(sensorPin); float voltage = sensorValue * (5.0 / 1023.0); float temperatureC = (voltage - 0.5) * 100; Serial.println(temperatureC); delay(1000); }
- Explanation: This code reads the temperature from the sensor and prints it to the serial monitor.
-
Home Automation:
- Components: Arduino board, relay module, sensors, actuators.
- Code: Link to detailed code
- Explanation: This project controls home appliances using the Arduino.
-
Robotics:
- Components: Arduino board, motors, motor driver, chassis.
- Code: Link to detailed code
- Explanation: This project builds and programs a simple robot.
- Common Issues: Unresponsive board, incorrect wiring.
- Solutions: Check connections, ensure proper power supply, re-upload code.
Use this guide to explore various Arduino projects, enhancing your skills in electronics and programming.
For more details, visit the original document here.
The repository FSI-18ITD
by Decicus on GitHub contains general documents and configurations related to Fagskolen Innlandet. It includes directories for communication, networking tasks, and programming guides such as MySQL and C# integration. Additional files include layouts, assets, a CNAME record, and configuration files.
To explore more, visit the repository here.
The index.md
file in the FSI-18ITD
repository provides an overview of a statistical project related to network communication. It includes sections on collecting and analyzing data, creating visualizations, and interpreting results. The document guides through various statistical methods and tools used to evaluate network performance and other related metrics.
For more details, you can view the original document here.
Innhold .task-list-item { list-style-type: none; } .task-list-item-checkbox { margin-left: -20px; vertical-align: middle; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe WPC', 'Segoe UI', 'Ubuntu', 'Droid Sans', sans-serif; font-size: 14px; line-height: 1.6; }
Arbeidskrav 2 (September 2019) - Nettverkskommunikasjon II - Alex Thomassen
- Innhold
- 1. Planlegging av nettverk
- 2. NAT
- 3. DHCP
- 5. Hvor lang avstand mener EIGRP det er fra router 5 til public-server nettet?
- 6. Hva er oppgaven til STP i det switchede nettverket til venstre
- 7. Hvilken sikkerhet gir NAT-oppsettet på router 5?
- 8. Hva slags fordeler gir VLAN-oppsettet her oss?
- 9. Hvilken vei tar en pakke fra VLAN salg til Public nett servere? Hvordan kan du verifisere dette fra klienten?
- 10. Beskriv hvordan du verifiserer det samme fra router 0.
- 11. På hvilket lag i OSI-modellen finner vi IP-adressering?
- 12. Forklar prinsippet med Encapsulation i forbindelse med nettverkskommunikasjon.
- 13. Enheter fra VLAN salg skal kunne pinge servere i Public nett. De andre routerene skal ikke kunne gjøre dette. Hvordan vil du løse det? Gjør og forklar.
- 14. Enheter i VLAN forskning skal kunne kjøre http og FTP mot server i VLAN salg, men ikke omvendt.
For å kunne sette opp serial-link mellom Router0 og Router1 (begge er 2811), må det legges til et ekstra nettverkskort på begge routerne som heter NM-4A/S
.
Nettverksnavn | Nett-ID | Broadcast | Nettmaske | CIDR | Antall hosts | Første adresse | Siste adresse | Notat |
---|---|---|---|---|---|---|---|---|
Offentlig Servernett | 220.82.12.0 | 220.82.12.31 | 255.255.255.224 | 27 | 30 | 220.82.12.1 | 220.82.12.30 | Server-nett med 28 enheter |
Offentlig R4-R1 | 220.82.12.32 | 220.82.12.35 | 255.255.255.252 | 30 | 2 | 220.82.12.33 | 220.82.12.34 | Router4-Router1 |
Offentlig R1-R3 | 220.82.12.36 | 220.82.12.39 | 255.255.255.252 | 30 | 2 | 220.82.12.37 | 220.82.12.38 | Router1-Router3 |
Offentlig R3-R2 | 220.82.12.40 | 220.82.12.43 | 255.255.255.252 | 30 | 2 | 220.82.12.41 | 220.82.12.42 | Router3-Router2 |
Offentlig R2-R0 | 220.82.12.44 | 220.82.12.47 | 255.255.255.252 | 30 | 2 | 220.82.12.45 | 220.82.12.46 | Router2-Router0 |
Offentlig R0-R5 | 220.82.12.48 | 220.82.12.51 | 255.255.255.252 | 30 | 2 | 220.82.12.49 | 220.82.12.50 | Router0-Router5 |
Offentlig R0-R1 | 220.82.12.52 | 220.82.12.55 | 255.255.255.252 | 30 | 2 | 220.82.12.53 | 220.82.12.54 | Router0-Router1 |
Nettverksnavn | Nett-ID | Broadcast | Nettmaske | CIDR | Antall hosts | Første adresse | Siste adresse | Notat |
---|---|---|---|---|---|---|---|---|
Privat Salg | 10.0.0.0 | 10.0.0.127 | 255.255.255.128 | 25 | 126 | 10.0.0.1 | 10.0.0.126 | VLAN Salg 80 |
Privat Forskning | 10.0.0.128 | 10.0.0.255 | 255.255.255.128 | 25 | 126 | 10.0.0.129 | 10.0.0.254 | VLAN Forskning 90 |
Enhets- og interfacenavn | IP-adresse | Nettmaske |
---|---|---|
Router4 FA0/1 | 220.82.12.1 | 255.255.255.224 |
FTP | 220.82.12.10 | 255.255.255.224 |
WEB | 220.82.12.20 | 255.255.255.224 |
DNS | 220.82.12.30 | 255.255.255.224 |
Router4 FA0/0 | 220.82.12.33 | 255.255.255.252 |
Router1 FA0/1 | 220.82.12.34 | 255.255.255.252 |
Router1 FA0/0 | 220.82.12.37 | 255.255.255.252 |
Router3 FA0/1 | 220.82.12.38 | 255.255.255.252 |
Router3 FA0/0 | 220.82.12.41 | 255.255.255.252 |
Router2 FA0/1 | 220.82.12.42 | 255.255.255.252 |
Router2 FA0/0 | 220.82.12.45 | 255.255.255.252 |
Router0 FA0/0 | 220.82.12.46 | 255.255.255.252 |
Router0 FA0/1 | 220.82.12.49 | 255.255.255.252 |
Router5 FA0/0 | 220.82.12.50 | 255.255.255.252 |
Router0 SE1/0 | 220.82.12.53 | 255.255.255.252 |
Router1 SE1/0 | 220.82.12.54 | 255.255.255.252 |
Router5 FA0/1.80 (Salg) | 10.0.0.1 | 255.255.255.128 |
Router5 FA0/1.90 (Forskning) | 10.0.0.129 | 255.255.255.128 |
Server0 (Forskning) | 10.0.0.135 | 255.255.255.128 |
Server1 (Salg) | 10.0.0.5 | 255.255.255.128 |
Nettverk | Excluded range | DHCP Fra adresse | DHCP Til adresse |
---|---|---|---|
10.0.0.0/25 | 10.0.0.1-9 | 10.0.0.10 | 10.0.0.126 |
10.0.0.128/25 | 10.0.0.129-139 | 10.0.0.140 | 10.0.0.254 |
Router5 er satt opp med NAT overload med 220.82.12.50
på utsiden av nettet. Access list er satt opp slik at bare salgsnettet har tilgang til å nå ut til public nett.
Router5 har 2 forskjellige DHCP pools som er til salgsnettet og forskningsnettet.
Salgsnettet har 10.0.0.0/25
med reserverte adresser: 10.0.0.1-9
med .1
som routeren. Forskningsnettet har 10.0.0.128/25
med reserverte adresser: 10.0.0.129-139
med .129
som routeren.
I tillegg har jeg tildelt DNS-serveren i fra public servernett som default DNS server i salgsnettet (220.82.12.30
). Dette er da ikke gjort med forskningsnettet, siden forskningsnettet ikke når ut til public nett.
I følge show ip route
er "distance" 40960
til det offentlig servernettet.
STP eller Spanning Tree Protocol er brukt hos switchene for å forhindre at frames går i en evig "loop" (blir sendt til enhver switch for evig).
Ved hjelp av STP kan vi også ha backup links mellom switcher, i tilfelle en link mellom switcher blir brutt.
Først og fremst trenger ikke det offentlig nettverket å vite om de interne IP-adressene innenfor nettverket, men det er også slik at bare VLAN Salg
har tilgang til NAT og ikke enheter i forskningsnettet. Med andre ord, enheter i forskningsnettet har ikke tilgang til internett i det hele tatt. Sikkerheten ved det er at ingen fra utsiden (offentlige nettverket) har direkte tilgang til noen av enhetene på innsiden og eventuelle åpne porter for applikasjoner (f.eks. et web panel som går over HTTP) er ikke tilgjengelig med mindre det forwardes av routeren.
Vi deler opp avdelingene i forskjellige nettverk og det tillater oss å definere access-list, slik at salgsavdelingen ikke har tilgang til absolutt hele forskningsnettet. Samtidig gir det også mulighet for oss å forhindre at forskningsnettet går ut mot internett.
9. Hvilken vei tar en pakke fra VLAN salg til Public nett servere? Hvordan kan du verifisere dette fra klienten?
Veien fra PC0 (Salg) til offentlig servernett er som følger:
Router5 -> Router0 -> Router2 -> Router3 -> Router1 -> Router4 -> Offentlig servernett
Dette kan vi verifisere fra en enhet i Salg
ved hjelp av traceroute. På PC0 er dette: tracert 220.82.12.30
IPen 220.82.12.30
er DNS-serveren i det offentlige servernettet.
![7e1afa7be22cfd793d23bf42fc4209b2.png](file:///b:\Google Drive\Fagskolen - 18IT-D\Nettverk\Oppgave 2019-09-16 - Arbeidskrav 2\Export-Finished_resources\18d54038db29486683200ac514c6bd08.png)
Det er nesten helt samme metode på router 0, vi kan bruke traceroute derfra også, men der er kommandoen traceroute 220.82.12.30
. Alternativt kan vi også bruke show ip route
for å vise hvordan routingtabellen ser ut.
![b89d422d4168cfdd91797cfe786c1bb9.png](file:///b:\Google Drive\Fagskolen - 18IT-D\Nettverk\Oppgave 2019-09-16 - Arbeidskrav 2\Export-Finished_resources\e1b802969fb1413c935450045f0a2e55.png)
IP-adressering (IPv4/IPv6) ligger på lag 3 i OSI-modellen. På lag 3 blir det sendt pakker bygd opp på følgende måte:
IP Destination (Mål/Mottaker) | IP Source (Kilde/Sender) | Protokoll (TCP/UDP) | Data |
I et NAT-nettverk vil source oversettes fra internt til eksternt nettverk. |
Det er også på lag 3 hvor vi har protokollen ICMP, som brukes til traceroute/ping.
Encapsulation er at man "pakker inn" data ekstra informasjon for å sende det videre til de andre lagene i OSI-modellen.
F.eks. vil TCP/UDP (lag 4) data videresendes til lag 3 hvor man legger til IP-informasjon (source/destination) før det sendes videre til lag 2.
13. Enheter fra VLAN salg skal kunne pinge servere i Public nett. De andre routerene skal ikke kunne gjøre dette. Hvordan vil du løse det? Gjør og forklar.
Jeg brukte ACL (access lists) for å tillate spesifikk trafikk inn på offentlig servernett. Trafikken jeg bestemte meg for å tillate er: FTP, Web (HTTP), DNS og ICMP (ping/traceroute).
Access list er satt til følgende:
- Tillat FTP fra alle
- Tillat WWW (HTTP) fra alle
- Tillat DNS fra alle
- Tillat ICMP fra 220.82.12.50 (Router5/NAT).
I tillegg gikk jeg inn på interface fa0/1
som "peker mot" det offentlige servernettet og satte access-list 110 til "out", siden trafikken går ut mot det offentlige servernett: ip access-group 110 out
Nederst i access list er det en "implicit deny" for alt annet trafikk. Det vil si at alt annet enn det som er definert i access list blir droppet. I dette tilfellet vil all trafikk som ikke er FTP, HTTP, DNS eller ICMP (fra Router5) bli nektet tilgang inn til offentlig servernett.
Eneste unntak er Router4, som allerede er på "innsiden" av det offentlige servernettet. Router4 har også mulighet til å pinge inn til det offentlige servernettet, men jeg så ingen grunn til å spesifikt blokkere for Router4.
Jeg satte følgende ACL-regler som utgående trafikk mot VLAN 90 (subinterface fa0/1.90):
- Blokker FTP fra 10.0.0.0/25 til 10.0.0.128/25
- Blokker HTTP fra 10.0.0.0/25 til 10.0.0.128/25
- Tillat alt annet TCP (utenom HTTP/FTP) til 10.0.0.128/25
- (Implicit deny)
Dette vil da blokkere HTTP/FTP trafikk mot hele salgsnettet. Jeg kunne alternativt ha blokkert for den ene serveren som står i salgsnettet (ved å spesifisere host 10.0.0.5
i stedet for nettverket), men det ga mer mening å blokkere all slik trafikk inn til salg i tilfelle det kom nye servere med "sensitiv" informasjon.
For å kunne sette opp en serial-link mellom Router0 og Router1 (begge er 2811), må det legges til et ekstra nettverkskort på begge routerne som heter NM-4A/S.
Nettverksnavn | Nett-ID | Broadcast | Nettmaske | CIDR | Antall hosts | Første adresse | Siste adresse | Notat |
---|---|---|---|---|---|---|---|---|
Offentlig Servernett | 220.82.12.0 | 220.82.12.31 | 255.255.255.224 | /27 | 30 | 220.82.12.1 | 220.82.12.30 | Server-nett med 28 enheter |
Offentlig R4-R1 | 220.82.12.32 | 220.82.12.35 | 255.255.255.252 | /30 | 2 | 220.82.12.33 | 220.82.12.34 | Router4-Router1 |
Offentlig R1-R3 | 220.82.12.36 | 220.82.12.39 | 255.255.255.252 | /30 | 2 | 220.82.12.37 | 220.82.12.38 | Router1-Router3 |
Offentlig R3-R2 | 220.82.12.40 | 220.82.12.43 | 255.255.255.252 | /30 | 2 | 220.82.12.41 | 220.82.12.42 | Router3-Router2 |
Offentlig R2-R0 | 220.82.12.44 | 220.82.12.47 | 255.255.255.252 | /30 | 2 | 220.82.12.45 | 220.82.12.46 | Router2-Router0 |
Offentlig R0-R5 | 220.82.12.48 | 220.82.12.51 | 255.255.255.252 | /30 | 2 | 220.82.12.49 | 220.82.12.50 | Router0-Router5 |
Offentlig R0-R1 | 220.82.12.52 | 220.82.12.55 | 255.255.255.252 | /30 | 2 | 220.82.12.53 | 220.82.12.54 | Router0-Router1 |
Nettverksnavn | Nett-ID | Broadcast | Nettmaske | CIDR | Antall hosts | Første adresse | Siste adresse | Notat |
---|---|---|---|---|---|---|---|---|
Privat Salg | 10.0.0.0 | 10.0.0.127 | 255.255.255.128 | /25 | 126 | 10.0.0.1 | 10.0.0.126 | VLAN Salg 80 |
Privat Forskning | 10.0.0.128 | 10.0.0.255 | 255.255.255.128 | /25 | 126 | 10.0.0.129 | 10.0.0.254 | VLAN Forskning 90 |
Enhets- og interfacenavn | IP-adresse | Nettmaske |
---|---|---|
Router4 FA0/1 | 220.82.12.1 | 255.255.255.224 |
FTP | 220.82.12.10 | 255.255.255.224 |
WEB | 220.82.12.20 | 255.255.255.224 |
DNS | 220.82.12.30 | 255.255.255.224 |
Router4 FA0/0 | 220.82.12.33 | 255.255.255.252 |
Router1 FA0/1 | 220.82.12.34 | 255.255.255.252 |
Router1 FA0/0 | 220.82.12.37 | 255.255.255.252 |
Router3 FA0/1 | 220.82.12.38 | 255.255.255.252 |
Router3 FA0/0 | 220.82.12.41 | 255.255.255.252 |
Router2 FA0/1 | 220.82.12.42 | 255.255.255.252 |
Router2 FA0/0 | 220.82.12.45 | 255.255.255.252 |
Router0 FA0/0 | 220.82.12.46 | 255.255.255.252 |
Router0 FA0/1 | 220.82.12.49 | 255.255.255.252 |
Router5 FA0/0 | 220.82.12.50 | 255.255.255.252 |
Router0 SE1/0 | 220.82.12.53 | 255.255.255.252 |
Router1 SE1/0 | 220.82.12.54 | 255.255.255.252 |
Router5 FA0/1.80 (Salg) | 10.0.0.1 | 255.255.255.128 |
Router5 FA0/1.90 (Forskning) | 10.0.0.129 | 255.255.255.128 |
Server0 (Forskning) | 10.0.0.135 | 255.255.255.128 |
Server1 (Salg) | 10.0.0.5 | 25 |
The MySQLCSharpGuide
in the FSI-18ITD
repository provides instructions on integrating MySQL with C# applications. It includes steps to set up the development environment, create a MySQL database, and connect to it using C#. The guide covers basic CRUD (Create, Read, Update, Delete) operations, connection handling, and error management.
For detailed instructions, you can visit the repository here.
Arbeidskrav 1 - Oppgave AD Hierarki - Løsningsforslag
Oppgave 1: Strukturering av domenet
Forslaget ditt for oppsett av domenet med OU'er er godt gjennomtenkt og vil gi en ryddig og skalerbar struktur. Ved å bruke en dedikert OU for hver avdeling og ytterligere dele inn etter enhetstype (stasjonær/bærbar), oppnår du en logisk inndeling som forenkler administrasjon og tilgangsstyring. Navngivningskonvensjonen for datamaskinene er også fornuftig og bidrar til oversikt.
Oppgave 2 og 3: Gruppenesting (IGDLA) for tilgangsstyring
Din forståelse av IGDLA-prinsippet er korrekt. Ved å bruke nestede grupper (Identity, Global, Domain Local, Permissions) kan du oppnå en fleksibel og effektiv tilgangsstyring til delte mapper.
Eksempel på IGDLA-struktur for tilgang til en delt mappe for avdeling "Snekker":
-
I:
Snekker_Identitet
(Inneholder alle brukere i snekkeravdelingen) -
G:
Snekker_Global_Tilgang
(InneholderSnekker_Identitet
) -
DL:
Snekker_DL_Tilgang
(InneholderSnekker_Global_Tilgang
) -
P: Tilgang til den delte mappen tildeles gruppen
Snekker_DL_Tilgang
Oppgave 4: Hjemmeområder for brukere
Du presenterer to gode alternativer for å sette opp hjemmeområder:
- Netlogon: Enkelt å sette opp, men krever manuell konfigurasjon per bruker.
- Group Policy: Mer effektivt for større antall brukere, men krever at brukerne er medlem av riktig OU eller gruppe.
Anbefalinger:
- Skript for tilbakestilling av mapperettigheter: Et PowerShell-script kan være nyttig for å sikre riktige rettigheter på delte mapper.
- Deaktivering av arv: Husk å deaktivere arv av rettigheter når du har satt opp spesifikke tillatelser på en mappe.
- Navngivning av grupper: Bruk beskrivende navn på grupper for å gjøre det enkelt å forstå hvem som har tilgang til hva.
- Dokumentasjon: Sørg for å dokumentere strukturen og tilgangsrettighetene godt, slik at det er enkelt å vedlikeholde og feilsøke senere.
Konklusjon:
Løsningsforslaget ditt viser en god forståelse av Active Directory-hierarki, gruppenesting og tilgangsstyring. Ved å implementere disse anbefalingene vil Hamar Fotball og Gulv AS få en velfungerende og sikker IT-infrastruktur.
Lykke til med arbeidskravet!
Company: Hamar Fotball og Gulv AS Employees: 340 Departments: Administrasjon, Ham-Kam, Lager, Snekkere, Støtteapparat
Objective: Simplify administration with an efficient Active Directory (AD) hierarchy.
-
Domain Name:
HamarFotballGulvAS.local
-
Organizational Units (OUs):
- Top-Level OU:
HamarFotballGulvAS
- Sub-OUs for Departments:
Administrasjon
Ham-Kam
Lager
Snekkere
Støtteapparat
- Top-Level OU:
Example for Department Structure:
-
Administrasjon:
- OU for Desktops:
Admin_Desktops
- OU for Laptops:
Admin_Laptops
- OU for Desktops:
-
Ham-Kam:
- OU for Desktops:
HamKam_Desktops
- OU for Laptops:
HamKam_Laptops
- OU for Desktops:
Naming Convention:
- Desktops:
D<DeptCode><ID>
(e.g.,DADM001
) - Laptops:
L<DeptCode><ID>
(e.g.,LHKA001
)
Objective: Manage permissions for shared folders using IGDLA principles.
-
Global Groups:
- Example:
G_Admin
,G_HamKam
, etc.
- Example:
-
Domain Local Groups:
- Example:
DL_Admin_Read
,DL_Admin_Write
, etc.
- Example:
-
Access Control:
- Assign global groups to domain local groups to manage access to shared resources.
- Example:
-
DL_Admin_Read
includesG_Admin
-
DL_HamKam_Write
includesG_HamKam
-
Objective: Set up personalized home directories for users.
-
Home Folder Path:
- Format:
\\ServerName\Home\%username%
- Format:
-
Methods:
-
Netlogon Script:
- Command:
net use H: \\ServerName\Home\%username%
- Command:
-
Group Policy:
- Configure user home folder path in Group Policy Management.
- Ensure users are in the correct OU or group for the policy.
-
Netlogon Script:
Permissions Setup:
- Use advanced security settings in folder properties.
- Ensure proper permissions are set and inheritance is disabled for security.
- Group Nesting: Medium Article
- Home Folder Setup: Spiceworks Guide
By following these guidelines, the company can ensure a streamlined and secure Active Directory setup, facilitating efficient user and resource management.
-
Structure: Use IGDLA principles to manage shared folder access for departments.
- Groups: READ and WRITE permissions set per department.
-
Example Naming:
G_READ_HamKam
for read access in Ham-Kam. - Permissions: Domain Users with READ, specific groups with WRITE.
- Password Complexity: Set minimum of 8 characters via Group Policy.
- CMD Restriction: Allow only Administrasjon access using GPO.
-
Use
djoin
Command:- Provision a client and save the join file.
- Transfer file via Google Drive.
- Use
djoin /requestodj
on the client to join the domain offline.
For detailed steps and further configurations, you can refer to the original document.
Oppgave 1: Determine GPO Scope
-
WMI Filtering: Applies GPO based on system attributes like OS version. Example:
SELECT * FROM Win32_OperatingSystem WHERE Version LIKE "10.%"
- Item-Level Targeting (ILT): Applies GPO to specific users or groups. Less resource-intensive.
- Security Filtering: Limits GPO application to specific users or computers. Requires read permission on GPO.
Oppgave 2: Viewing Active GPOs
- Use
rsop.msc
orgpresult /Scope User /v
to view applied GPOs for a user. For computer policies, usegpresult /Scope Computer /v
.
Oppgave 3: Install Google Chrome via GPO
- Download MSI Installer: Get Chrome MSI from Google's website.
-
Create GPO:
- Go to User Configuration -> Policies -> Software Settings -> Software Installation.
- Add the MSI file and set to "Assigned".
- Apply the GPO to the relevant OU.
-
WMI Filter:
SELECT * FROM Win32_OperatingSystem WHERE Version LIKE "10.%"
to target Windows 10 machines.
Alternative to GPO for Software Installation
- Use System Center Configuration Manager (SCCM) for more flexibility and user self-service.
- Consider Ninite Pro for automated deployment of multiple applications.
Oppgave 4: Restrict User Access due to Virus
-
Disable User Account:
Disable-ADAccount -Identity "Username"
-
Software Restriction Policies: Limit .exe execution and restrict write access to sensitive folders like
%appdata%
,%temp%
, and network shares.
Oppgave 5: View All Shares from Client Machine
- Use CMD:
net view /all \\ServerIPAddress
to list all shares, including hidden ones.
a. Enable/Disable User Account
-
Enable:
Enable-ADAccount -Identity "Username"
-
Disable:
Disable-ADAccount -Identity "Username"
b. Change User Password
-
AD User:
Set-ADAccountPassword -Identity "Username" -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "NewPassword123" -Force)
-
Local User:
$Password = Read-Host -AsSecureString $UserAccount = Get-LocalUser -Name "Username" $UserAccount | Set-LocalUser -Password $Password
c. Change Group Membership
-
Add:
Add-ADGroupMember -Identity "GroupName" -Members "Username"
-
Remove:
Remove-ADGroupMember -Identity "GroupName" -Members "Username"
d. Import Users from CSV
-
PowerShell Script:
Import-Module ActiveDirectory $ADUsers = Import-Csv -Path "C:\Path\To\Users.csv" $OU = "OU=Users,DC=domain,DC=com" foreach ($User in $ADUsers) { if (-not (Get-ADUser -Filter {SamAccountName -eq $User.username})) { New-ADUser -SamAccountName $User.username -UserPrincipalName "$($User.username)@domain.com" -Name "$($User.firstname) $($User.lastname)" -GivenName $User.firstname -Surname $User.lastname -Enabled $true -Path $OU -AccountPassword (ConvertTo-SecureString $User.password -AsPlainText -Force) -ChangePasswordAtLogon $true } }
For more detailed steps and additional examples, you can refer to the guides available on Fagskolen Innlandet's website and the original document.
https://github.com/alexandermeyer97/Qt_6_Fagskolen_2023
Repositoryen Qt_6_Fagskolen_2023 inneholder ulike mapper og filer knyttet til læring og prosjekter i Qt 6 ved Fagskolen i 2023. Her er en oversikt over innholdet i repositoryen:
- .gitattributes: Inneholder innstillinger for Git-attributter.
- .gitignore: Inneholder regler for hvilke filer og mapper som skal ignoreres av Git.
- README.md: Beskrivelse av repositoryen, inkludert formål og innhold.
- test.txt: En tom tekstfil.
- Uke_02_intro_Qt_6: Intro til Qt 6 i uke 2.
- Uke_03_QObject_Macro_signals_slots: Leksjoner om QObject, makroer, signaler og slots i uke 3.
- Uke_04_Samling_1: Samling 1 i uke 4.
- Uke_05_Views_settings: Leksjoner om visninger og innstillinger i uke 5.
- Uke_06_File_system: Leksjoner om filsystemet i uke 6.
- Uke_07_Combos_list_QFontComboBox_date_time: Leksjoner om kombobokser, lister, QFontComboBox, dato og tid i uke 7.
- Uke_08_QLineEdit_QPlainTextEdit_QSpinBox: Leksjoner om QLineEdit, QPlainTextEdit og QSpinBox i uke 8.
- Uke_10_Resources: Leksjoner om ressurser i uke 10.
- Uke_11_Resources_Multiple_dialogs: Leksjoner om ressurser og flere dialoger i uke 11.
- Uke_12_Multiple_dialogs: Leksjoner om flere dialoger i uke 12.
- Uke_13_QMainWindow: Leksjoner om QMainWindow i uke 13.
- Uke_14_samling_2: Samling 2 i uke 14.
- Uke_15_Models: Leksjoner om modeller i uke 15.
- Uke_16_Prosjekt: Prosjektarbeid i uke 16.
- Uke_17_Prosjekt: Prosjektarbeid i uke 17.
- Uke_18_Prosjekt: Prosjektarbeid i uke 18.
- Uke_19_Gjennomgang: Gjennomgang i uke 19.
- Uke_20_: Innhold for uke 20.
- fremdriftsplan: Inneholder fremdriftsplanen for kurset.
Du kan utforske repositoryen ved å klikke på de ulike mappene og filene på GitHub her.
Repositoryen Qt_6_Fagskolen_2023 inneholder læringsmateriale og prosjekter knyttet til Qt 6 ved Fagskolen. Her er en mer detaljert beskrivelse av innholdet og hva man kan lære fra det:
- .gitattributes: Konfigurasjonsfil for Git-attributter som påvirker hvordan Git håndterer filer med ulike attributter.
- .gitignore: Spesifiserer hvilke filer og mapper som skal ignoreres av Git, vanligvis bruk for å unngå å spore midlertidige filer, byggmapper, og andre filer som ikke er nødvendig i versjonskontroll.
- README.md: Inneholder en beskrivelse av repositoryen, formålet, og hvordan man bruker den. README-filen gir også instruksjoner for hvordan man kan sette opp og bruke de ulike prosjektene og oppgavene i repositoryen.
- test.txt: En tom fil, sannsynligvis brukt for testing eller som plassholder.
- Uke_02_intro_Qt_6: Inneholder materiale og øvelser for introduksjon til Qt 6.
- Uke_03_QObject_Macro_signals_slots: Fokus på QObject, makroer, signaler og slots. Dette er grunnleggende konsepter i Qt som brukes for å lage interaktive og responsive applikasjoner.
- Uke_04_Samling_1: Samlingsmateriale for uke 4, som kan inkludere oppgaver, presentasjoner eller andre ressurser.
- Uke_05_Views_settings: Leksjoner om visninger (views) og innstillinger (settings) i Qt, som brukes til å lage og håndtere brukergrensesnitt.
- Uke_06_File_system: Undervisning om hvordan man arbeider med filsystemet i Qt, inkludert filhåndtering og filoperasjoner.
- Uke_07_Combos_list_QFontComboBox_date_time: Leksjoner om kombobokser, lister, QFontComboBox, samt dato og tidshåndtering.
- Uke_08_QLineEdit_QPlainTextEdit_QSpinBox: Fokus på QLineEdit, QPlainTextEdit og QSpinBox, som er ulike typer inndatafelter i Qt.
- Uke_10_Resources: Leksjoner om hvordan man håndterer ressurser i Qt, som bilder, ikoner og andre eksterne filer.
- Uke_11_Resources_Multiple_dialogs: Videreføring om ressurser og flere dialogvinduer.
- Uke_12_Multiple_dialogs: Leksjoner om å arbeide med flere dialogvinduer i Qt-applikasjoner.
- Uke_13_QMainWindow: Fokus på QMainWindow, som er hovedvinduet i mange Qt-applikasjoner.
- Uke_14_samling_2: Samlingsmateriale for uke 14.
- Uke_15_Models: Leksjoner om modeller i Qt, som brukes for å håndtere data i ulike visningskomponenter.
- Uke_16_Prosjekt, Uke_17_Prosjekt, Uke_18_Prosjekt: Prosjektarbeid som strekker seg over flere uker, hvor studentene anvender det de har lært i et praktisk prosjekt.
- Uke_19_Gjennomgang: Gjennomgang av materialet og prosjektene.
- Uke_20_: Innhold for uke 20, muligens oppsummering eller avslutning av kurset.
- fremdriftsplan: En plan som viser fremdriften i kurset, hvilke temaer som skal dekkes og når.
For å lære mer om Qt 6 og de emnene som dekkes i dette repositoryet, kan følgende kilder være nyttige:
- Qt Documentation: Den offisielle dokumentasjonen for Qt, som dekker alle aspekter av utvikling med Qt.
- Qt Wiki: En samling av veiledninger, eksempler og beste praksiser fra Qt-fellesskapet.
- Qt Core: Dokumentasjon for Qt Core, som inkluderer grunnleggende klasser og funksjoner i Qt.
- Qt Widgets Examples: Eksempler på hvordan man bruker ulike widgets i Qt.
- Model/View Programming: En guide til modell/vis-programmering i Qt.
Disse ressursene vil gi en grundig forståelse av Qt og hvordan man kan bruke det til å utvikle applikasjoner.
Repositoryen larsenjr.github.io inneholder en personlig nettside som er bygget ved hjelp av ulike webteknologier. Her er en detaljert oversikt over innholdet i repositoryen og hva man kan lære seg ved å utforske det:
- CNAME: Inneholder det egendefinerte domenenavnet for GitHub Pages-nettstedet.
- README.md: En kort tekstfil, sannsynligvis brukt som plassholder. Den er for tiden tom.
- _config.yml: Konfigurasjonsfil for Jekyll, en statisk nettstedsgenerator som brukes av GitHub Pages. Denne filen inneholder innstillinger som påvirker hvordan nettstedet bygges og vises.
- .idea: Inneholder prosjektspesifikke innstillinger for IDE-en (Integrated Development Environment), sannsynligvis JetBrains IDE-er som IntelliJ IDEA.
- .vscode: Inneholder konfigurasjonsfiler for Visual Studio Code, som er en populær kodeeditor.
- _includes: Denne mappen inneholder delvis malfiler som kan inkluderes i andre malfiler ved hjelp av Jekyll. Dette kan for eksempel være felles header- eller footer-seksjoner.
- _layouts: Inneholder malfiler som definerer strukturen til ulike typer sider på nettstedet. Disse layoutene brukes av Jekyll til å generere de endelige HTML-sidene.
- assets: Brukes til å lagre statiske ressurser som bilder, skrifttyper, og andre mediefiler som brukes på nettstedet.
- css: Inneholder CSS-filer som brukes til å definere utseendet og stilen til nettstedet.
- fsi2: Innholdet i denne mappen er ukjent uten ytterligere inspeksjon, men det kan inneholde prosjektspesifikke filer eller ressurser.
- img: Inneholder bilder som brukes på nettstedet.
- js: Inneholder JavaScript-filer som gir nettstedet interaktivitet og dynamisk funksjonalitet.
Ved å utforske dette repositoryet kan man lære seg hvordan man setter opp og konfigurerer et Jekyll-basert nettsted. Her er noen spesifikke læringsmål:
-
Konfigurasjon av Jekyll: Lære hvordan
_config.yml
-filen brukes til å konfigurere Jekyll, inkludert innstillinger for nettstedets tittel, beskrivelse, og andre metadata. -
Bruk av maler: Forstå hvordan man lager og bruker maler i
_layouts
-mappen for å definere felles strukturer på tvers av forskjellige sider på nettstedet. -
Inkludering av delvise maler: Lære hvordan man bruker
_includes
-mappen til å gjenbruke deler av HTML-koden (for eksempel navigasjonsmenyer eller footers) på tvers av flere sider. -
CSS-styling: Utforske hvordan CSS brukes til å style nettstedet, inkludert bruk av eksterne CSS-filer i
css
-mappen. -
Håndtering av statiske ressurser: Forstå hvordan man organiserer og bruker statiske ressurser som bilder (i
img
-mappen) og JavaScript-filer (ijs
-mappen). -
GitHub Pages og egendefinerte domener: Lære hvordan man konfigurerer et egendefinert domene for et GitHub Pages-nettsted ved hjelp av
CNAME
-filen.
For å støtte læringen og utvide kunnskapen, kan følgende ressurser være nyttige:
- Jekyll Documentation: Offisiell dokumentasjon for Jekyll, som dekker installasjon, konfigurasjon, og avanserte funksjoner.
- GitHub Pages Documentation: Offisiell dokumentasjon for GitHub Pages, som forklarer hvordan man publiserer nettsteder direkte fra et GitHub-repository.
- W3Schools CSS Tutorial: En omfattende guide til CSS, som dekker alt fra grunnleggende stilsetting til avanserte layoutteknikker.
- MDN Web Docs on JavaScript: En grundig ressurs for å lære JavaScript, med eksempler og referanser til alle språkfunksjoner.
- HTML Living Standard: Den levende standarden for HTML, som gir detaljerte spesifikasjoner for HTML-språket og dets funksjoner.
Ved å utforske repositoryen og bruke disse ressursene, kan man få en solid forståelse av hvordan man bygger og vedlikeholder et statisk nettsted med Jekyll og GitHub Pages.
Repositoryen csharp inneholder en samling av C#-prosjekter og øvelser som dekker ulike aspekter av programmering i C#. Her er en detaljert oversikt over innholdet i repositoryen og hva man kan lære seg fra det:
- .vs: Inneholder konfigurasjonsfiler for Visual Studio, som er en populær IDE for utvikling i C#.
- Alder: Inneholder kode relatert til beregning eller håndtering av alder.
- Array and debugging: Fokus på arrays og debugging-teknikker.
- Array: Øvelser og eksempler som involverer bruk av arrays.
- ConsoleApp1: Et konsollapplikasjonsprosjekt, sannsynligvis en enkel C#-applikasjon som kjører i kommandolinjen.
- EclipseProve: Innholdet er ukjent uten ytterligere inspeksjon, men det kan være en prøve eller øvelse relatert til Eclipse IDE.
- ExceptionHandling: Øvelser og eksempler på håndtering av unntak i C#.
- GUI: Prosjekter som involverer grafiske brukergrensesnitt (GUI) i C#.
- KlasserDemo: Eksempler og øvelser som demonstrerer bruk av klasser og objekter i C#.
- MySQL Student CRUD: Prosjekter som involverer oppretting, lesing, oppdatering og sletting (CRUD) av studentdata ved hjelp av MySQL.
- MySqlCrud: Generelle CRUD-operasjoner med MySQL.
- Oppgave2AlderFarge: Oppgaver som sannsynligvis involverer både alder og farge.
- Oppgave3Array: Oppgaver relatert til arrays.
- Sammenlignetallmedtotall: Prosjekter eller oppgaver som involverer sammenligning av tall.
- Sortering array: Oppgaver eller eksempler som viser hvordan man sorterer arrays.
- Switchcase: Eksempler og øvelser som involverer bruk av switch-case uttalelser i C#.
- Øvelse array: Ytterligere øvelser som involverer arrays.
- En kort tekstfil som sannsynligvis gir en introduksjon til repositoryen. Den inneholder for tiden minimal informasjon.
- Konsollapplikasjoner: Hvordan lage og kjøre enkle C#-applikasjoner som kjører i kommandolinjen.
- Arrays: Hvordan deklarere, initialisere, manipulere og sortere arrays.
- Feilhåndtering: Bruk av try-catch-blokker for å håndtere unntak og feil i C#.
- Klasser og objekter: Grunnleggende objektorientert programmering, inkludert oppretting av klasser, instansiering av objekter, og bruk av metoder og egenskaper.
- Switch-case: Bruk av switch-case uttalelser for å håndtere multiple betingelser på en strukturert måte.
- GUI-programmering: Grunnleggende om utvikling av grafiske brukergrensesnitt i C#.
- Databaseoperasjoner: Bruk av MySQL for å utføre CRUD-operasjoner fra en C#-applikasjon.
For å støtte læringen og utvide kunnskapen, kan følgende ressurser være nyttige:
- Microsoft C# Documentation: Offisiell dokumentasjon fra Microsoft som dekker alle aspekter av C#-språket.
- W3Schools C# Tutorial: En grunnleggende guide til C# med eksempler og interaktive øvelser.
- Learn C#: En interaktiv ressurs for å lære C# med praktiske eksempler og oppgaver.
- Microsoft Visual Studio Documentation: Dokumentasjon og guider for Visual Studio, inkludert konfigurasjon og bruk av IDE.
- MySQL Connector/NET Developer Guide: Offisiell dokumentasjon for MySQL Connector/NET, som brukes til å koble C#-applikasjoner til MySQL-databaser.
Ved å utforske repositoryen og bruke disse ressursene, kan man få en solid forståelse av grunnleggende og avanserte konsepter i C#-programmering, inkludert konsollapplikasjoner, GUI-programmering, feilhåndtering, og databaseoperasjoner.
Repositoryen arduino inneholder flere prosjekter og øvelser knyttet til bruk av Arduino, en populær plattform for elektronikkprosjekter. Her er en detaljert oversikt over innholdet og hva man kan lære seg:
- README.md: En kort tekstfil som sannsynligvis gir en introduksjon til repositoryen.
- Grunnleggende el-lære kap 6 fra boka Hvordan virker Arduino.pdf: En PDF-fil som inneholder grunnleggende opplæring i elektrisitetslære relatert til Arduino.
- .vscode: Inneholder konfigurasjonsfiler for Visual Studio Code, som er en populær kodeeditor.
- Ovelsefinnegjennomsnitt: Øvelser som fokuserer på å finne gjennomsnittet av en rekke verdier.
- kvadrattrot_av_et_tall: Øvelser som involverer beregning av kvadratroten av et tall.
- ledmedknapp: Prosjekter som viser hvordan man kontrollerer en LED med en knapp.
- lnnlevering1 Knapp med fade: Øvelser som involverer fading av en LED ved hjelp av en knapp.
-
millistest: Tester som involverer bruk av
millis()
-funksjonen i Arduino for tidsmåling. - sketch_dec13a_ledsequence: Prosjekter som viser en sekvens av LED-lys.
- test array: Øvelser som involverer bruk av arrays i Arduino-prosjekter.
- Grunnleggende Elektrisitetslære: Gjennom PDF-filen kan man lære grunnleggende elektrisitetslære som er relevant for Arduino-prosjekter. Dette inkluderer forståelse av strøm, spenning, motstand, og hvordan disse prinsippene anvendes i Arduino-prosjekter.
-
Bruk av Knapper og LED-er: Mapper som
ledmedknapp
oglnnlevering1 Knapp med fade
gir praktiske eksempler på hvordan man kan bruke knapper til å kontrollere LED-er, inkludert fading-effekter. -
Tidsmåling med millis(): Mappen
millistest
inneholder eksempler på bruk avmillis()
-funksjonen for å måle tid uten å blokkere hovedløkken i programmet. Dette er nyttig for å lage mer komplekse og responsive programmer. -
Sekvensstyring av LED-er:
sketch_dec13a_ledsequence
viser hvordan man kan lage sekvenser av LED-lys, noe som er nyttig for å lage visuelle effekter og signaler. -
Matematiske Beregninger: Mapper som
kvadrattrot_av_et_tall
ogOvelsefinnegjennomsnitt
gir eksempler på hvordan man kan utføre matematiske beregninger med Arduino. -
Arrays: Mappen
test array
inneholder øvelser som viser hvordan man kan bruke arrays for å lagre og manipulere data i Arduino-programmer.
For å støtte læringen og utvide kunnskapen, kan følgende ressurser være nyttige:
- Arduino Documentation: Offisiell dokumentasjon og tutorials fra Arduino, som dekker alt fra grunnleggende opplæring til avanserte prosjekter.
- Arduino Reference: En omfattende referanse til Arduino-programmering, inkludert funksjoner, variabler og operatører.
- Arduino Forum: Et fellesskap av Arduino-brukere hvor man kan stille spørsmål, dele prosjekter og få hjelp med problemer.
- Instructables Arduino Projects: En samling av Arduino-prosjekter fra Instructables, med trinnvise veiledninger.
- SparkFun Learning: Tutorials og ressurser fra SparkFun, en leverandør av elektronikkprodukter, som dekker en rekke Arduino-emner.
Ved å utforske repositoryen og bruke disse ressursene, kan man få en solid forståelse av både grunnleggende og avanserte konsepter i Arduino-programmering, inkludert elektronikkprinsipper, programmeringslogikk, og praktiske anvendelser.
Repositoryen SQL inneholder en rekke SQL-filer og øvelser som dekker ulike aspekter av SQL-programmering og databaseadministrasjon. Her er en detaljert oversikt over innholdet og hva man kan lære seg:
- Backup Prøve.sql og Backup.sql: Inneholder SQL-skript for å ta sikkerhetskopier av databaser. Man lærer seg hvordan man lager og gjenoppretter sikkerhetskopier av databaser.
- Backuptestmodel.mwb: En MySQL Workbench-modellfil som kan inneholde databasemodeller. Man lærer seg hvordan man bruker MySQL Workbench til å designe databaser.
- Binde tabell med en annen.sql: Inneholder SQL-kode for å binde (join) tabeller. Man lærer seg hvordan man bruker JOIN-operasjoner i SQL.
- Finne alle kvinner som har spesifikt poststed(inner join, where, order by).sql: Man lærer seg å bruke INNER JOIN, WHERE, og ORDER BY for å filtrere og sortere data.
- Finne alle som begynner på erlin (Wildcard).sql: Man lærer seg å bruke wildcard-tegn for mønstergjenkjenning i SQL.
- Finne fylkenavn og antall (innerjoin, count).sql: Man lærer seg å bruke COUNT-funksjonen sammen med JOIN-operasjoner for å telle oppføringer.
- Finne grunndata for poststed og postnummer.sql: Man lærer seg å hente grunnleggende data fra en database.
- Finne høyeste betalte tall.sql: Man lærer seg å bruke SQL-funksjoner for å finne den høyeste verdien i en kolonne.
- Finne kunder som ikke har plassert ordre.sql: Man lærer seg å bruke LEFT JOIN og WHERE for å finne oppføringer uten relaterte data.
- Finne unike tall med de som minst har en betaling.sql: Man lærer seg å finne unike oppføringer som tilfredsstiller spesifikke kriterier.
- Finner alle beløp som er høyere enn gjennomsnittet.sql: Man lærer seg å bruke aggregeringsfunksjoner for å sammenligne verdier.
- Lage database CREATE TABLE.sql og Lage database skiklubb.sql: Man lærer seg å opprette databaser og tabeller.
- Lage kolonne poststed.sql, Lage kolonne til tabelldatabase.sql, Lage kolonne uten at man kan endre tabeller.sql: Man lærer seg å legge til kolonner i eksisterende tabeller.
- Lege inn info i poststed.sql og Legge til bilmerker i en eksisterende kolonne.sql: Man lærer seg å sette inn data i tabeller.
- Legge til flere bilmerker i en kolonne.sql: Man lærer seg å oppdatere data i en eksisterende kolonne.
- Legge til info i databaser INSERT INTO.sql: Man lærer seg å bruke INSERT INTO for å legge til data i tabeller.
- Legger til kolonne med syntax år.sql: Man lærer seg å opprette kolonner med spesifikke datatyper.
- Oppgave Endre rettigheter grant, select, delete, insert.sql: Man lærer seg å administrere brukerrettigheter i databaser.
- OppgaveTransact.sql, OppgaveTransact1.sql, OppgaveTransactRecoveryRestore.sql, OppgveTransact.sql: Man lærer seg å bruke transaksjoner i SQL.
- Relasjon løp til medlemmer.sql: Man lærer seg å lage relasjoner mellom tabeller.
- SQL Spørring etter totale summen etter enkelt ordre.sql: Man lærer seg å aggregere data for å finne totale summer.
- SQL Spørring etter bokstaven C og USA.sql: Man lærer seg å bruke LIKE og WHERE for å filtrere data.
- SQL Spørring etter tall som er under gjennomsnittet.sql: Man lærer seg å bruke sammenligningsoperatører for å filtrere data basert på aggregerte verdier.
- SQL lage tabell resultater.sql: Man lærer seg å opprette og administrere tabeller for å lagre resultater.
- SQL legge inn info i databasen.sql og SQL legge inn info i resultater.sql: Man lærer seg å sette inn og oppdatere data i databaser.
- SQLProve.md: En markdown-fil som sannsynligvis inneholder oppgaver eller tester relatert til SQL.
- Setter autoincrement tilbake til 1.sql: Man lærer seg å administrere autoincrement-verdier i tabeller.
- Slette rows i en tabell.sql: Man lærer seg å slette data fra tabeller.
- Sortere etter fylke som har flere enn 2 studenter.sql: Man lærer seg å bruke GROUP BY og HAVING for å gruppere og filtrere data.
- Spørring endre verdi i eksisterende tabell.sql: Man lærer seg å oppdatere eksisterende data i en tabell.
- Spørring etter Antall kvinner og menn.sql: Man lærer seg å telle oppføringer basert på spesifikke kriterier.
- Spørring etter Etternavn sortert synkende rekkefølge.sql: Man lærer seg å sortere data i synkende rekkefølge.
- Spørring etter Gjennomsnitt av alder.sql: Man lærer seg å beregne gjennomsnittet av verdier i en kolonne.
- Spørring etter fylke.sql: Man lærer seg å hente og filtrere data basert på fylke.
- Spørring etter kvinner som bor i et visst område.sql: Man lærer seg å bruke WHERE-klausuler for å filtrere data basert på geografiske kriterier.
- Spørring etter kvinner.sql: Man lærer seg å filtrere data basert på kjønn.
- Spørring etter oppdatering på navn og alder.sql: Man lærer seg å oppdatere spesifikke kolonner i en tabell.
- Spørring etter unique keys i en tabell.sql: Man lærer seg å hente unike oppføringer fra en tabell.
- Spørring etter å finne alder innenfor ett område.sql: Man lærer seg å bruke BETWEEN for å filtrere data basert på et område.
- Spørring etter å finne poststed sortert på antall.sql: Man lærer seg å sortere data basert på antall oppføringer.
- Spørring etter å lage en ny bruker i tabell.sql: Man lærer seg å legge til nye brukere i en tabell.
- backup test.sql: Inneholder SQL-kode for å teste sikkerhetskopiering av databaser.
- backuptest reverse.mwb og backuptest reverse.mwb.bak: MySQL Workbench-filer som sannsynligvis inneholder databasemodeller.
- diverse.sql og diverse2.sql: Inneholder diverse SQL-øvelser og eksempler.
- finne de ti første i en tabell (LIMIT spørring).sql: Man lærer seg å bruke LIMIT for å hente et bestemt antall oppføringer.
- finne inner join sammen med poststed hos student.sql: Man lærer seg å bruke INNER JOIN for å koble sammen tabeller.
- finne unike (med union) som lister alle navn fra flere tabeller.sql: Man lærer seg å bruke UNION for å kombinere resultater fra flere tabeller.
- informasjon i resultatertabellen.sql: Man lærer seg å hente data fra en resultatertabell.
- oppdatere eksisterende bruker (update, set, where).sql: Man lærer seg å oppdatere data i en eksisterende bruker.
- spørring etter RIGHT JOIN (høyre database).sql: Man lærer seg å bruke RIGHT JOIN for å koble sammen tabeller.
- transactRecoveryRestore.sql: Inneholder SQL-kode for å gjenopprette data ved hjelp av transaksjoner.
For å støtte læringen og utvide kunnskapen, kan følgende ressurser være nyttige:
- W3Schools SQL Tutorial: En omfattende guide til SQL med eksempler og interaktive øvelser.
- SQLZoo: En interaktiv læringsplattform for SQL.
- LeetCode SQL Problems: Øvingsoppgaver for SQL på LeetCode.
- SQLBolt: En interaktiv opplæring for å lære SQL trinn for trinn.
- MySQL Documentation: Den offisielle dokumentasjonen for MySQL, inkludert referanseguider og tutorials.
- PostgreSQL Documentation: Den offisielle dokumentasjonen for PostgreSQL, en populær SQL-database.
Ved å utforske repositoryen og bruke disse ressursene, kan man få en solid forståelse av SQL-programmering, inkludert spørringer, databasemanipulering, sikkerhetskopiering, gjenoppretting og mye mer.
Repository: mvp-to-mvvm-transition
- .gitignore: Fil som spesifiserer hvilke filer og mapper som skal ignoreres av Git.
- .idea: Inneholder prosjektspesifikke innstillinger for IntelliJ IDEA.
- README.md: Dokumentasjon for prosjektet.
- app: Katalog som inneholder applikasjonskoden.
- build.gradle: Byggekonfigurasjonsfil for Gradle.
- gradle.properties: Gradle egenskapsfil.
- gradle: Katalog for Gradle-innstillinger.
- gradlew og gradlew.bat: Wrapper-skript for å sikre at prosjektet bruker riktig versjon av Gradle.
- settings.gradle: Gradle-innstillinger for prosjektet.
README-filen gir en kort introduksjon til prosjektet som viser en dynamisk og interaktiv GUI-applikasjon som bruker data-binding for å illustrere overgangen fra MVP (Model-View-Presenter) til MVVM (Model-View-ViewModel).
- UI-elementer: Skjulte/synlige basert på radioknappstatus.
- Databinding: Illustrerer nettverksforespørsler og UI-oppdateringer.
Opprinnelig skrevet som støtte for et blogginnlegg kalt Android Databinding: Goodbye Presenter, Hello ViewModel!.
- Overgang fra MVP til MVVM: Forstå forskjellene mellom MVP og MVVM-arkitektur og hvordan man migrerer et prosjekt fra MVP til MVVM.
- Android Databinding: Lær hvordan man bruker Android Databinding for å binde UI-komponenter direkte til ViewModel.
- Gradle Konfigurasjon: Forstå grunnleggende Gradle-konfigurasjoner for Android-prosjekter.
- UI-Design med ViewModels: Forstå hvordan man bruker ViewModels for å holde UI-koden ren og lett å teste.
- Official Android Documentation - Data Binding
- Introduction to Model-View-ViewModel (MVVM) pattern
- Google Codelabs: Android ViewModel
Repository: build-variant-matrix
- README.md: Dokumentasjon for prosjektet.
- app: Katalog som inneholder applikasjonskoden.
- build.gradle: Byggekonfigurasjonsfil for Gradle.
- gradle.properties: Gradle egenskapsfil.
- gradle: Katalog for Gradle-innstillinger.
- gradlew og gradlew.bat: Wrapper-skript for å sikre at prosjektet bruker riktig versjon av Gradle.
- settings.gradle: Gradle-innstillinger for prosjektet.
README-filen gir en oversikt over hvordan man bruker byggevarianter (build variants) i Android-prosjekter. Det illustrerer hvordan man kan konfigurere flere byggevarianter for forskjellige miljøer og funksjoner.
- Konfigurasjon av Byggevarianter: Lær hvordan man konfigurerer og bruker byggevarianter i et Android-prosjekt.
- Gradle Scripting: Forstå hvordan man bruker Gradle for å administrere forskjellige byggekonfigurasjoner.
- Miljøspesifikke Bygg: Lær hvordan man setter opp og administrerer miljøspesifikke bygg, for eksempel debug, release, staging, etc.
Repository: wf4-rule-engine
- README.md: Dokumentasjon for prosjektet.
- src: Katalog som inneholder kildekoden.
README-filen gir en oversikt over prosjektet som handler om en regelmotor bygget med Windows Workflow Foundation 4 (WF4). Det gir informasjon om hvordan man setter opp og bruker regelmotoren.
- Windows Workflow Foundation (WF4): Forstå grunnleggende konsepter og bruk av WF4.
- Bygging av Regelmotorer: Lær hvordan man bygger og administrerer regelmotorer ved hjelp av WF4.
- Integrasjon med .NET: Forstå hvordan man integrerer regelmotorer med .NET-applikasjoner.
Repository: OttoVolleyDoneRight
- README.md: Dokumentasjon for prosjektet.
- app: Katalog som inneholder applikasjonskoden.
- build.gradle: Byggekonfigurasjonsfil for Gradle.
- gradle.properties: Gradle egenskapsfil.
- gradle: Katalog for Gradle-innstillinger.
- gradlew og gradlew.bat: Wrapper-skript for å sikre at prosjektet bruker riktig versjon av Gradle.
- settings.gradle: Gradle-innstillinger for prosjektet.
README-filen gir en oversikt over prosjektet som integrerer Otto, en event bus, med Volley, et HTTP-bibliotek for Android. Prosjektet viser hvordan man bruker disse bibliotekene sammen for å lage responsive og skalerbare Android-applikasjoner.
- Otto Event Bus: Forstå hvordan man bruker Otto for å håndtere hendelser i Android-applikasjoner.
- Volley HTTP Library: Lær hvordan man bruker Volley for å håndtere nettverksforespørsler.
- Integrasjon av Biblioteker: Forstå hvordan man integrerer forskjellige tredjepartsbiblioteker for å forbedre applikasjonsfunksjonalitet.
Repository: hello-mvp-dagger-2
- README.md: Dokumentasjon for prosjektet.
- app: Katalog som inneholder applikasjonskoden.
- build.gradle: Byggekonfigurasjonsfil for Gradle.
- gradle.properties: Gradle egenskapsfil.
- gradle: Katalog for Gradle-innstillinger.
- gradlew og gradlew.bat: Wrapper-skript for å sikre at prosjektet bruker riktig versjon av Gradle.
- settings.gradle: Gradle-innstillinger for prosjektet.
README-filen gir en oversikt over prosjektet som viser hvordan man bruker MVP-arkitektur med Dagger 2, en avhengighetsinjeksjonsrammeverk, i Android-applikasjoner.
- MVP Arkitektur: Forstå grunnleggende prinsipper for Model-View-Presenter arkitektur.
- Dagger 2: Lær hvordan man bruker Dagger 2 for avhengighetsinjeksjon i Android-applikasjoner.
- Kombinasjon av MVP og Dagger 2: Forstå hvordan man kombinerer MVP-arkitektur med Dagger 2 for å skape modulære og vedlikeholdbare applikasjoner.
Repository: coding-standards
- README.md: Dokumentasjon for prosjektet.
README-filen gir en oversikt over kodestandarder og beste praksiser for prosjektet. Dette kan
inkludere konvensjoner for kodenavn, formatering, dokumentasjon og andre retningslinjer som bidrar til å opprettholde kodekvalitet.
- Kodestandarder: Forstå viktigheten av kodestandarder og hvordan de kan implementeres.
- Beste Praksiser: Lær om beste praksiser for programmering og hvordan man kan anvende dem for å forbedre kodekvaliteten.
- Vedlikeholdbar Kode: Forstå hvordan kodestandarder kan bidra til å gjøre koden mer vedlikeholdbar og lesbar.
Disse prosjektene gir en omfattende innsikt i forskjellige aspekter av programvareutvikling, fra arkitekturdesign og avhengighetsinjeksjon til kodestandarder og beste praksiser. Ved å utforske disse repositoryene og bruke de nevnte kildene, kan man få en solid forståelse av moderne programvareutviklingsteknikker og verktøy.
Repository: Appear_js
- appear.js: JavaScript-fil som inneholder funksjonaliteten for at elementer skal dukke opp på skjermen.
-
index.html: HTML-fil som viser hvordan man bruker
appear.js
-skriptet i en webside. - style.css: CSS-fil som inneholder stilregler for utseendet til elementene på websiden.
- JavaScript for visuelle effekter: Lær hvordan man bruker JavaScript for å lage visuelle effekter, som at elementer skal dukke opp når de blir synlige på skjermen.
- HTML-struktur: Forstå hvordan man strukturerer en webside for å inkludere og bruke eksterne JavaScript- og CSS-filer.
- CSS for styling: Lær grunnleggende CSS for å style HTML-elementer og kontrollere deres utseende på skjermen.
- MDN Web Docs - Introduction to HTML
- MDN Web Docs - Introduction to CSS
- MDN Web Docs - JavaScript Basics
Repository: designlab
- README.md: Forventet å inneholde informasjon om prosjektet (ikke tilgjengelig via API).
- Diverse filer og mapper som antagelig inneholder prosjekter og eksempler relatert til design.
- Webdesign og UX: Forstå grunnleggende prinsipper for webdesign og brukeropplevelse (UX).
- HTML, CSS og JavaScript: Bruk disse teknologiene til å lage estetisk tiltalende og funksjonelle websider.
- Designverktøy og metoder: Lær om verktøy og metoder som brukes i designprosessen, som wireframing, prototyping, og brukertesting.
- MDN Web Docs - Web design basics
- A List Apart - Articles on Design
- Smashing Magazine - Design Articles
Repository: interaksjonsdesign
- README.md: Forventet å inneholde informasjon om prosjektet (ikke tilgjengelig via API).
- Diverse filer og mapper som sannsynligvis inneholder prosjekter og eksempler relatert til interaksjonsdesign.
- Interaksjonsdesign: Forstå hvordan man designer intuitive og effektive brukergrensesnitt.
- Brukeropplevelse (UX): Lær hvordan brukerne interagerer med produkter og hvordan man kan forbedre deres opplevelse.
- Designprinsipper og mønstre: Forstå viktige prinsipper og designmønstre som forbedrer brukervennligheten og funksjonaliteten til digitale produkter.
- Interaction Design Foundation
- Nielsen Norman Group - UX Research and Articles
- Coursera - Interaction Design Specialization
Repository: fagskolenkristiania.github.io
- README.md: Forventet å inneholde informasjon om prosjektet (ikke tilgjengelig via API).
- Filer og mapper som sannsynligvis inneholder koden for en GitHub Pages-nettside.
- GitHub Pages: Forstå hvordan man kan bruke GitHub Pages til å hoste statiske nettsider direkte fra et GitHub-repository.
- HTML, CSS og JavaScript: Bruk disse teknologiene til å bygge og vedlikeholde en nettside.
- Versjonskontroll med Git: Lær hvordan man bruker Git for å administrere versjoner av koden og samarbeide med andre utviklere.
Repository: hello-world-2
- README.md: Forventet å inneholde informasjon om prosjektet (ikke tilgjengelig via API).
- Koden som sannsynligvis demonstrerer en "Hello, World!"-applikasjon.
- Grunnleggende Programmering: Forstå grunnleggende konsepter i programmering gjennom en enkel "Hello, World!"-applikasjon.
- Språkspesifikke Ferdigheter: Lær det grunnleggende i et spesifikt programmeringsspråk som brukes i prosjektet.
Repository: patchwork
- README.md: Forventet å inneholde informasjon om prosjektet (ikke tilgjengelig via API).
- Filer som sannsynligvis inneholder koden for et prosjekt relatert til "patchwork".
- Samarbeidsprosjekter: Lær hvordan man samarbeider om prosjekter ved hjelp av versjonskontrollsystemer som Git.
- Prosjektadministrasjon: Forstå hvordan man organiserer og administrerer kodeprosjekter.
Ved å utforske disse repositoryene og bruke de nevnte kildene, kan man få en dyp forståelse av ulike aspekter ved webutvikling, programmering, design og samarbeid i programvareprosjekter.
Repository: css-animated-sections
- .gitattributes: Fil som spesifiserer Git-attributter.
- LICENSE: Lisensfil for prosjektet.
- README.md: Kort beskrivelse av prosjektet.
- _config.yml: Konfigurasjonsfil.
- index.css: CSS-fil som inneholder stilregler for animasjonene.
- index.html: HTML-fil som viser hvordan animasjonene er implementert.
Innholdet i README.md-filen er veldig kort og gir kun en minimal beskrivelse:
# css-animated-sections
css hover animations
- CSS-animasjoner: Lær hvordan man bruker CSS for å lage animasjoner, spesielt hover-animasjoner.
- HTML-struktur: Forstå hvordan man strukturerer en webside for å inkludere og bruke CSS-filer.
-
Konfigurasjonsfiler: Lær hvordan man bruker konfigurasjonsfiler som
.gitattributes
og_config.yml
i et prosjekt.
- MDN Web Docs - CSS Animations
- W3Schools - CSS Animations
- CSS Tricks - A Complete Guide to CSS Animations
Repository: Produktnettside
- Diverse filer og mapper som sannsynligvis inneholder koden for en produktnettside.
- Webutvikling: Forstå grunnleggende webutviklingsteknikker som HTML, CSS og JavaScript.
- Responsivt design: Lær hvordan man lager nettsider som fungerer godt på ulike skjermstørrelser.
- Brukeropplevelse (UX): Forstå hvordan man designer en brukervennlig produktnettside.
- MDN Web Docs - Responsive Design
- A List Apart - Articles on Web Design
- W3Schools - HTML, CSS, JavaScript Tutorials
Repository: id-oppgavesett-04
- Diverse filer og mapper som sannsynligvis inneholder oppgaver og løsninger relatert til interaksjonsdesign.
- Interaksjonsdesign: Forstå hvordan man designer intuitive og effektive brukergrensesnitt.
- Brukertesting: Lær hvordan man utfører brukertesting for å forbedre designet basert på tilbakemeldinger.
- Prototyping: Forstå hvordan man lager prototyper av brukergrensesnitt.
- Interaction Design Foundation
- Nielsen Norman Group - UX Research
- Coursera - Interaction Design Specialization
Repository: id-04-t7
- Diverse filer og mapper som sannsynligvis inneholder oppgaver og løsninger relatert til interaksjonsdesign.
- Interaksjonsdesign: Forstå prinsipper for å designe brukergrensesnitt.
- Designverktøy: Lær å bruke verktøy for å lage og teste design.
- Evaluering av brukeropplevelse: Forstå hvordan man evaluerer og forbedrer brukeropplevelsen.
Repository: id-oppgavesett-05
- Diverse filer og mapper som sannsynligvis inneholder oppgaver og løsninger relatert til interaksjonsdesign.
- Interaksjonsdesign: Forstå hvordan man skaper intuitive brukeropplevelser.
- Iterativ designprosess: Lær hvordan man itererer over design for å forbedre det basert på brukertesting.
- Designmønstre: Forstå vanlige designmønstre og hvordan de kan anvendes i prosjekter.
Repository: id-oppgavesett-01
- Diverse filer og mapper som sannsynligvis inneholder oppgaver og løsninger relatert til interaksjonsdesign.
- Grunnleggende interaksjonsdesign: Forstå grunnleggende konsepter i interaksjonsdesign.
- Brukersentrert design: Lær hvordan man setter brukeren i sentrum av designprosessen.
- Prototyping og testing: Forstå hvordan man lager og tester prototyper.
- Interaction Design Foundation
- Nielsen Norman Group - UX Research
- Coursera - Interaction Design Specialization
Disse repositoryene gir en omfattende innsikt i ulike aspekter av webutvikling og interaksjonsdesign. Ved å utforske disse prosjektene og bruke de nevnte kildene, kan man få en solid forståelse av moderne webdesignteknikker, prinsipper for brukeropplevelse, og metoder for brukertesting og iterativ design.
Repository: portfolio
- .gitattributes: Fil som spesifiserer Git-attributter.
- .gitignore: Fil som spesifiserer hvilke filer og mapper som skal ignoreres av Git.
- LICENSE: Lisensfil for prosjektet.
- README.md: Kort beskrivelse av prosjektet.
- Diverse HTML-filer: Forskjellige prosjekter og sider som viser ulike design og funksjoner.
- js: Katalog som sannsynligvis inneholder JavaScript-filer.
- resources: Katalog for ressurser som bilder og andre mediefiler.
- style: Katalog for CSS-filer.
README.md-filen inneholder en kort velkomstmelding og en lenke til porteføljen:
# Portfolio
Welcome to Anna's Portfolio:
https://annamariabukalska.github.io/portfolio/
- Webdesign: Lær hvordan man designer og bygger en porteføljeside ved hjelp av HTML, CSS, og JavaScript.
- Brukeropplevelse (UX): Forstå hvordan man skaper en brukervennlig og visuelt tiltalende nettside.
- Responsivt design: Lær hvordan man gjør nettsiden tilpasset ulike enheter og skjermstørrelser.
- Git og GitHub: Forstå hvordan man bruker Git og GitHub for versjonskontroll og distribusjon av prosjekter.
- MDN Web Docs - HTML
- MDN Web Docs - CSS
- MDN Web Docs - JavaScript
- W3Schools - Web Development Tutorials
Repository: kunstplass
- Diverse filer og mapper som sannsynligvis inneholder kode og ressurser for et kunstprosjekt.
- Kreativ webutvikling: Forstå hvordan man bruker webteknologier for å skape interaktive kunstprosjekter.
- Bruk av multimedia: Lær hvordan man integrerer bilder, video og lyd i nettsider.
- JavaScript-animasjoner: Lær hvordan man bruker JavaScript for å lage interaktive og dynamiske brukeropplevelser.
Repository: plantmeg
- Diverse filer og mapper som sannsynligvis inneholder et prosjekt relatert til planteidentifikasjon eller -administrasjon.
- Webapplikasjonsutvikling: Forstå hvordan man bygger en webapplikasjon med frontend- og backend-komponenter.
- Datahåndtering: Lær hvordan man håndterer og presenterer data fra en database eller API.
- Brukergrensesnitt: Forstå hvordan man designer og implementerer et brukervennlig grensesnitt for en applikasjon.
Repository: tema-8
- Diverse filer og mapper som sannsynligvis inneholder oppgaver og løsninger relatert til tema 8 i en kursserie.
- Spesifikke kurskonsepter: Forstå de spesifikke konseptene og ferdighetene som dekkes i tema 8.
- Problemløsning: Lær hvordan man løser konkrete oppgaver og problemer relatert til temaet.
- Praktisk anvendelse: Forstå hvordan man anvender teoretisk kunnskap i praktiske prosjekter.
Repository: Multiplication
- Diverse filer og mapper som sannsynligvis inneholder et prosjekt relatert til multiplikasjon, muligens et læringsverktøy eller et spill.
- Interaktiv læring: Forstå hvordan man bygger interaktive læringsverktøy eller spill.
- Matematisk programmering: Lær hvordan man implementerer matematiske konsepter i kode.
- Brukerengasjement: Forstå hvordan man skaper engasjerende brukeropplevelser gjennom interaktivitet.
Repository: polarisering
- Diverse filer og mapper som sannsynligvis inneholder et prosjekt relatert til polarisering, muligens et vitenskapelig eller sosialt emne.
- Vitenskapelig programmering: Forstå hvordan man bruker programmering for å utforske vitenskapelige konsepter.
- Dataanalyse: Lær hvordan man analyserer og visualiserer data for å trekke konklusjoner.
- Tverrfaglig forskning: Forstå hvordan man kombinerer ulike fagområder i ett prosjekt.
Disse repositoryene gir en omfattende innsikt i ulike aspekter av webutvikling, interaktiv læring, dataanalyse og vitenskapelig forskning. Ved å utforske disse prosjektene og bruke de nevnte kildene, kan man få en solid forståelse av moderne webdesignteknikker, brukeropplevelse, interaktiv programmering, og dataanalyse.
Repository: git-1
- .gitattributes: Fil som spesifiserer Git-attributter.
- LICENSE: Lisensfil for prosjektet.
- README.md: Kort beskrivelse av prosjektet.
Innholdet i README.md-filen:
# git-1
Første github repository
- Grunnleggende Git-bruk: Forstå hvordan man oppretter og administrerer et Git-repository.
- Versjonskontroll: Lær hvordan man bruker Git til å holde styr på endringer i koden over tid.
- Lisensiering: Forstå viktigheten av lisensiering i programvareprosjekter.
Repository: justify-content
- Diverse filer som sannsynligvis inneholder eksempler på bruk av
justify-content
i CSS.
- CSS Flexbox: Forstå hvordan man bruker Flexbox-layout i CSS for å justere og fordele plass mellom elementer.
-
Justify-content: Lær hvordan man bruker
justify-content
-egenskapen til å justere hvordan innhold plasseres langs hovedaksen i en flex-container.
Repository: css-animated
- Diverse filer som sannsynligvis inneholder eksempler på CSS-animasjoner.
- CSS Animasjoner: Forstå hvordan man lager animasjoner ved hjelp av CSS.
-
Keyframes: Lær hvordan man bruker
@keyframes
-regler for å definere animasjonssekvenser. - Transisjoner og transformasjoner: Forstå hvordan man bruker CSS-transisjoner og transformasjoner for å skape glidende overganger og endringer i elementers tilstand.
- MDN Web Docs - CSS Animations
- CSS-Tricks - A Complete Guide to CSS Animations
- W3Schools - CSS Animations
Repository: Temaoppgave4
- Diverse filer og mapper som sannsynligvis inneholder oppgaver og løsninger relatert til tema 4 i en kursserie.
- Spesifikke kurskonsepter: Forstå de spesifikke konseptene og ferdighetene som dekkes i tema 4.
- Problemløsning: Lær hvordan man løser konkrete oppgaver og problemer relatert til temaet.
- Praktisk anvendelse: Forstå hvordan man anvender teoretisk kunnskap i praktiske prosjekter.
Repository: Oppgavesett-4
- Diverse filer og mapper som sannsynligvis inneholder oppgaver og løsninger relatert til oppgavesett 4.
- Problemløsning: Forstå hvordan man nærmer seg og løser spesifikke programmeringsoppgaver.
- Kodingsteknikker: Lær forskjellige teknikker og metoder for effektiv programmering.
- Konsolidering av ferdigheter: Forstå hvordan man anvender tidligere lærte konsepter i nye og mer komplekse situasjoner.
- LeetCode - For å øve på programmeringsoppgaver.
- HackerRank - For å øve på algoritme- og datastrukturproblemer.
- GeeksforGeeks - For dyptgående artikler og opplæringsprogrammer.
Repository: Oppgavesett-5
- Diverse filer og mapper som sannsynligvis inneholder oppgaver og løsninger relatert til oppgavesett 5.
- Problemløsning: Forstå hvordan man nærmer seg og løser spesifikke programmeringsoppgaver.
- Kodingsteknikker: Lær forskjellige teknikker og metoder for effektiv programmering.
- Konsolidering av ferdigheter: Forstå hvordan man anvender tidligere lærte konsepter i nye og mer komplekse situasjoner.
- LeetCode - For å øve på programmeringsoppgaver.
- HackerRank - For å øve på algoritme- og datastrukturproblemer.
- GeeksforGeeks - For dyptgående artikler og opplæringsprogrammer.
Disse repositoryene gir en omfattende innsikt i ulike aspekter av programmering, webdesign og problemløsning. Ved å utforske disse prosjektene og bruke de nevnte kildene, kan man få en solid forståelse av moderne webdesignteknikker, brukeropplevelse, interaktiv programmering, og dataanalyse.
Absolutt! Her er hvordan du kan lage disse Python-skriptene, sette opp et GitHub-repository, og forklare lisenskonseptet:
Script 1: Hash-generering
import hashlib
def hash_file(filename):
"""Hasher filen og lagrer hashen i en ny fil."""
hasher = hashlib.sha256()
with open(filename, "rb") as f:
for chunk in iter(lambda: f.read(4096), b""):
hasher.update(chunk)
hash_value = hasher.hexdigest()
with open(filename + ".hash", "w") as f:
f.write(hash_value)
print(f"Hash for {filename} lagret i {filename}.hash")
if __name__ == "__main__":
filename = input("Skriv inn filnavnet: ")
hash_file(filename)
Script 2: Hash-verifisering
import hashlib
def verify_hash(filename):
"""Verifiserer hashen til en fil mot en lagret hash-verdi."""
try:
with open(filename, "rb") as f, open(filename + ".hash", "r") as hash_file:
file_hash = hashlib.sha256(f.read()).hexdigest()
stored_hash = hash_file.read()
if file_hash == stored_hash:
print(f"Filen {filename} er ikke endret.")
else:
print(f"Filen {filename} er endret!")
except FileNotFoundError:
print(f"Hash-fil for {filename} ikke funnet.")
if __name__ == "__main__":
filename = input("Skriv inn filnavnet: ")
verify_hash(filename)
GitHub-instruksjoner
-
Opprett konto: Gå til https://github.com/ og registrer deg.
-
Nytt repository: Klikk på "+"-tegnet øverst til høyre og velg "New repository". Gi det et navn (f.eks., "hash-integritet-python").
-
Last opp koden:
- Enten: Bruk GitHubs webgrensesnitt for å laste opp filene direkte.
- Eller: Bruk Git på kommandolinjen (mer avansert):
git init git add . git commit -m "Første versjon" git remote add origin <din-repository-url> git push -u origin master
-
Velg lisens: Gå til "Settings" -> "Add a license". Velg en passende lisens (f.eks., MIT-lisensen).
-
Forklar lisensen: Lag en fil
hvorfor_denne_lisens.md
. Her kan du f.eks. skrive:## Hvorfor MIT-lisensen? MIT-lisensen er en permissiv åpen kildekode-lisens. Den gir brukere stor frihet til å bruke, modifisere og distribuere koden, både i åpne og proprietære prosjekter. **Viktige punkter:** * Tillater kommersiell bruk. * Krever at den originale lisensen og opphavsrettserklæringen inkluderes. * Gir ingen garantier. Vi valgte MIT-lisensen fordi vi ønsker at koden skal være så tilgjengelig og gjenbrukbar som mulig.
Lisensforklaring
En lisens er som en kontrakt mellom deg (utvikleren) og brukerne av koden din. Den definerer hva andre har lov til å gjøre med koden din (f.eks., bruke den, endre den, dele den) og hvilke betingelser som gjelder.
Det finnes mange forskjellige lisenser, hver med sine egne regler. Noen vanlige lisenser er:
- MIT: Veldig permissiv, tillater nesten all bruk.
- GPL: Krever at alle modifikasjoner deles under samme lisens (godt for åpen kildekode-samarbeid).
- Apache 2.0: Lik MIT, men med noen ekstra klausuler om patenter.
Det er viktig å velge en lisens som passer dine mål og verdier.
Gi meg beskjed hvis du vil ha hjelp med å velge en lisens eller trenger mer informasjon om hvordan du bruker Git!
Repository: Hash-gen-check
- LICENSE: Lisensfil for prosjektet.
- README.md: Beskrivelse av prosjektet.
- hash-comparator.py: Python-skript for å sammenligne hash-verdier.
- hash-generator3.py: Python-skript for å generere hash-verdier.
- hvorfor_denne_lisens.md: Fil som forklarer valg av lisens for prosjektet.
README.md-filen beskriver prosjektet som en løsning for å generere og sammenligne hash-verdier ved hjelp av Python. Innholdet i README.md:
# KS_ADMAT-Arbeidskrav4
Arbeidsmappe for Arbeidskrav 4, ADMAT, Fagskolen Innlandet
Hash-integritet med Python
1. Lag et script som leser innholdet i en fil og hasher innholdet ved hjelp av SHA256-algoritmen. Den må opprette en ny tekstfil og lagre hashen i den nye filen.
2. Lag et script som leser innholdet i en fil og de tilhørende hash-verdiene, og sammenligner disse verdiene. Hvis de er like, skal den skrive ut at filen ikke er endret. Hvis de er ulike, skal den skrive ut at filen er endret.
3. Opprett GitHub-konto
4. Lag et offentlig repository.
5. Last opp koden.
6. Koble koden din til en lisens.
7. Lag en "hvorfor_denne_lisens.md" i repo'et hvor dere forklarer med egne ord hvordan lisensen fungerer og hva den inneholder.
8. Lever linken til repository.
- Hashing med Python: Lær hvordan man bruker Python til å generere og sammenligne hash-verdier ved hjelp av SHA256-algoritmen.
- Filhåndtering i Python: Forstå hvordan man leser og skriver filer i Python.
- Git og GitHub: Lær hvordan man bruker Git for versjonskontroll og hvordan man publiserer kode på GitHub.
- Lisensiering av programvare: Forstå viktigheten av å velge riktig lisens for et prosjekt og hvordan man dokumenterer valget.
- Python Documentation - hashlib
- Real Python - Working with Files in Python
- Pro Git Book
- Choose a License
Repository: tverrfaglig-prosjekt
- Diverse filer og mapper som sannsynligvis inneholder koden og dokumentasjonen for et tverrfaglig prosjekt.
- Tverrfaglige ferdigheter: Forstå hvordan man kombinerer kunnskap fra forskjellige fagområder i ett prosjekt.
- Prosjektledelse: Lær hvordan man organiserer og administrerer et prosjekt fra start til slutt.
- Samarbeid og kommunikasjon: Forstå viktigheten av samarbeid og effektiv kommunikasjon i tverrfaglige team.
- Teknisk dokumentasjon: Lær hvordan man dokumenterer prosjekter på en måte som er forståelig for alle interessenter.
Disse repositoryene gir en omfattende innsikt i ulike aspekter av programmering, prosjektledelse og samarbeid. Ved å utforske disse prosjektene og bruke de nevnte kildene, kan man få en solid forståelse av moderne programmeringsteknikker, prosjektledelsesmetoder, og hvordan man effektivt samarbeider i tverrfaglige team.
Repository: DecAPI
- .docker: Inneholder Docker-relaterte filer.
- .dockerignore: Fil som spesifiserer hvilke filer og mapper som skal ignoreres av Docker.
- .editorconfig: Konfigurasjonsfil for editorinnstillinger.
- .env.example: Eksempelfil for miljøvariabler.
- .gitattributes: Fil som spesifiserer Git-attributter.
- .github: Inneholder GitHub Actions arbeidsflyter.
- .gitignore: Fil som spesifiserer hvilke filer og mapper som skal ignoreres av Git.
- Dockerfile: Inneholder instruksjoner for å bygge en Docker-bilde.
- LICENSE: Lisensfil for prosjektet.
- composer.json: Definerer PHP-avhengigheter for prosjektet.
- composer.lock: Låsefil for PHP-avhengigheter.
- gulpfile.js: Konfigurasjonsfil for Gulp, en JavaScript-oppgavekjører.
- package.json: Definerer JavaScript-avhengigheter for prosjektet.
- phpunit.xml: Konfigurasjonsfil for PHPUnit, et enhetstestverktøy for PHP.
- server.php: Hovedfil for å kjøre serveren.
- Diverse mapper som
app
,bootstrap
,config
,database
,public
,resources
,routes
,storage
,tests
som inneholder kildekoden og konfigurasjonsfiler for prosjektet.
README.md gir en oversikt over prosjektet og instruksjoner for hvordan man setter opp og bruker det. Prosjektet DecAPI er en API-tjeneste som ble designet for å håndtere forespørsler til eksterne API-er, spesielt for Twitch-chatbots.
- API-utvikling: Forstå hvordan man utvikler og vedlikeholder en API-tjeneste.
- PHP-utvikling: Lær hvordan man bruker PHP til å bygge webapplikasjoner og API-tjenester.
- Bruk av Laravel: Forstå hvordan Laravel-rammeverket brukes til å strukturere og organisere et webprosjekt.
- Docker: Lær hvordan man bruker Docker for å containerisere applikasjoner, noe som gjør dem enkle å distribuere og skalere.
- Enhetstesting med PHPUnit: Forstå hvordan man skriver og kjører enhetstester i PHP for å sikre at koden fungerer som forventet.
- Kontinuerlig integrasjon med GitHub Actions: Lær hvordan man setter opp CI/CD-rørledninger for automatisk testing og distribusjon av koden.
- Laravel Documentation
- PHP: The Right Way
- Docker Documentation
- PHPUnit Documentation
- GitHub Actions Documentation
Repository: DecAPI-Docs
- index.html: Hovedfilen for dokumentasjonsnettstedet.
- css: Katalog som sannsynligvis inneholder stilfiler (CSS).
- js: Katalog som sannsynligvis inneholder JavaScript-filer.
- assets: Katalog som sannsynligvis inneholder bilder og andre statiske ressurser.
- Dokumentasjonsoppsett: Forstå hvordan man setter opp og vedlikeholder dokumentasjon for et API.
- HTML og CSS: Lær hvordan man strukturerer og stiler en dokumentasjonsside.
- JavaScript: Forstå hvordan man bruker JavaScript for å forbedre interaktiviteten på en dokumentasjonsside.
Repository: DecAPI-Docs-V2
- index.html: Hovedfilen for den andre versjonen av dokumentasjonsnettstedet.
- css: Katalog som sannsynligvis inneholder stilfiler (CSS).
- js: Katalog som sannsynligvis inneholder JavaScript-filer.
- assets: Katalog som sannsynligvis inneholder bilder og andre statiske ressurser.
- Forbedret dokumentasjon: Forstå hvordan man kan iterere og forbedre dokumentasjon basert på tilbakemeldinger og behov.
- Responsivt design: Lær hvordan man gjør dokumentasjonssider responsivt for ulike enheter.
- Forbedret brukeropplevelse (UX): Forstå hvordan man forbedrer brukeropplevelsen gjennom bedre design og interaktivitet.
Ved å utforske disse repositoryene og bruke de nevnte kildene, kan man få en grundig forståelse av moderne API-utvikling, dokumentasjonspraksis, og webdesignteknikker.
Repository: HomeLoanCalculator
- .gitignore: Fil som spesifiserer hvilke filer og mapper som skal ignoreres av Git.
- LICENSE: Lisensfil for prosjektet.
- README.md: Beskrivelse av prosjektet.
- package-lock.json: Låsefil for npm-pakker.
- package.json: Definerer prosjektets JavaScript-avhengigheter.
- public: Katalog som sannsynligvis inneholder statiske ressurser som HTML og bilder.
- src: Katalog som inneholder kildekoden for prosjektet.
- tsconfig.json: TypeScript-konfigurasjonsfil.
README.md gir en oversikt over prosjektet og instruksjoner for hvordan man setter opp og kjører det. Prosjektet er en boliglånskalkulator bygget med Create React App.
# Getting Started with Create React App
This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
## Available Scripts
In the project directory, you can run:
### `npm start`
Runs the app in the development mode.\
Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
The page will reload if you make edits.\
You will also see any lint errors in the console.
### `npm test`
Launches the test runner in the interactive watch mode.\
See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
### `npm run build`
Builds the app for production to the `build` folder.\
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.\
Your app is ready to be deployed!
See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
### `npm run eject`
**Note: this is a one-way operation. Once you `eject`, you can’t go back!**
If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc.) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own.
You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However, we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.
## Learn More
You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
To learn React, check out the [React documentation](https://reactjs.org/).
- React-utvikling: Lær hvordan man bygger interaktive brukergrensesnitt med React.
- TypeScript: Forstå hvordan man bruker TypeScript for å skrive typesikre JavaScript-applikasjoner.
- npm: Lær hvordan man bruker npm til å administrere avhengigheter og kjøre skript.
- Bygg og distribusjon: Forstå hvordan man bygger en produksjonsklar applikasjon og distribuerer den.
- Testing: Lær hvordan man skriver og kjører tester for å sikre at applikasjonen fungerer som forventet.
Repository: Chanterelle
- Diverse filer og mapper som sannsynligvis inneholder koden og ressursene for et prosjekt relatert til kantarellsopp.
- Naturvitenskapelig programmering: Forstå hvordan man bruker programmering for å lage verktøy eller applikasjoner relatert til biologi eller økologi.
- Datahåndtering: Lær hvordan man samler inn, organiserer og analyserer data relatert til naturvitenskap.
- Bilderegistrering: Forstå hvordan man kan bruke bildedata i programmeringsprosjekter, for eksempel til identifisering av sopparter.
- Python for Data Science Handbook
- Introduction to Computer Vision
- Coursera - Introduction to Data Science
Repository: SalesBot
- Diverse filer og mapper som sannsynligvis inneholder koden og ressursene for en salgsbot.
- Chatbot-utvikling: Forstå hvordan man bygger en chatbot for salg eller kundeservice.
- Natural Language Processing (NLP): Lær hvordan man bruker NLP for å forstå og generere menneskelig språk i en chatbot.
- Integrasjon med plattformer: Forstå hvordan man integrerer en chatbot med ulike plattformer som Messenger, Slack, eller egne nettsider.
- Dialogflow Documentation
- Microsoft Bot Framework Documentation
- Coursera - Natural Language Processing
Repository: ScienceLearn
- Diverse filer og mapper som sannsynligvis inneholder koden og ressursene for et læringsverktøy innen naturvitenskap.
- E-læring: Forstå hvordan man bygger verktøy og applikasjoner for nettbasert læring.
- Interaktive læringsmoduler: Lær hvordan man lager interaktive moduler som gjør det enklere å forstå komplekse vitenskapelige konsepter.
- Brukeropplevelse (UX) i læring: Forstå hvordan man designer brukeropplevelser som er pedagogisk effektive og engasjerende.
- Khan Academy - Computer Programming
- Coursera - Online Learning and Development
- edX - Instructional Design and Technology
Ved å utforske disse repositoryene og bruke de nevnte kildene, kan man få en omfattende forståelse av ulike aspekter av webutvikling, datavitenskap, chatbot-utvikling, og e-læring.
Repository: temaoppgave01
- .DS_Store: Systemfil opprettet av macOS som inneholder metadata om mappen.
- README.md: Kort beskrivelse av prosjektet.
- aktuelt.html: HTML-fil for "aktuelt"-siden.
- img: Katalog som inneholder bilder brukt i prosjektet.
- index.html: HTML-fil for hovedsiden.
- partiprogram.html: HTML-fil for partiprogram-siden.
- politikk.html: HTML-fil for politikk-siden.
- stylesheets: Katalog som inneholder CSS-stilark.
- video: Katalog som sannsynligvis inneholder videofiler brukt i prosjektet.
Innholdet i README.md-filen:
# temaoppgave01
Temaoppgave 1 i Frontend-utvikling.
- HTML-struktur: Forstå hvordan man strukturerer en webside med HTML.
- CSS-styling: Lær hvordan man bruker CSS til å style HTML-elementer og lage en visuelt tiltalende nettside.
- Bilde- og videohåndtering: Forstå hvordan man integrerer bilder og videoer i en webside.
- Versjonskontroll med Git: Lær hvordan man bruker Git for å administrere versjoner av koden og samarbeide med andre utviklere.
Repository: frontend-tema02
- Diverse filer og mapper som sannsynligvis inneholder oppgaver og løsninger relatert til tema 2 i en kursserie om frontend-utvikling.
- Videregående HTML og CSS: Forstå mer avanserte konsepter i HTML og CSS, inkludert responsive design og CSS grid/flexbox.
- JavaScript-grunnleggende: Lær hvordan man bruker JavaScript for å gjøre nettsider interaktive.
- Frontend-rammeverk: Få en introduksjon til populære frontend-rammeverk som React, Vue eller Angular.
- MDN Web Docs - JavaScript
- CSS-Tricks - A Complete Guide to Flexbox
- CSS-Tricks - A Complete Guide to Grid
- React Documentation
Repository: oppgavesett02
- Diverse filer og mapper som sannsynligvis inneholder oppgaver og løsninger relatert til oppgavesett 2.
- Problemløsning med JavaScript: Forstå hvordan man bruker JavaScript for å løse spesifikke oppgaver og problemer.
- DOM-manipulering: Lær hvordan man bruker JavaScript til å manipulere Document Object Model (DOM) for å oppdatere innholdet på en webside dynamisk.
- Event-håndtering: Forstå hvordan man håndterer brukerinteraksjoner på en webside ved hjelp av JavaScript-events.
Repository: skjemaer
- Diverse filer og mapper som sannsynligvis inneholder koden og ressursene for et prosjekt relatert til skjemaer.
- HTML-skjemaer: Forstå hvordan man oppretter og bruker HTML-skjemaer for å samle inn data fra brukere.
- Validering av skjemaer: Lær hvordan man validerer data i skjemaer både på klientsiden (med JavaScript) og på serversiden.
- Brukeropplevelse (UX) med skjemaer: Forstå hvordan man designer skjemaer som er brukervennlige og intuitive.
Repository: oppgavesett01
- Diverse filer og mapper som sannsynligvis inneholder oppgaver og løsninger relatert til oppgavesett 1.
- Grunnleggende webutvikling: Forstå grunnleggende konsepter i HTML, CSS, og JavaScript.
- Introduksjon til programmering: Lær grunnleggende programmeringsprinsipper og -teknikker ved hjelp av JavaScript.
- Koding og debugging: Forstå hvordan man skriver, tester, og feilsøker kode i et webprosjekt.
Repository: oppgavesett03
- Diverse filer og mapper som sannsynligvis inneholder oppgaver og løsninger relatert til oppgavesett 3.
- Videregående JavaScript: Forstå mer avanserte JavaScript-konsepter som asynkron programmering, løfter (promises), og moduler.
- Frontend-utvikling: Lær hvordan man bygger mer komplekse og interaktive brukergrensesnitt med JavaScript og eventuelt et frontend-rammeverk.
- Prosjektorganisering: Forstå hvordan man organiserer og strukturerer et større webprosjekt.
Ved å utforske disse repositoryene og bruke de nevnte kildene, kan man få en omfattende forståelse av ulike aspekter av webutvikling, fra grunnleggende HTML og CSS til avansert JavaScript og bruk av frontend-rammeverk.
Repository: frontend-test
- README.md: Kort beskrivelse av prosjektet.
Innholdet i README.md-filen:
# frontend-test
tester ut git og github
- Grunnleggende Git-bruk: Forstå hvordan man oppretter og administrerer et Git-repository.
- Versjonskontroll: Lær hvordan man bruker Git til å holde styr på endringer i koden over tid.
- Introduksjon til GitHub: Forstå hvordan man bruker GitHub til å samarbeide og dele kode.
Repository: skjemaer
- Diverse filer og mapper som sannsynligvis inneholder koden og ressursene for et prosjekt relatert til skjemaer.
- HTML-skjemaer: Forstå hvordan man oppretter og bruker HTML-skjemaer for å samle inn data fra brukere.
- Validering av skjemaer: Lær hvordan man validerer data i skjemaer både på klientsiden (med JavaScript) og på serversiden.
- Brukeropplevelse (UX) med skjemaer: Forstå hvordan man designer skjemaer som er brukervennlige og intuitive.
Repository: tema-1
- Diverse filer og mapper som sannsynligvis inneholder oppgaver og løsninger relatert til tema 1 i en kursserie.
- Grunnleggende webutvikling: Forstå grunnleggende konsepter i HTML, CSS, og JavaScript.
- Introduksjon til programmering: Lær grunnleggende programmeringsprinsipper og -teknikker ved hjelp av JavaScript.
- Koding og debugging: Forstå hvordan man skriver, tester, og feilsøker kode i et webprosjekt.
Repository: frontend-tema2-dag1
- Diverse filer og mapper som sannsynligvis inneholder oppgaver og løsninger relatert til dag 1 av tema 2 i en kursserie om frontend-utvikling.
- Videregående HTML og CSS: Forstå mer avanserte konsepter i HTML og CSS, inkludert responsive design og CSS grid/flexbox.
- JavaScript-grunnleggende: Lær hvordan man bruker JavaScript for å gjøre nettsider interaktive.
- Frontend-rammeverk: Få en introduksjon til populære frontend-rammeverk som React, Vue eller Angular.
- MDN Web Docs - JavaScript
- CSS-Tricks - A Complete Guide to Flexbox
- CSS-Tricks - A Complete Guide to Grid
- React Documentation
Repository: krli008-frontend-tema2-dag2
- Diverse filer og mapper som sannsynligvis inneholder oppgaver og løsninger relatert til dag 2 av tema 2 i en kursserie om frontend-utvikling.
- Videregående JavaScript: Forstå mer avanserte JavaScript-konsepter som asynkron programmering, løfter (promises), og moduler.
- Frontend-utvikling: Lær hvordan man bygger mer komplekse og interaktive brukergrensesnitt med JavaScript og eventuelt et frontend-rammeverk.
- Prosjektorganisering: Forstå hvordan man organiserer og strukturerer et større webprosjekt.
Repository: Tema-2-felles-oppgave
- Diverse filer og mapper som sannsynligvis inneholder koden og ressursene for en felles oppgave relatert til tema 2 i en kursserie om frontend-utvikling.
- Samarbeid i webutvikling: Forstå hvordan man samarbeider om et prosjekt ved hjelp av verktøy som Git og GitHub.
- Frontend-utvikling: Lær hvordan man bygger komplekse brukergrensesnitt og applikasjoner med HTML, CSS, og JavaScript.
- Prosjektledelse: Forstå hvordan man planlegger, organiserer og gjennomfører et webutviklingsprosjekt som et team.
Ved å utforske disse repositoryene og bruke de nevnte kildene, kan man få en omfattende forståelse av ulike aspekter av webutvikling, fra grunnleggende HTML og CSS til avansert JavaScript og bruk av frontend-rammeverk. Man lærer også viktige prinsipper for samarbeid og prosjektledelse i programvareutvikling.
Let's dive deeper into the repositories listed:
Overview: This repository is designed to provide a RESTful API for renewable energy data. The API allows users to query information about various renewable energy sources, their statistics, and usage.
Key Learning Points:
- RESTful API Design: Understanding how to design and implement a RESTful API.
- Data Handling: Managing and querying renewable energy data.
- API Endpoints: Setting up different endpoints for various data retrieval purposes.
Online Resources:
- RESTful Web Services - Tutorialspoint
- What is a REST API? - restfulapi.net
2. WarGames
Overview: This repository contains a project named "WarGames" which likely simulates or models aspects of warfare, strategy, or conflict scenarios. The exact details couldn't be fetched.
Key Learning Points:
- Simulation and Modeling: Techniques for creating simulations.
- Game Development: Understanding the basics of game logic and design.
Online Resources:
- Game Development Fundamentals - Coursera
- Introduction to Simulation - AnyLogic
Overview: This project is a custom search engine built with Rust. It processes HTML files, tokenizes the content, and calculates TF-IDF scores to determine the relevance of documents based on search terms.
Key Learning Points:
- Rust Programming: Learning Rust for building efficient and safe systems.
- Search Engine Fundamentals: Understanding the basics of search engines, including indexing and ranking.
- TF-IDF: Learning about Term Frequency-Inverse Document Frequency and its application in information retrieval.
Online Resources:
- Rust Programming Language - Rust Official Site
- How Search Engines Work - HowStuffWorks
- TF-IDF and Its Applications - GeeksforGeeks
Overview: This repository is for a server application using OpenCV, an open-source computer vision library. It is likely designed for processing images or video feeds and performing various computer vision tasks.
Key Learning Points:
- Computer Vision: Understanding the principles and applications of computer vision.
- OpenCV: Learning how to use the OpenCV library for image and video processing.
- Server-Client Architecture: Implementing a server that handles computer vision tasks.
Online Resources:
- OpenCV Documentation - OpenCV.org
- Introduction to Computer Vision - Coursera
Overview: This repository contains the source code for a website project. It likely includes various frontend and backend components, possibly for a community or educational initiative.
Key Learning Points:
- Web Development: Building and maintaining websites.
- Frontend Technologies: Learning HTML, CSS, and JavaScript.
- Backend Integration: Understanding how to connect frontend with backend services.
Online Resources:
- Mozilla Web Development - MDN Web Docs
- Full-Stack Web Development - freeCodeCamp
These repositories collectively offer a diverse set of learning opportunities, from RESTful API design and game development to search engine implementation, computer vision, and web development. Exploring these repositories will provide practical experience and enhance understanding of these topics.
Repository: Project-in-Object-Oriented-Programming
- DELTAGERE.DTA: Datafil som sannsynligvis inneholder informasjon om deltagere.
- GRENER.DTA: Datafil som sannsynligvis inneholder informasjon om grener eller kategorier.
- ListTool2B.cpp: Implementasjonsfil for listeverktøy.
- ListTool2B.h: Header-fil for listeverktøy.
- MEDALJER.DTA: Datafil som sannsynligvis inneholder informasjon om medaljer.
- NASJONER.DTA: Datafil som sannsynligvis inneholder informasjon om nasjoner.
- POENG.DTA: Datafil som sannsynligvis inneholder informasjon om poeng.
- README.md: Beskrivelse av prosjektet.
- const.h: Header-fil som sannsynligvis inneholder konstante definisjoner.
- deltager.cpp: Implementasjonsfil for deltager-klassen.
- deltager.h: Header-fil for deltager-klassen.
- deltagere.cpp: Implementasjonsfil for deltagere-klassen.
- deltagere.h: Header-fil for deltagere-klassen.
- enum.h: Header-fil som sannsynligvis inneholder enums brukt i prosjektet.
- funksjoner.cpp: Implementasjonsfil for funksjoner.
- funksjoner.h: Header-fil for funksjoner.
- gren.cpp: Implementasjonsfil for gren-klassen.
- gren.h: Header-fil for gren-klassen.
- grener.cpp: Implementasjonsfil for grener-klassen.
- grener.h: Header-fil for grener-klassen.
- main.cpp: Hovedprogrammet som sannsynligvis starter applikasjonen.
- medaljer.cpp: Implementasjonsfil for medaljer-klassen.
- medaljer.h: Header-fil for medaljer-klassen.
- nasjon.cpp: Implementasjonsfil for nasjon-klassen.
- nasjon.h: Header-fil for nasjon-klassen.
- nasjoner.cpp: Implementasjonsfil for nasjoner-klassen.
- nasjoner.h: Header-fil for nasjoner-klassen.
- ovelse.cpp: Implementasjonsfil for øvelse-klassen.
- ovelse.h: Header-fil for øvelse-klassen.
- poeng.cpp: Implementasjonsfil for poeng-klassen.
- poeng.h: Header-fil for poeng-klassen.
- statestikk.cpp: Implementasjonsfil for statistikk.
- statestikk.h: Header-fil for statistikk.
Innholdet i README.md-filen, oversatt til klartekst:
# Gruppe03
# Medlemmer:
* Per-Kristian Kongelf Buer
* [email protected] / [email protected]
* Telefon: 90923237
* Martin Brødalen
* [email protected]
* Telefon: 46917422
- Objektorientert programmering (OOP): Forstå prinsippene og anvendelsene av OOP, inkludert klasser, objekter, arv, og polymorfisme.
- C++ Programmering: Lær hvordan man bruker C++ til å bygge komplekse applikasjoner.
- Datahåndtering: Forstå hvordan man strukturerer og håndterer data ved hjelp av filer og dataobjekter.
- Modulær Programmering: Lær hvordan man deler opp koden i moduler for bedre vedlikeholdbarhet og gjenbrukbarhet.
- Implementasjon av algoritmer: Forstå hvordan man implementerer og bruker ulike algoritmer i C++.
- C++ Documentation
- Object-Oriented Programming with C++ by E Balagurusamy
- Learn C++
- GeeksforGeeks - Object Oriented Programming
- Udemy - C++ Tutorial for Complete Beginners
Hvis du ønsker å gå dypere inn i de andre repositoryene som du har nevnt, gi beskjed om hvilket repository du vil utforske neste gang, så kan vi dykke dypt inn i det også.
Repository: marketplace-celo
- .gitignore: Fil som spesifiserer hvilke filer og mapper som skal ignoreres av Git.
- LICENSE: Lisensfil for prosjektet.
- README.md: Beskrivelse av prosjektet.
- contract: Katalog som inneholder smarte kontrakter for Celo blockchain.
- index.js: Hovedfil for JavaScript-koden.
- package-lock.json: Låsefil for npm-pakker.
- package.json: Definerer prosjektets JavaScript-avhengigheter.
- public: Katalog som sannsynligvis inneholder offentlige ressurser som HTML-filer.
- src: Katalog som inneholder kildekoden for prosjektet.
- webpack.config.js: Konfigurasjonsfil for Webpack, en JavaScript-modulbunt.
Innholdet i README.md-filen:
# Marketplace - Celo Smart Contract
A Marketplace contract for the Celo Blockchain
Celo: [docs.celo.org/welcome](https://docs.celo.org/welcome)
Build on Celo: [docs.celo.org/developer-guide/overview](https://docs.celo.org/developer-guide/overview)
Contract deployed with [remix.ethereum.org](https://remix.ethereum.org/)
## How to interact with this contract
Follow the steps below before you go to [marketplace-celo.herokuapp.com](https://marketplace-celo.herokuapp.com/) (deployed at heroku) to interact with the contract.
1. Install the [CeloExtensionWallet](https://chrome.google.com/webstore/detail/celoextensionwallet/kkiompjemlcfhjinhjeklibbgbakjcnc?hl=en) from the Google Chrome Store.
2. Create a wallet.
3. Go to [celo.org/developers/faucet](https://celo.org/developers/faucet) and get some tokens for the Alfajores testnet.
4. Switch to the Alfajores testnet in the CeloExtensionWallet.
5. Try to add or buy a product at [marketplace-celo.herokuapp.com](https://marketplace-celo.herokuapp.com/).
## Deployed Contract
Deployed at the Alfajores testnet with contract address [0xf4b26aead8fcaf64b87c9981e34b17e6aad9bb6](https://alfajores-blockscout.celo-testnet.org/address/0xf4b26aead8fcaf64b87c9981e34b17e6aad9bb6/transactions)
Transaction: [0xb8c30f168815a1d582947682eb66c5131f4824d061e17f632181471c7d049de6](https://alfajores-blockscout.celo-testnet.org/tx/0xb8c30f168815a1d582947682eb66c5131f4824d061e17f632181471c7d049de6/internal-transactions)
## Run locally
```bash
npm install
npm run dev
App should now be running at http://localhost:3000/.
npm run build
#### Hva man kan lære seg
1. **Blockchain-utvikling med Celo**: Forstå hvordan man utvikler og implementerer smarte kontrakter på Celo blockchain.
2. **Interaksjon med smarte kontrakter**: Lær hvordan man interagerer med smarte kontrakter ved hjelp av en webapplikasjon.
3. **Bruk av Web3-teknologi**: Forstå hvordan man bruker Web3.js til å koble frontend-applikasjoner til en blockchain.
4. **Bruk av Celo Wallet**: Lær hvordan man setter opp og bruker CeloExtensionWallet for å håndtere transaksjoner på Celo blockchain.
5. **Webpack-konfigurasjon**: Forstå hvordan man bruker Webpack til å bunte JavaScript-moduler.
### Kilder på nettet for dypere forståelse
- [Celo Documentation](https://docs.celo.org/)
- [Ethereum Smart Contract Development](https://soliditylang.org/)
- [Web3.js Documentation](https://web3js.readthedocs.io/)
- [Webpack Documentation](https://webpack.js.org/)
---
### Neste skritt
Hvis du ønsker å gå dypere inn i de andre repositoryene som du har nevnt, gi beskjed om hvilket repository du vil utforske neste gang, så kan vi dykke dypt inn i det også.