CS Help

Help booklet for common questions regarding CS resources, user access, etc.

Welcome

This is the on-line guidebook for computing resources for general use within the School of Computer Science at the University of Windsor.

Here you will find documentation showing you how to use the various tools available to you for your course work, research work, administrative work, or personal development.

Attention all students! We're inviting you to contribute by writing a how-to article. Share your knowledge and expertise with the community! The best submissions will receive an incentive. Start writing today!

Please send your submissions to accounts@cs.uwindsor.ca

All use of these facilities is subject to the University of Windsor Bylaws and Policies, in particular, you should become familiar with the Acceptable Use Policy under the IT Services Quick Link.


If you have any questions or problems using these resources, please get in touch with one of the technical support staff:

Sanjay Chitte

Aniss Zakaria

Maunzer Batal


If you have questions or problems with this Web site's content, please contact the CS Technical Staff.

Please review the Passwords article containing important information about your CS and CAMPUS passwords.

Accounts & Sign-in

Articles related to UW accounts and access

Accounts & Sign-in

Computer Science Access

For all your course work please log in to the server delta.cs.uwindsor.ca  and not into cs.uwindsor.ca .

Methods to access the delta.cs.uwindsor.ca server.

For Password issues, Please read the password page.

Accounts & Sign-in

Passwords

CS Members

Definition

A UWinID and password is required to use the resources within the School. The UWinID must be "attached" to Computer Science, meaning that you must be taking a computer science course or a course hosted on our servers, be a computer science major, or a faculty or staff member employed in Computer Science. All active students and staff should have their own UWinID username and password, which is generated and maintained by the University of Windsor Information Technology Services department (ITS). People with an active UWinID and password, and with an attachment to the school of computer science resources, either through employee group, study major, or course enrollment are automatically granted access to the linked systems listed below. Specialized members of the general public, namely alumni, prospective students, event participants, school teachers, and employers may also be granted access to some resources. 

UWinID and Passwords

Managing your campus password

You can manage your campus password by visiting UWin Account.

Password synchronization with Computer Science 

When you change your UWinID password through UWin Account, it will synchronize automatically for CS servers that use LDAP authentication at regular intervals (every 15 minutes), with the exception of the following:

To synchronize your passwords for the services listed above with your campus password, please use the CS Password Utility.

CS Password Utility

Managing your Computer Science Password

The CS Password Utiliity is an on-line self-service application designed to allow CS Members to reset their passwords and user accounts on systems and services within the School of Computer Science.

Additional non-password related functions

This utility will also automatically resolve the following issues, if applicable:

Session results

image5.jpg

Linked Systems

Accounts & Sign-in

VPN

The University of Windsor uses a firewall. Many protocols or ports are blocked by the firewall, so you may need to establish a connection through the campus Virtual Private Network (VPN) to access resources and data on the campus private network. 

What does the VPN connection do?

The VPN connection tunnels network traffic over a securely encrypted connection. Once connected to the VPN portal, your device will receive a new IP address and IP route provided by the university and recognized internally by the campus firewall. 

Why do I need to use the Campus VPN?

ITS Documents related to the Campus VPN

windows (Custom).png Installing GlobalProtect VPN client on a Windows computer
macOS (Custom).png Installing GlobalProtect VPN client on macOS
android (Custom).png Installing GlobalProtect VPN client on mobile devices (Apple, Android)
linux (Custom).png Installing GlobalProtect VPN client on Linux Devices

Download

Windows and macOS

Authenticate with your UWinID and password on the university's GlobalProtect Portal to get to the GlobalProtect Client download links.

Checking the Windows version

If you are running Windows, please check the version to determine if you should install the 32-bit or 64-bit version. 

image6.jpg

Press the Windows + Pause keys

Android, iOS, Chromebook and Windows UMP

Download the GlobalProtect Client from the respective device's app store.

Android and Chrome OS devices

Check which Chrome OS Systems support Android Apps

iOS devices

Linux

Install openconnect using the package manager for your Linux distribution.

Connecting to the campus VPN

Using GlobalProtect Clients

Windows and macOS devices use the networklogin.uwindsor.ca portal.

Mobile devices, including Android, iOS, Chromebook, and ARM-based Surface tablets, use the mobilevpn.uwindsor.ca portal. Refer to VPN#ITS_Document_related_to_the_Campus_VPN for detailed instructions for setting up a connection on your device.

Using Openconnect with Linux

The Openconnect integration with NetworkManager does not properly open the connection to the portal. You must use the command-line for your VPN connection to work correctly.

Reserve a terminal window for the VPN connection, and run the command below, replacing userid with your UWinID, in the reserved terminal:

sudo openconnect --protocol=gp mobilevpn.uwindsor.ca -u userid

Linux, like mobile devices, uses the mobilevpn.uwindsor.ca portal.

PAN GlobalProtect HIP with open-connect

And because you are in Computer Science ...

You may notice a message like

POST https://mobilevpn.uwindsor.ca/ssl-vpn/hipreportcheck.esp
WARNING: Server asked us to submit HIP report with md5sum 923700b124549fa2954cc08845be3c60.
    VPN connectivity may be disabled or limited without HIP report submission.
    You need to provide a --csd-wrapper argument with the HIP report submission script.

this when you run open connect as shown in VPN#Using_Openconnect_with_Linux.

Host Integrity Protection provides an explanation. If you want to include the --csd-wrapper option, you will need to specify the location of the script required.

For Debian-based distributions, for example, you can find the location of the scripts like this

~$ dpkg -L openconnect|grep hipreport
/usr/libexec/openconnect/hipreport-android.sh
/usr/libexec/openconnect/hipreport.sh

To avoid the above warning on a Linux client you can use

Testing the VPN Connection

The ping command is the simplest way to test if your active VPN Connection is working. 

Windows

photo_1.jpg

Launch the hidden menu for power users using one of these methods:

In older versions of Windows 10, this menu will include shortcuts for the Command Prompt instead of Windows Powershell. Either is suitable for this test!

photo_2.jpg

ping 10.10.10.10 results

Run

ping 10.10.10.10

to determine if the campus DNS server is available.

image_3.jpg

New VPN provider IP address

Run

ipconfig

to display the new IP address while actively connected to the campus VPN portal.

image_4.jpg

New VPN provided routes

Run

route print -4

to display the new IP routes while actively connected to the campus VPN portal.

macOS

image_5.jpg

Open or quit Terminal on Mac

Open a terminal and run

ping 10.10.10.10

to determine if the campus DNS server is available.

Your output should look similar to the Windows Powershell ping results above.

Linux

image_6.jpg

ping -c 5 10.10.10.10 results

Run

ping -c 5 10.10.10.10

to determine if the campus DNS server is available.

image.png

New VPN provided IP address

Using Debian, run

ip addr show tun0

to display the new IP address while actively connected to the campus VPN portal.

The network interface name may vary depending on the Linux distribution you use, but the IP will begin with the first two octets 172.18.

image.png

New VPN provided IP routes

Run

ip route

to display the new IP routes while actively connected to the campus VPN portal.

Accounts & Sign-in

MFA

Multi-Factor Authentication (MFA) provides additional security for your UWin Account.

MFA is required for accessing MFA-protected services and apps, like Microsoft 365, from off-campus networks.

A UWin Account identifier userid@uwindsor.ca, is composed of the UWinID userid and the domain name uwindsor.ca; it is a Microsoft account in the uwindsor.ca domain of the campus' Azure Active Directory tenant.

 

ITS Documents

What is MFA at UWindsor?

Options for secondary factors of authentication

Courses

Courses

COMP1400

Raptor is used by COMP1400.  It is available on all the machines in computer science labs. Also can be used remotely using NoMachine Client.

Students can download the tool on their machines(Raptor).

RAPTOR is a flowchart-based programming environment, designed specifically to help students visualize their algorithms and avoid syntactic baggage. RAPTOR programs are created visually and executed visually by tracing the execution through the flowchart. Required syntax is kept to a minimum. Students prefer using flowcharts to express their algorithms and are more successful in creating algorithms using RAPTOR than using a traditional language or writing flowcharts without Raptor.

How to access Delta and using NoMachine Client

image.png

RAPTOR Avalonia Edition runs on MAC and Linux, More information is available on the landing page of the RAPTOR website. 

Courses

COMP 3150

Courses

COMP 3670/4670/8677

Courses

COMP 2057 Prof. David Mayo

Before connecting to the server, please ensure that you have access to Computer Science resources.

Please visit 

https://auth.cs.uwindsor.ca  and synchronise your password.

Please use VPN to connect to campus, and also use VPN on the eduroam wifi. 

The following resource is dedicated to Prof David Mayo's class.

Server:  electron.cs.uwindsor.ca

Protocol to be used: SFTP ( Secure File Transfer Protocol)

This server only supports the secure FTP protocol. Please do not use FTP or SSH. This server will not provide you with a login shell even if the password is correct.

A screenshot of Filezilla on Mac 

image.png

image.png

Check that I am logged on, you can see my remote site files ( I don't have any HTML files)

image.png

Command Line: sftp sanjay@electron.cs.uwindsor.ca

image.png

Additional information

https://help.cs.uwindsor.ca/books/cs-help/page/filezilla


Courses

COMP 3400

To run nvhpc on Delta 

export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/25.11/compilers/bin:$PATH
export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/24.3/comm_libs/mpi/bin:$PATH

Compile your code 

Thanks to Prof. Paul Preney for the test code  vecadd.cpp

// This program is very simple. Set size in main to be a large number if
// needed.
// vecadd.cpp

#include <cstddef>
#include <iostream>
#include <vector>
#include <numeric> // For iota
#include <algorithm> // For transform
#include <execution> // For parallel execution policies

void check(std::ostream& os, auto const& value, auto const& should_be_value)
{
  if (value == should_be_value)
    os << "OKAY";
  else
    os << "NOT_OKAY";
}

int main()
{
  using namespace std;

  size_t const size{ 1'000'000ULL};

  vector<int> a(size);
  vector<int> b(size);
  vector<int> result(size);

  iota(a.begin(), a.end(), 0); // a = {0, 1, 2, ...}
  iota(b.begin(), b.end(), size); // b = {size, size+1, ...}

  transform(execution::par_unseq,
    a.begin(), a.end(),
    b.begin(),
    result.begin(),
    [](int x, int y) { return x + y; }
  );

  // Verify a few elements (optional)
  cout << "result[0]: " << result[0] << ' '; check(cout,result[0],size); cout << '\n';
  cout << "result[1]: " << result[1] << ' '; check(cout,result[1],size+2); cout << '\n';
  cout << "result[size-1]: " << result[size-1] << ' '; check(cout,result[size-1],size-1+size*2-1); cout << '\n';
}

MakeFile

Makefile
CXXFLAGS=-O3

NVHPC_CXX=nvc++
NVHPC_CXXFLAGS=$(CXXFLAGS) --c++20 -stdpar=gpu
NVHPC_LDFLAGS=$(LDFLAGS)

GCC_CXX=g++
GCC_CXXFLAGS=$(CXXFLAGS) -std=c++20
GCC_LDFLAGS=$(LDFLAGS) -ltbb

all: vecadd-nvhpc.exe vecadd-gcc.exe

clean:
	rm *.exe

run: vecadd-gcc.exe vecadd-nvhpc.exe
	echo "Running vecadd-gcc.exe..."
	bash -c 'time ./vecadd-gcc.exe'
	echo -e "\n\n\n"
	echo "Running vecadd-nvhpc.exe..."
	bash -c 'time ./vecadd-nvhpc.exe'

%-nvhpc.exe : %.cpp
	$(NVHPC_CXX) $(NVHPC_CXXFLAGS) -o $@ $< $(NVHPC_LDFLAGS)

%-gcc.exe : %.cpp
	$(GCC_CXX) $(GCC_CXXFLAGS) -o $@ $< $(GCC_LDFLAGS)

image.png

CS Servers

CS Servers

Software Available on Delta

Based on the image below you can see the software available on delta.

image.png

 

CS Servers

How to use myweb

STEP 1

go to https://myweb.cs.uwindsor.ca/

and select the blue box option

image(1).png

STEP 2

Login with your UwinID and password

Screenshot from 2024-02-01 09-11-16.png

Note:

If you can't login, please sync your password at https://auth.cs.uwindsor.ca

Additional details can be found in this help article.

CS Servers

PhpMyAdmin

STEP 1

go to https://myweb.cs.uwindsor.ca/

and select the blue box option

image(1).png

STEP 2

Login with your UwinID and password

Screenshot from 2024-01-31 11-57-45.png

STEP 3

After logging in, under Extra Features, there will be an option of phpMyAdmin.

image.png

CS Servers

Delta.cs.uwindsor.ca

Delta is the School of Computer Science's main computing server. 

You can reach Delta using any of these methods:

  1. The School dedicated Linux labs:
    • Java Lab: ER-3150
    • XLab: ER-3119
    • 300 Ouellette
  2. From the web. https://nx.cs.uwindsor.ca   (require VPN)
  3. SSH: ssh uwinid@delta.cs.uwindsor.ca      (require VPN)

Delta is equipped with 2 x 64 cores Processors, 1 Terabyte of memory, and four GPUs (Nvidia A16)

Notes:

 

Software for Remote Access

Applications and programs commonly used to access the main computing server used by Computer Science Students. The primary server used for coursework is Delta ( delta.cs.uwindsor.ca ).

Software for Remote Access

Mobaxterm

MobaXterm is your ultimate toolbox for remote computing. In a single Windows application. It is an enhanced terminal for Windows with an X11 server, tabbed SSH client, and network tools. The free home edition is available at Mobaxterm.

The free Mobaxterm Home Edition with full X server and SSH client is available for Windows.

Download

image.png

Installing Mobaxterm

The Installer is provided as a ZIP file; save it and open it. Extract all the files (*.dat and *.msi) into a directory. Go to the extraction sub-directory and run the MSI installer. Accept all the default settings.

Using Mobaxterm

A full description of Mobaxterm's features

SSH

Configuring a session to connect to delta.cs.uwindsor.ca

image.png

Enter password on the second window

image.png

X11 Forwarding

The requisite X server is embedded!

Mobaxterm has an embedded X server with X11 forwarding enabled by default, so nothing else is required to run GUI applications.

SSH using Mac OSX

Launch Terminal from the Application/Utilities.

image.png

You will see the following window. Enter ssh <youruserid>@delta.cs.uwindsor.ca

In the example below, Sanjay is my user ID.

image.pngEnter your password.

image.png

Software for Remote Access

Filezilla

The free FileZilla Client is available for Windows, macOS and Linux.

Download

Using FileZilla

SFTP

Using the Quickconnect feature


image.png

Use these settings:

Press the Quickconnect button to open a new SFTP file transfer session.

Configuring a connection using the Site Manager

image.png

Open the Site Manager from the File menu.

Use these settings in the General tab:

Use this setting in the Transfer Settings tab:

Technical Resources Available

The School of Computer Science operates a modern, full-service data-center and computing facility for use by students, faculty, and staff. This facility provides:

Most users will access CS resources through the Linux desktops, or from their PC or tablets using our (cswifi) wireless network.

Technical Resources Available

Azure Education

Microsoft Software Downloads

Information_icon4.svg.png   Activate your Azure Account enabling your ability to download software

  • Activation of your Azure Account is an important step!
  • Otherwise, you may not see all of the software downloads you are entitled to!
  • Use your UWinID@uwindsor.ca as your identity.
  • You might need to renew your entitlement each year.



The university subscribes to Microsoft Azure Education Dev Tools for Teaching providing access to a wide range of Microsoft development, productivity tools, and operating systems, such as: 

image.png

Technical Resources Available

Digital Research Alliance of Canada

The Digital Research Alliance of Canada serves Canadian researchers, with the objective of advancing Canada’s position as a leader in the knowledge economy on the international stage. By integrating, championing and funding the infrastructure and activities required for advanced research computing (ARC), research data management (RDM) and research software (RS), we provide the platform for the research community to access tools and services faster than ever before.

To access SHARCNET / Alliance resources, you first need a CCDB account. Confirm with your supervisor whether they have an active CCDB account. Afterward, you'll need to create your own CCDB account, listing your supervisor as the PI. To do this:

  1. Visit this page: Apply for an account.
  2. Go to https://ccdb.alliancecan.ca/.
  3. Click "Register."
  4. Complete the form, agree to the policies, and click "Submit."
  5. Fill out the next page.
    Make sure to select the correct "Position" (e.g., Master's Student).
    You will need your supervisor’s CCRI number to complete this section. Ask your supervisor for their CCDB CCRI number (they can find it by logging in to https://ccdb.alliancecan.ca/).
  6. Once finished, click "Submit application."
  7. Next steps: Your supervisor will receive an email to approve or disapprove your application.
    Once approved, you’ll be able to log in and access the clusters.

For further information or assistance, please contact:

 

Paul Preney, OCT, M.Sc., B.Ed., B.Sc.
High Performance Computing Technical Consultant / Research Associate
University of Windsor | preney@uwindsor.ca
SHARCNET | https://www.sharcnet.ca | preney@sharcnet.ca
Compute/Calcul Ontario | http://www.computeontario.ca
Digital Research Alliance of Canada | https://alliancecan.ca

Wireless

CS and UW wireless service

Wireless

cswifi

Computer Science wifi "cswifi" is available in the following buildings

Linux OS, after clicking on the cswifi SSID

image(3).jpg

View and Accept the certificate.

Wireless

Eduroam

Please visit the following link for eduroam access.

Which wireless network should I use?
Connecting Computers and Mobile Devices to University of Windsor Wi-Fi
What is EDUROAM?

EDUROAM (education roaming) is an international Internet access roaming service for users in research, higher education, and further education. 

MyWeb Tutorials

MyWeb Tutorials

MyWeb Tutorials: Login to MyWeb

DirectAdmin is a web-based hosting control panel that allows you to manage your website files, databases, and basic site settings through a browser.
At the School of Computer Science, we use DirectAdmin under the name MyWeb to provide students with personal web hosting space.

MyWeb Tutorials

MyWeb Tutorials: File Manager & HTML page

In this tutorial, we will create a simple HTML page and navigate through the website's files.

Accessing the File Manager

image.png

Understanding the File Structure

Your account contains several folders. The most important ones are:

📁 public_html (Most Important)

This is where your website files go

📁 public_ftp

📁 Other folders you may see

Do not delete folders unless instructed

Creating or Uploading Files

Inside public_html, you can:

Example structure:

public_html/
├── index.html
├── about.html
├── css/
│   └── style.css
├── images/
│   └── logo.png
Website Entry (Starting) Files

When someone visits your website, the web server looks for default index files.

Common starting files:

If both index.html and index.php exist, index.html will win and load first

When to Use HTML vs PHP

Use HTML (.html) when:

Use PHP (.php) when:

Quick Tips & Common Mistakes

Always place website files in public_html
File names are case-sensitive (Index.html ≠ index.html)
One index file per folder is enough
Dont delete system folders
Dont expect files outside public_html to be public

 

 


 

Create Your first HTML page

 

Congratulations! You created your first website :)

 

 

MyWeb Tutorials

MyWeb Tutorials: Database Creation

This article provides step-by-step instructions for creating a database in MyWeb (DirectAdmin) and a table in phpMyAdmin.

Fill in:

a.     Database Name  (example: projectdb)

b.    User name (can be the same as DB name)

c.     Password (generate or enter your own)

image.png



image.png

image.png



or you can access phpMyAdmin from the left menu:

image.png


 

In the phpMyAdmin page, click on your newly created Database

image.png

image.png


Then define your fields/columns (as shown in the image below as an example)

image.png


Or you can create it using SQL command (the recommended method):

image.png


 Please refer to the following sites for additional information about SQL:

·        https://www.datacamp.com/tutorial/my-sql-tutorial

·        https://www.w3schools.com/MySQL

·        https://www.mysqltutorial.org

 

MyWeb Tutorials

MyWeb Tutorials: Create PHP/DB application

This tutorial shows how to:

Create a PHP File
  1. Log in to MyWeb (DirectAdmin)
  2. Open File Manager
  3. Go to:
  4. public_html
  5. Create a new file called:
  6. people.php
  7. Edit the file
Database Table Used

We assume the following table already exists: (refer to this tutorial in case you dont have this table)

Persons
--------------------------------
PersonID   INT (Primary Key)
LastName   VARCHAR(255)
FirstName  VARCHAR(255)
Address    VARCHAR(255)
City       VARCHAR(255)
Database Connection

At the top of people.php, add:

<?php
$host = "localhost";
$db   = "testproj1_myDB";
$user = "testproj1_myDB";
$pass = "myPassword";

$conn = new mysqli($host, $user, $pass, $db);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
?>

Replace the database credentials with your own.

Display Table Contents (READ)

Add this below the connection code:

<h2>People List</h2>

<table border="1" cellpadding="5">
<tr>
    <th>ID</th>
    <th>First Name</th>
    <th>Last Name</th>
    <th>Address</th>
    <th>City</th>
    <th>Actions</th>
</tr>

<?php
$result = $conn->query("SELECT * FROM Persons");

while ($row = $result->fetch_assoc()) {
    echo "<tr>";
    echo "<td>{$row['PersonID']}</td>";
    echo "<td>{$row['FirstName']}</td>";
    echo "<td>{$row['LastName']}</td>";
    echo "<td>{$row['Address']}</td>";
    echo "<td>{$row['City']}</td>";
    echo "<td>
        <form method='post' style='display:inline;'>
            <input type='hidden' name='delete_id' value='{$row['PersonID']}'>
            <input type='submit' value='Delete'
                   onclick=\"return confirm('Delete this record?');\">
        </form>
      </td>";
    echo "</tr>";
}
?>
</table>
Add New Records (CREATE)

Add this above the table:

<form method="post">
    <label>Person ID:</label><br>
    <input type="number" name="personid" required><br><br>

    <label>First Name:</label><br>
    <input type="text" name="firstname" required><br><br>

    <label>Last Name:</label><br>
    <input type="text" name="lastname" required><br><br>

    <label>Address:</label><br>
    <input type="text" name="address"><br><br>

    <label>City:</label><br>
    <input type="text" name="city"><br><br>

    <input type="submit" name="add" value="Add Person">
</form>

Then add this PHP logic near the top of the file:

if (isset($_POST['add'])) {
    $stmt = $conn->prepare(
        "INSERT INTO Persons (PersonID, FirstName, LastName, Address, City)
         VALUES (?, ?, ?, ?, ?)"
    );

    $stmt->bind_param(
        "issss",
        $_POST['personid'],
        $_POST['firstname'],
        $_POST['lastname'],
        $_POST['address'],
        $_POST['city']
    );

    $stmt->execute();
    $stmt->close();

    header("Location: people.php");
    exit;
}
Delete Records (DELETE)

Add this near the top:

if (isset($_POST['delete_id'])) {
    $id = (int) $_POST['delete_id'];

    $stmt = $conn->prepare("DELETE FROM Persons WHERE PersonID = ?");
    $stmt->bind_param("i", $id);
    $stmt->execute();
    $stmt->close();

    header("Location: people.php");
    exit;
}

Now clicking Delete removes a record.

Full people.php file
<?php
/**
 * Simple PHP CRUD Example
 * Table: Persons
 *
 * Columns:
 *  - PersonID (INT, Primary Key, Auto Increment)
 *  - FirstName (VARCHAR)
 *  - LastName  (VARCHAR)
 *  - Address   (VARCHAR)
 *  - City      (VARCHAR)
 */

/* ===============================
   Database Configuration
   =============================== */
$host = "localhost";
$db   = "testproj1_myDB";
$user = "testproj1_myDB";
$pass = "myPassword";

/* ===============================
   Database Connection
   =============================== */
$conn = new mysqli($host, $user, $pass, $db);

if ($conn->connect_error) {
    die("Database connection failed: " . $conn->connect_error);
}

/* ===============================
   CREATE (Add New Record)
   =============================== */
if (isset($_POST['add'])) {
    $stmt = $conn->prepare(
        "INSERT INTO Persons (PersonID, FirstName, LastName, Address, City)
         VALUES (?, ?, ?, ?, ?)"
    );

    $stmt->bind_param(
        "issss",
        $_POST['personid'],
        $_POST['firstname'],
        $_POST['lastname'],
        $_POST['address'],
        $_POST['city']
    );

    $stmt->execute();
    $stmt->close();

    header("Location: people.php");
    exit;
}


/* ===============================
   DELETE (Remove Record)
   =============================== */
if (isset($_POST['delete_id'])) {
    $id = (int) $_POST['delete_id'];

    $stmt = $conn->prepare("DELETE FROM Persons WHERE PersonID = ?");
    $stmt->bind_param("i", $id);
    $stmt->execute();
    $stmt->close();

    header("Location: people.php");
    exit;
}

?>

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>People CRUD Example</title>
</head>
<body>

<h1>People Database</h1>

<!-- ===============================
     CREATE FORM
     =============================== -->
<h2>Add New Person</h2>

<form method="post">
    <label>Person ID:</label><br>
    <input type="number" name="personid" required><br><br>

    <label>First Name:</label><br>
    <input type="text" name="firstname" required><br><br>

    <label>Last Name:</label><br>
    <input type="text" name="lastname" required><br><br>

    <label>Address:</label><br>
    <input type="text" name="address"><br><br>

    <label>City:</label><br>
    <input type="text" name="city"><br><br>

    <input type="submit" name="add" value="Add Person">
</form>

<hr>

<!-- ===============================
     READ (Display Records)
     =============================== -->
<h2>People List</h2>

<table border="1" cellpadding="6" cellspacing="0">
    <tr>
        <th>ID</th>
        <th>First Name</th>
        <th>Last Name</th>
        <th>Address</th>
        <th>City</th>
        <th>Action</th>
    </tr>

<?php
$result = $conn->query("SELECT * FROM Persons");

while ($row = $result->fetch_assoc()) {
    echo "<tr>";
    echo "<td>{$row['PersonID']}</td>";
    echo "<td>{$row['FirstName']}</td>";
    echo "<td>{$row['LastName']}</td>";
    echo "<td>{$row['Address']}</td>";
    echo "<td>{$row['City']}</td>";
    echo "<td>
        <form method='post' style='display:inline;'>
            <input type='hidden' name='delete_id' value='{$row['PersonID']}'>
            <input type='submit' value='Delete'
                   onclick=\"return confirm('Delete this record?');\">
        </form>
      </td>";
    echo "</tr>";
}
?>

</table>

</body>
</html>

File Location Reminder

File must be in:

public_html/people.php

Access it via:

https://yourname.myweb.cs.uwindsor.ca/people.php

Errors and Logs

During building of your PHP application, you may need to view the errors either on the webpage or via the log.

To view errors on your PHP page, add the following at the top of your PHP file:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

Put them before any other PHP code.

Once fixed, remove the debug lines.


Or you can access the log file from "Site Summary/Statistics/Logs" 

image.png

image.png



 Summary
MyWeb Tutorials

MyWeb Tutorials: Git (Version Control)

If you are planning to use GIT, then you need to consider our GitLab server is the source of truth for your website code. You should write and edit your code locally on your own computer using any editor or IDE (such as VS Code). Your local project must be connected to gitlab.cs.uwindsor.ca, where you commit and push your changes. Once your code is pushed to GitLab, you then log in to MyWeb (DirectAdmin) and use Fetch followed by Deploy to publish the latest version of your code to the web server. Do not edit files directly in MyWeb using File Manager or FTP after Git is enabled, as those changes will be overwritten on the next deploy.

 Summary of Workflow:

First-Time Setup (Do Once)

  1. Create an SSH key on the student’s local computer
  2. Add the local SSH key to GitLab (gitlab.cs.uwindsor.ca)
  3. Configure your IDE (e.g., VS Code) to use GitLab
  4. Create a new project on GitLab and copy the SSH remote URL
  5. Initialize the local project and connect it to the GitLab repository
  6. If code already exists on MyWeb, import it into the local project
  7. Commit and push the initial codebase to GitLab
  8. Create a separate SSH key in MyWeb (DirectAdmin) for deployment
  9. Add the MyWeb public SSH key to GitLab
  10. Initialize and connect the Git repository in MyWeb
  11. Perform the first Fetch and Deploy from GitLab to MyWeb

 

Daily / Ongoing Workflow

  1. Edit code locally on the student’s computer
  2. Commit and push changes to GitLab
  3. Log in to MyWeb (DirectAdmin)
  4. Fetch updates from GitLab
  5. Deploy the latest code to the website

1. Create an SSH key on the student’s local computer

Windows (Windows Terminal / PowerShell / Git Bash)

ssh-keygen -t ed25519 -C "yourusername@gitlab.cs.uwindsor.ca"

eval "$(ssh-agent -s)"

ssh-add ~/.ssh/id_ed25519

(or the filename you chose)

 

macOS / Linux

ssh-keygen -t ed25519 -C "yourusername@gitlab.cs.uwindsor.ca"

eval "$(ssh-agent -s)"

ssh-add ~/.ssh/id_ed25519

 

Verify the Key Was Created (All Systems)

ls ~/.ssh

Notes for Students:


 

2. Add the SSH Key to GitLab (gitlab.cs.uwindsor.ca)

image.png

image.png

Copy Your Public Key (from your computer)

cat ~/.ssh/id_ed25519.pub

(If you used a different filename, replace id_ed25519 accordingly.)

Add the Key in GitLab

image.png

image.png

Quick Verification (Optional but Recommended)

ssh -T git@gitlab.cs.uwindsor.ca

Notes for Students


 

3. Configure Your IDE (VS Code) to Use GitLab

Verify Git Is Detected by VS Code

git --version

 

Configure VS Code to Use Your SSH Key

ssh-add -l

VS Code uses the system SSH configuration automatically—no extra setup is required if SSH works in the terminal.

 

(Optional but Recommended) Configure Git Identity

git config --global user.name "Your Full Name"

git config --global user.email "yourusername@uwindsor.ca"

 

(Optional) Test GitLab Access from VS Code

ssh -T git@gitlab.cs.uwindsor.ca

 

Notes for Students


 

4. Create a Project on GitLab and Get the SSH Remote URL

image.png

image.png

image.png

Project Setup


Get the SSH Remote URL

git@gitlab.cs.uwindsor.ca:yourusername/myweb-project.git

image.png

 

Notes for Students


 

5. Initialize the Local Project and Push Code to GitLab

This step connects your local code to the GitLab repository you just created.

 

If You Are Starting with New Code (No Existing MyWeb Files)

git init

git remote add origin git@gitlab.cs.uwindsor.ca:yourusername/myweb-project.git

git add .

git commit -m "Initial commit"

git branch -M main

git push -u origin main


If Code Already Exists on MyWeb (Common Case)

git init

git remote add origin git@gitlab.cs.uwindsor.ca:yourusername/myweb-project.git

git add .

git commit -m "Initial import from MyWeb"

git branch -M main

git push -u origin main

GitLab now contains the full website code
GitLab becomes the source of truth

 

Notes for Students


 

6. Create a Deployment SSH Key in MyWeb (DirectAdmin)

This key is used only by MyWeb to fetch and deploy code from GitLab.
It is separate from the SSH key on your local computer.

image.png

image.png

Fill in the fields

image.png

Copy the Public Key

image.png

To copy the public key, right click on *.pub file and open/edit it and copy the full content (to be used in step 7 below)

Notes for Students


 

7. Add the MyWeb SSH Key to GitLab

This step authorizes MyWeb to access your GitLab repository for Fetch and Deploy.

image.png

Add the MyWeb Public Key

image.png

Notes for Students


 

8. Initialize and Connect the Repository in MyWeb (DirectAdmin)

image.png

image.png

Fill in the Repository Details

image.png

What This Does

 

Notes for Students


 

9. Fetch and Deploy the Code to MyWeb

This step publishes your GitLab code to your MyWeb website.

 

Fetch From GitLab

image.png

What Fetch does:

Deploy to MyWeb

What Deploy does:

 

Verify Deployment

 

Important Notes for Students

 

Setup Complete

You have now:


Daily Workflow Reminder

 

MyWeb Tutorials

MyWeb Tutorials: Connect to DB remotely

In addition to accessing your database through phpMyAdmin on MyWeb, you may also connect to your database directly from your own computer using tools such as HeidiSQL, MySQL Workbench, DBeaver, or the MySQL command-line client. Remote database access allows you to manage tables, run queries, and test your applications more easily while developing locally. In this guide, you will learn how to enable remote access to your database on MyWeb (DirectAdmin) and how to configure your database client to connect securely to the server.

You can use any client to connect and manage the database from your computer. I recommend HeidiSQL https://www.heidisql.com/download.php

image.png


How To

How To

MyWeb

Troubleshooting

IP blacklisting

When you try to connect to your myweb.cs.uwindsor.ca management console, you are told your IP has been blacklisted. This is caused by too many failed login attempts within a short period.

To remove your IP from the blacklist, please use the CS Password Utility.

See Passwords#Additional_non-password_related_functions.

I can't login to phpMyAdmin 

You must first create a database using MySQL Management in the DirectAdmin web control panel. 

photo1.jpg

About Hosting

The School of Computer Science offers all faculty, staff, and students (majors or those taking key courses) a virtual hosting environment for Web and Email. Domains created automatically through the CS Password Utility have the name userid.myweb.cs.uwindsor.ca, where userid is your UWinID.

The myWeb server is separate from the general desktop servers like Delta. You cannot access your Web files through a secure shell terminal (ssh) connection. Instead, access the files using a file transfer client as described.

You can create a new domain and access the DirectAdmin Control Panel to manage your domain (and sub-domains) by visiting the CS Password Utility. The DirectAdmin control panel can be accessed at https://www.myweb.cs.uwindsor.ca:2222/evo 

Note: if you cannot access the DirectAdmin login page, please try another browser or from Incognito/private mode (check this article for help)

Basic DirectAdmin Tour

DirectAdmin is a Web-based control panel that will allow you to manage your Web site(s), email addresses, MySQL databases, and Web applications. You can also manage your files stored on the myweb.cs.uwindsor.ca server with file transfer programs, such as FileZilla, and edit your files using editors that support SFTP, such as Notepad++ and BBEdit. Separate videos are provided for that.

Multiple Domains

The myWeb server, through the DirectAdmin control panel, allows you to create e-mail addresses in your sub-domains or additional domains. Addresses can be full e-mail mailboxes or forwarded to other mailboxes.

You can access these extra mailboxes using mail clients or the Roundcube Web-based mail program. The only differences are that you need to use the e-mail addresses as the username when connecting, and cloud-based calendars and address books are unavailable. You can create a new mailbox under a domain that you control using DirectAdmin, and learn how to connect to it using Roundcube.

Creating FTP accounts

You can create highly customizable FTP accounts to allow other users access to specific parts of your domain. The password for the account can be reset at any time by the owner of the domain or by the user. Once the account has been created and the user is given a password, the user can change the password to something they prefer. 

File Access

Notepad++

Notepad++ can easily access files stored on the myWeb server from your PC. Editing remote files is as easy as editing local ones on your PC.

BBEdit 

BBEdit is a fantastic text editor for macOS that is available for free through the App Store. For those of you who are familiar with it, TextWrangler is now BBEdit.

BBEdit interfaces with files on the myWeb server with just a couple of clicks.

Accessing files from a Linux desktop

It is easy to access your myWeb files from Linux desktops. The best way is to create a bookmark in your Places that will link to your domain's folder on the myWeb server.

Follow these steps:

  1. From Places, open your Home Folder
  2. In Location, enter sftp://myweb.cs.uwindsor.ca/domains, and press Enter
  3. Enter your userid and password to establish the connection.

Once the connection is made, you will see the contents of your myWeb domains folder. Your Web files are in sub-folders named public_html for the corresponding domain.

You can add a bookmark so that this connection is made every time you login to the Linux desktop.

"Forbidden" Message

If you are getting a "Forbidden" message when browsing to your website:

image.png

It's either that you don't have index.html in the main web folder (public_html), or the index file doesn't have the proper permissions. 

image.png

How To

NoMachine

The School of Computer Science runs NoMachine Terminal Server.

The client connects to a server named delta.cs.uwindsor.ca

Remote desktop via a Web Browser 

https://nx.cs.uwindsor.ca

Since the School of Computer Science has a NoMachine Enterprise license, the delta.cs.uwindsor.ca remote desktop can be accessed directly from the browser through the link provided!

NX (using the NoMachine Enterprise Client)

Using the NX protocol (not SSH)

You can download NoMachine Enterprise Client from here.

image.png

Edit a connection to use the NX protocol

You should use the NX protocol, but only if you are connected to the VPN!

Edit and save the connection to modify the protocol it uses.

Troubleshooting

Application Menu is missing 

image.png

If this menu is missing on your desktop, mate-panel is misbehaving.

Run this command from a terminal window (right-click the background and choose Open in terminal):

mate-panel --replace & 

The ampersand is required to run the command in the background, independently of the terminal process from which you ran it.

How To

Notepad++

Download

The latest version will be at the top of the list. Select it to save and run the appropriate Installer. 

Using Notepad++

SFTP

You will need to install the NppFTP Plugin for Notepad++ to use this protocol.

How To

SQL*plus ( to Oracle)

How to use from delta.cs.uwindsor.ca

MicrosoftTeams-image.png

Troubleshooting

Login problems

Oracle database user accounts and passwords are created, synchronized, or unlocked from the CS Password Utility.

Make sure you are using your UWinID as your <user-name>, all lowercase without @uwindsor.ca appended.

The password restrictions for Oracle account passwords are as follows:

Common Errors

ERROR:
ORA-01017: invalid username/password; logon denied

Your password meets the character requirements, but you typed in the wrong password.

Synchronize your password again using the CS Password Utiliity.

ERROR:
ORA-12532: TNS:invalid argument

Your password contains characters, probably @, that require you to enclose it within double quotation marks.

Running sqlplus from your machine at home

Install Oracle client. Use Global Protect VPN and sign in to campus.

Just type sqlplus at a terminal window prompt.

It uses the following tnsnames.ora to establish the connection with the CS01 instance on oracle.cs.uwindsor.ca:

CS01 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oracle.cs.uwindsor.ca)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SID = cs01)
    )
  )
How To

Oracle Using Java and Python from Delta


Connecting to Oracle server from Delta using jdbc

JDBC Connection string

In the connection strings below, replace "userid" with your UWinID, and "password" with your campus password.

Code to test your connection:

import java.sql.*;
import oracle.jdbc.*;
import oracle.jdbc.pool.OracleDataSource;

class JDBCVersion
{
  public static void main (String args[]) throws SQLException
  {
    OracleDataSource ods = new OracleDataSource();
    ods.setURL("jdbc:oracle:thin:userid/password@oracle.cs.uwindsor.ca:1521:cs01");
    Connection conn = ods.getConnection();

    // Create Oracle DatabaseMetaData object
    DatabaseMetaData meta = conn.getMetaData();

    // gets driver info:
    System.out.println("JDBC driver version is " + meta.getDriverVersion());
  }
}

The classpath for the Oracle JDBC archive will vary depending on the operating system and which version of the Oracle client you installed. The classpath in the following commands are those required to compile and run from a terminal on cs.uwindsor.ca.

javac -classpath /usr/lib/oracle/12.1/client64/lib/ojdbc7.jar  JDBCVersion.java 
java -classpath /usr/lib/oracle/12.1/client64/lib/ojdbc7.jar:.  JDBCVersion

Connecting to Oracle server from Delta using Python


How To

WSL

Windows Subsystem for Linux

The Windows Subsystem for Linux (WSL) was introduced by Microsoft to Windows 10. WSL allows users to to run a full Linux user space in Windows. The latest version, WSL 2, is a major upgrade and introduces a Microsoft-written Linux kernel that is delivered by Windows Update instead of being bundled with the Windows OS image.

This guide will show you how to create a working Mate Desktop environment on Debian Buster, similar to our CS Linux Desktop servers available through NoMachine. This will help you learn much more about using and maintaining a Linux environment. 

Installing WSL

Windows Subsystem for Linux Installation Guide

X11 forwarding

You can use Mobaxterm to access WSL with X11 enabled. 

image.png

Or your will need to install an X server to run a graphical Linux environment in WSL.

Notes:

Debian

Microsoft provides an app to install a complete Debian command line environment. 

How To

JetBrains

Free educational license for all the JetBrains IDEs for Students and Faculty.

It is a JetBrains initiative, neither the University of Windsor nor the Department of Computer Science have any contractual obligations with JetBrains.

As individual license owners, the students/faculty using the license are responsible for JetBrains' contractual obligations.

You have to renew the license every year.

Please visit the following link for more information.

https://www.jetbrains.com/community/education/#students

https://www.jetbrains.com/products/

For C#

Use Rider IDE it is cross platform solution for .Net development.

https://www.jetbrains.com/rider/features/

 

How To

Gitlab

We have a community edition (Gitlab CE) instance running at https://gitlab.cs.uwindsor.ca

What is GitLab?

GitLab is a web-based Git repository that provides free open and private repositories, issue-following capabilities, and wikis. It is a complete DevOps platform that enables professionals to perform all the tasks in a project—from project planning and source code management to monitoring and security. Additionally, it allows teams to collaborate and build better software. 

GitLab helps teams reduce product lifecycles and increase productivity, which in turn creates value for customers. The application doesn't require users to manage authorizations for each tool. If permissions are set once, then everyone in the organization has access to every component.

How To

VS Code

Installed on delta.cs.uwindsor.ca. It will work from home using NoMachine or from any labs. you can install extensions under your own user account.

How to use please look at the picture below.

image.png

From Windows or Mac

How To

How to Set Dynamic (DHCP) IP Address - Windows 10/11

1. Access the Control Panel
2. Select the network adapter

Right click on the network adapter that is currently connected to the device that you are trying to configure. Usually, it will be the adapter with the word “Ethernet” in the name.

image.png

3. Select Properties

Select “Properties” from the drop-down menu.

image.png

4. Select Internet Protocol Version 4 (TCP/IPv4)

Double-click on “Internet Protocol Version 4 (TCP/IPv4)”.

image.png

5. Change settings option to DHCP

When you get to the “Internet Protocol Version 4 (TCP/IPv4) Properties” window, click “Obtain an IP address automatically”. This will allow your PC to be assigned a random IP address on your network.

Note: The OK buttons must be clicked in both instances or your settings will not be saved.

image.png

 

More Info:

How To

How to Set Dynamic (DHCP) IP Address - Mac OS

1. Open System Preferences

Click the Apple icon, from the Apple drop-down list, select System Preferences.

image.png

2. Open Network Settings

Click the Network icon.

image.png

3. Select Your Wired Network Interface (Ethernet)

In the left column, select Ethernet (for wired connection) or Wi-Fi(for wireless connection), then Click the Advanced.
Note: in this article we want to change the wired connection, therefore, click on Ethernet

image.png

4. Select TCP/IP Protocol

Click TCP/IP.

image.png

5. Configure IPv4

 From the Configure IPv4 drop-down list, select Using DHCP, then click the OK button.

image.png

More Info:

How To

Connecting to the ‘delta.cs.uwindsor.ca’ Server via SSH through Visual Studio Code

This article was contributed by Avinash Karhana (karhanaa@uwindsor.ca). Thank you!

Prerequisites
  1. **Visual Studio Code (VS Code)** installed. If you don't have it, download and install it from https://code.visualstudio.com. 
  2. **Remote - SSH Extension** for VS Code installed.  
  3. **SSH Client** installed on your local machine:
    • Windows**: Install Git for Windows which comes with Git Bash. You can download it from https://gitforwindows.org.
    • **MacOS**: SSH client is pre-installed.
    • **Linux**: SSH client is pre-installed.
Step-by-Step Guide
  1. Install the Remote - SSH Extension in VS Code
    • Open VS Code.
    • Go to the Extensions view by clicking the Extensions icon in the Activity Bar on the side of the window.
    • Search for "Remote Development" and install the extensions by Microsoft (As given in previous section). 
  2. Add the SSH Host
    • Open the Remote Explorer tab

    • In the Remote Explorer tab, click the `+` button next to `SSH Targets`.

    • In the input dialog that appears, enter: ssh uwinid@delta.cs.uwindsor.ca
                            Replace `uwinid` with your actual username, then hit `Enter`.
            • If you are connecting to a different server, replace the server in the example above with the current server name, which is delta.cs.uwindsor.ca ( it can be gamma.cs.uwindsor.ca ...)
    • Choose whether to save the configuration in the `~/.ssh/config` file or just for this session.
  3. Connect to the Server via VS Code
    • In the Remote Explorer tab, under `SSH Targets`, you should now see `delta.cs.uwindsor.ca`.
    • Click on `delta.cs.uwindsor.ca` to connect. 

    • A new VS Code window will open. When prompted, enter your password for the `delta.cs.uwindsor.ca` server.

  4. Open a Remote Workspace
    • Once connected, you can open a folder on the remote server by clicking on `Open Folder` in the Remote Explorer sidebar. 

    • Navigate to the desired directory on the server and open it.

    • If prompted for your password again, enter it to proceed.

Tips and Troubleshooting
How To

Check and clean up large files in your home directory

Over time, your home directory may grow in size. We recommend regularly checking your disk usage and removing any unnecessary files or folders.

You can use one of the following methods to check your disk space usage:

How To

Graduate Printer

Troubleshooting:
How To

PostgreSQL

Note: Access to PostgreSQL is restricted to students with projects, and it can be accessed via special subnet (not available publicly to all students)

How to Access Your Database:
Connect to PostgreSQL from console:

Connect to a database from your application:
Create New username/role for your application (Using the web interface):
Create New username/role for your application (Using the command prompt):

Now you can use the new username and password to access your database from your web application.

AV 300 Ouellette

We have AV in the classroom, two labs, and a Seminar area.

We have multiple TVs on the cart.

Seminar Areas and Lab:

Resources:

Viewsonic commercial displays (3 numbers) in the Seminar area.

Viewsonic commercial displays (2 numbers) in each of the Lab, the North Lab, and the South Lab.

The following provides information on Viewsonic Displays.

Do Not:

Do not randomly switch on and off the Displays if they are not working or if they have a Red light indicator on and the Display is Black or Unresponsive.

Do not disconnect HDMI cables or fight with the existing cables.

Do not go to any other machines or displays and remove the HDMI cables, and try to connect to the not-working display, assuming it will work. In this process, you are disturbing and crippling a working environment.

What should you do?

The following is the pictorial view of the displays.

image.png

You will find the following panel.

image.png

The following is the process you should follow.

1) The screen is black, unresponsive, and the light is Red; the issue could be with power, connections, or internal components. 

2) First, ensure the power cable is securely plugged into both the display and a working outlet.

3) Try a different power cable and outlet to rule out power issues.

4)  If the screen still doesn't display, try a power reset by unplugging the power cable, holding the power button for 30 seconds (button number 1 in the above picture), and then plugging it back in. 

5) If that doesn't work, you might need to check the video cable and ensure it's properly connected. If the issue persists, you might need to contact CS support for further troubleshooting. 

6) Please get in touch with the staff and report the problem. If the staff has a spare cable, you can ask and try it out.