vault backup: 2024-01-25 14:02:02

This commit is contained in:
2024-01-25 14:02:03 +00:00
parent c09a4d605d
commit 14b75ba16c
32 changed files with 19979 additions and 26 deletions

View File

@@ -21,7 +21,7 @@
"state": {
"type": "markdown",
"state": {
"file": "Semester 2/Computer Systems Internals & Linux/Week 1/Week 2 Computer Systems Internals.md",
"file": "Semester 2/HCI/Week 2/Week 2 Human Computer Interfaces.md",
"mode": "source",
"source": false
}
@@ -95,7 +95,7 @@
"state": {
"type": "backlink",
"state": {
"file": "Semester 2/Computer Systems Internals & Linux/Week 1/Week 2 Computer Systems Internals.md",
"file": "Semester 2/HCI/Week 2/Week 2 Human Computer Interfaces.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
@@ -112,7 +112,7 @@
"state": {
"type": "outgoing-link",
"state": {
"file": "Semester 2/Computer Systems Internals & Linux/Week 1/Week 2 Computer Systems Internals.md",
"file": "Semester 2/HCI/Week 2/Week 2 Human Computer Interfaces.md",
"linksCollapsed": false,
"unlinkedCollapsed": true
}
@@ -135,7 +135,7 @@
"state": {
"type": "outline",
"state": {
"file": "Semester 2/Computer Systems Internals & Linux/Week 1/Week 2 Computer Systems Internals.md"
"file": "Semester 2/HCI/Week 2/Week 2 Human Computer Interfaces.md"
}
}
},
@@ -177,29 +177,38 @@
},
"active": "13f4c5e19c9ab3c8",
"lastOpenFiles": [
"Semester 2/Programming 2/Week 2/Week 2 Programming 2.md",
"Semester 2/Database Systems/Week 2/Week 2 Database Systems.md",
"Semester 2/HCI/Week 2/Week 2 Human Computer Interfaces.md",
"Semester 2/Computer Systems Internals & Linux/Week 2/media/geese_honk_on_public_farm_with_people_in_background_uk.mp3",
"Semester 2/Computer Systems Internals & Linux/Week 2/media/freethunderstormtimelapse.mov",
"Semester 2/Computer Systems Internals & Linux/Week 2/media/freerometrevifountain.mov",
"Semester 2/Computer Systems Internals & Linux/Week 2/media/freeroadrushtimelapse.mov",
"Semester 2/Computer Systems Internals & Linux/Week 2/media/freeimage-7063371.jpg",
"Semester 2/Computer Systems Internals & Linux/Week 2/media/freeimage-5931627.jpg",
"Semester 2/Computer Systems Internals & Linux/Week 2/media/freeimage-216999.jpg",
"Semester 2/Computer Systems Internals & Linux/Week 2/media/freeimage-1967619.jpg",
"Semester 2/Computer Systems Internals & Linux/Week 2/media/freeimage-1816737.jpg",
"Semester 2/Computer Systems Internals & Linux/Week 2/media/footsteps_forest_01.mp3",
"Semester 2/Computer Systems Internals & Linux/Week 2/media/firework_fountain_sparks_crackle.mp3",
"Semester 2/Computer Systems Internals & Linux/Week 2/media/dentist_drill_working_on_tooth.mp3",
"Semester 2/Computer Systems Internals & Linux/Week 2/media/car_drive_on_wet_motorway_at_60mph_car_stops_at_end_daewoo_nexia_automatic.mp3",
"Semester 2/Computer Systems Internals & Linux/Week 2/media/134517847.mp4",
"Semester 2/Computer Systems Internals & Linux/Week 2/media/112707307.mp4",
"images/Pasted image 20240123164006.png",
"images/Pasted image 20240123163911.png",
"Semester 2/Database Systems/Week 1/Week 1 Database Systems.md",
"Semester 1/Database Systems/Week 10/Week 10 Database Systems.md",
"Semester 2/Computer Systems Internals & Linux/Week 1/Week 2 Computer Systems Internals.md",
"Semester 2/Programming 2/Week 2/Week 2 Programming 2.md",
"Semester 2/Programming 2/Week 1/Week 1 Programming 2.md",
"Semester 2/Programming 2/README.md",
"Semester 2/HCI/README.md",
"Semester 2/Database Systems/README.md",
"Semester 2/Computer Systems Internals & Linux/README.md",
"images.md",
"Semester 2/Database Systems/Week 1/Week 1 Database Systems.md",
"Semester 2/HCI/Week 2",
"Semester 2/HCI",
"Semester 2/Programming 2/Week 2",
"Semester 2/Programming 2/Week 1/java-apps/HelloWorld/HelloWorldApp.class",
"Semester 2/Programming 2/Week 1/java-apps/HelloWorld/start.sh",
"Semester 2/Programming 2/Week 1/java-apps/HelloWorld/HelloWorldApp.java",
"Semester 2/Programming 2/Week 1/java-apps/HelloWorld",
"Semester 2/Programming 2/Week 1/java-apps",
"Semester 2/Programming 2/Week 1/zoo-io-v3/ZooApp.java#",
"Semester 2/Programming 2/Week 1/zoo-io-v3/__SHELL31.class",
"Semester 2/Computer Systems Internals & Linux/Week 1/workshop/testdir/test.md",
"Semester 2/Computer Systems Internals & Linux/Week 1/Week 1 Computer Systems Internals.md",
"Semester 1/Database Systems/Week 11/Week 11 Database Systems.md",
"Semester 1/Database Systems/Week 10/Week 10 Database Systems.md",
"Semester 1/Database Systems/Assignment/Querying Database.md",
"README.md",
"2023-10-31.md",
@@ -207,22 +216,13 @@
"Semester 1/Web Development and HCI/Assignment 1/src/images/proxmox-03.jpg",
"Semester 1/Web Development and HCI/Assignment 1/src/images/proxmox-04.jpg",
"Web Development and HCI/Assignment 1/src/images/Screenshot from 2023-12-07 18-29-51.png",
"Semester 1/Web Development and HCI/Assignment 1/src/images/proxmox-02.jpg",
"Web Development and HCI/Assignment 1/src/images/Screenshot from 2023-12-07 17-29-53.png",
"Web Development and HCI/Assignment 1/src/images/proxmox-02.png",
"Web Development and HCI/Assignment 1/src/images/Screenshot from 2023-12-07 16-49-07.png",
"Semester 1/Web Development and HCI/Assignment 1/src/images/proxmox-01.jpg",
"Semester 1/Database Systems/Week 9/Week 9 Database Systems.md",
"Semester 1/Database Systems/Assignment/ERD.png",
"Semester 1/Database Systems/Week 8/Week 8 Database Systems.md",
"Semester 1/Database Systems/Week 7/Week 7 Database Systems.md",
"Semester 1/Database Systems/Week 5/Week 5 Database Systems.md",
"Semester 1/Database Systems/Week 6/Week 6 Database Systems.md",
"Semester 1/Database Systems/Assignment/Relational Model.md",
"Semester 1/Database Systems/Assignment/ER Diagram.md",
"Semester 1/Database Systems/Assignment/Populating Database.md",
"Semester 1/Database Systems/Assignment/postgre Compatible.md",
"images/Pasted image 20231204191255.png",
"Database Systems/Untitled.canvas",
"Untitled 1.canvas",
"Untitled.canvas"

View File

@@ -0,0 +1,12 @@
#!/bin/bash
if [ $# -ne 1 ]; then
echo You need to give just one argument
elif [ -d "$1" ]; then
echo Deleting directory \"$1\"
mv "$1" ~/wastebasket/
elif [ -f "$1" ]; then
echo Deleting file \"$1\"
mv "$1" ~/wastebasket/
else
echo \"$1\" does not exist
fi

View File

@@ -0,0 +1,18 @@
#!/bin/bash
if [ $# -ne 1 ]; then
echo You need to give just one argument
elif [ -e ~/wastebasket/"$1" ]; then
echo \"$1\" already exists in wastebasket, so I will not delete
elif [ -d "$1" ]; then
if [ $(ls -A "$1" | wc -l) -gt 0 ]; then
echo Directory \"$1\" is not empty, so I will not delete
else
echo Deleting directory \"$1\"
mv "$1" ~/wastebasket
fi
elif [ -f "$1" ]; then
echo Deleting file \"$1\"
mv "$1" ~/wastebasket
else
echo \"$1\" does not exist
fi

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

@@ -0,0 +1,7 @@
#!/bin/bash
num=1;
while [ $# -gt 0 ]; do
echo argument $num is \"$1\".
shift
let num++
done

View File

@@ -0,0 +1,11 @@
#!/bin/bash
cat ~/.bash_history | while read line; do
if echo $line | grep -Eq "^(mkdir|cd)"; then
dir=$(echo $line | sed -r 's/(mkdir|cd) +//')
if [ -d "$dir" ]; then
echo "YES: $dir"
else
echo "NO: $dir"
fi
fi
done

View File

@@ -0,0 +1,13 @@
#!/bin/bash
file=1;
for audio in media/*.mp3; do
if [ $audio != "media/footsteps_forest_01.mp3" ]; then
echo Processing $audio
filename="00$file"
filename=${filename:(-3)}
sox $audio temp.wav silence 1 0 0
sox media/footsteps_forest_01.mp3 temp.wav -C 128 $filename.mp3
rm temp.wav
let file=file+1
fi
done

View File

@@ -0,0 +1,11 @@
#!/bin/sh
date=$(date "+%a %d-%m-%Y %H:%M")
for image in media/*.jpg; do
filename=$(basename $image)
if [ -e thumbs/$filename ]; then
echo $filename has already been converted
else
echo Converting $filename
convert $image -resize "640x480>" -rotate 90 -background magenta -pointsize 15 -gravity Center label:"$date" -append -rotate -90 thumbs/$filename
fi
done

View File

@@ -0,0 +1,16 @@
#!/bin/bash
dir=$(dirname "$1")
file=$(basename "$1")
if [ $# -ne 1 ]; then
echo You need to give just one argument
elif [ ! -e ~/wastebasket/"$file" ]; then
echo \"$file\" does not exist in wastebasket
elif [ -e "$1" ]; then
echo \"$1\" already exists, so I will not undelete
else
echo Restoring \"$file\" to \"$dir\"
if [ ! -d "$dir" ]; then
mkdir "$dir"
fi
mv ~/wastebasket/"$file" "$dir"
fi

View File

@@ -0,0 +1,14 @@
#!/bin/bash
for video in media/*.mp4 media/*.mov; do
if [ ! -e $video ]; then
echo No videos to convert
exit 1
fi
echo Processing $video
dir=$(dirname "$video")
file=$(basename "$video" .mp4)
file=$(basename "$file" .mov)
avconv -i $video -s 80x50 $dir/$file.mpg
mv $video $video.backup
done

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,78 @@
# Query Optimisation
Dominant cost in query processing is secondary storage access. The fewer blocks accessed, the faster the database queries can be.
Many tuples will fit into a single block, requiring the query to: find the block, find the tuple, edit the tuple, and place it back in the block. This is inefficient if we are doing many different queries accessing different blocks.
# Types of Index
## Primary Index
Data file sequentially ordered by ordering key field, indexing field is built on the ordering key field. Guaranteed to have unique value for each tuple.
## Clustering Index
Data file sequentially ordered on non-key field, indexing field built on same non-key field. Can be more than one tuple corresponding to a value in the indexing field.
## Primary / Clustered Indices
Affect the order the data is stored in a file.
## Secondary Indices
Give a lookup table to the file.
# Index Restrictions
- Table can have 1 primary index OR 1 clustering index.
- Most frequently looked up value is often the best choice
- Some DBMS' assume PK is primary index, as it is usually used to refer to rows
# Exercise
1. What is a Query Tree?
A query tree is a visual model used to represent a logical model of database queries. Each leaf node represents a relation. Each internal node is a different query function ex. selection, projection, product, etc.
2. Write a relational algebra expression for the following query
```sql
SELECT lecName, schedule
FROM lecturer, module, enroll, student
WHERE lastName=Burns
AND firstName=Edward
AND module.moduleNumber=enrol.moduleNumber
AND lecturer.lecID=module.lectID
AND student.stuID=enrol.stuID;
```
![](Pasted%20image%2020231121134251.png)
pi lecName, schedule
( sigma lastName = burns
( sigma firstName = edwards
( sigma module.moduleNumber=enrol.moduleNumber
( sigma (lecturer.ledID=module.lectID (lecturer x module ) x enrol ) x student
)
)
)
Draw a Query Tree for this SQL query:
3. Why can we not use SQL for query optimisation?
Using relational algebra is easier for us to visualise, and less abstracted than SQL, allowing us to optimise the query flow.
4. List the heuristics that optimisers use to reduce optimisation cost.
- Begin with initial query tree for SQL
- Move SELECT operations down the tree
- Apply more restrictive SELECT operations first ( eg. equalities before range queries )
- Replace Cartesian products followed by selection with theta joins ( eg. *sigma(f) ( RxS )* -> *R theta(f) S* )
- Move PROJECT operations down the query tree ( add project operations as inputs to theta joins ).
5. Draw a near optimal query tree for the following SQL query, and write a relational algebra expression for this tree.
```sql
SELECT sailors.name
FROM sailors, reservations
WHERE reservations.sID=sailors.ID
AND reservations.bID=100
AND sailors.rating=7;
```
![](Pasted%20image%2020240123164006.png)

View File

@@ -0,0 +1 @@
#

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB