Reading and Writing to text files in Python - GeeksforGeeks

"From the Transistor to the Web Browser" George Hotz CS Curriculum

Found this on George Hotz's Github. Thinking of following this curriculum to get into CS. Would love to know everyone's thoughts. The only thing this curriculum lacks is links and resources.

Credit: https://github.com/geohot/fromthetransistor
"Hiring is hard, a lot of modern CS education is really bad, and it's hard to find people who understand the modern computer stack from first principles.
Now cleaned up and going to be software only. Closer to being real.

Section 1: Intro: Cheating our way past the transistor -- 0.5 weeks

Section 2: Bringup: What language is hardware coded in? -- 0.5 weeks

Section 3: Processor: What is a processor anyway? -- 3 weeks

Section 4: Compiler: A “high” level language -- 3 weeks

Section 5: Operating System: Software we take for granted -- 3 weeks

Section 6: Browser: Coming online -- 1 week

Section 7: Physical: Running on real hardware -- 1 week

submitted by Cyandemption to cscareerquestions [link] [comments]

NASPi: a Raspberry Pi Server

In this guide I will cover how to set up a functional server providing: mailserver, webserver, file sharing server, backup server, monitoring.
For this project a dynamic domain name is also needed. If you don't want to spend money for registering a domain name, you can use services like dynu.com, or duckdns.org. Between the two, I prefer dynu.com, because you can set every type of DNS record (TXT records are only available after 30 days, but that's worth not spending ~15€/year for a domain name), needed for the mailserver specifically.
Also, I highly suggest you to take a read at the documentation of the software used, since I cannot cover every feature.

Hardware


Software

(minor utilities not included)

Guide

First thing first we need to flash the OS to the SD card. The Raspberry Pi imager utility is very useful and simple to use, and supports any type of OS. You can download it from the Raspberry Pi download page. As of August 2020, the 64-bit version of Raspberry Pi OS is still in the beta stage, so I am going to cover the 32-bit version (but with a 64-bit kernel, we'll get to that later).
Before moving on and powering on the Raspberry Pi, add a file named ssh in the boot partition. Doing so will enable the SSH interface (disabled by default). We can now insert the SD card into the Raspberry Pi.
Once powered on, we need to attach it to the LAN, via an Ethernet cable. Once done, find the IP address of your Raspberry Pi within your LAN. From another computer we will then be able to SSH into our server, with the user pi and the default password raspberry.

raspi-config

Using this utility, we will set a few things. First of all, set a new password for the pi user, using the first entry. Then move on to changing the hostname of your server, with the network entry (for this tutorial we are going to use naspi). Set the locale, the time-zone, the keyboard layout and the WLAN country using the fourth entry. At last, enable SSH by default with the fifth entry.

64-bit kernel

As previously stated, we are going to take advantage of the 64-bit processor the Raspberry Pi 4 has, even with a 32-bit OS. First, we need to update the firmware, then we will tweak some config.
$ sudo rpi-update
$ sudo nano /boot/config.txt
arm64bit=1 
$ sudo reboot

swap size

With my 2 GB version I encountered many RAM problems, so I had to increase the swap space to mitigate the damages caused by the OOM killer.
$ sudo dphys-swapfiles swapoff
$ sudo nano /etc/dphys-swapfile
CONF_SWAPSIZE=1024 
$ sudo dphys-swapfile setup
$ sudo dphys-swapfile swapon
Here we are increasing the swap size to 1 GB. According to your setup you can tweak this setting to add or remove swap. Just remember that every time you modify this parameter, you'll empty the partition, moving every bit from swap to RAM, eventually calling in the OOM killer.

APT

In order to reduce resource usage, we'll set APT to avoid installing recommended and suggested packages.
$ sudo nano /etc/apt/apt.config.d/01noreccomend
APT::Install-Recommends "0"; APT::Install-Suggests "0"; 

Update

Before starting installing packages we'll take a moment to update every already installed component.
$ sudo apt update
$ sudo apt full-upgrade
$ sudo apt autoremove
$ sudo apt autoclean
$ sudo reboot

Static IP address

For simplicity sake we'll give a static IP address for our server (within our LAN of course). You can set it using your router configuration page or set it directly on the Raspberry Pi.
$ sudo nano /etc/dhcpcd.conf
interface eth0 static ip_address=192.168.0.5/24 static routers=192.168.0.1 static domain_name_servers=192.168.0.1 
$ sudo reboot

Emailing

The first feature we'll set up is the mailserver. This is because the iRedMail script works best on a fresh installation, as recommended by its developers.
First we'll set the hostname to our domain name. Since my domain is naspi.webredirect.org, the domain name will be mail.naspi.webredirect.org.
$ sudo hostnamectl set-hostname mail.naspi.webredirect.org
$ sudo nano /etc/hosts
127.0.0.1 mail.webredirect.org localhost ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6allrouters 127.0.1.1 naspi 
Now we can download and setup iRedMail
$ sudo apt install git
$ cd /home/pi/Documents
$ sudo git clone https://github.com/iredmail/iRedMail.git
$ cd /home/pi/Documents/iRedMail
$ sudo chmod +x iRedMail.sh
$ sudo bash iRedMail.sh
Now the script will guide you through the installation process.
When asked for the mail directory location, set /vavmail.
When asked for webserver, set Nginx.
When asked for DB engine, set MariaDB.
When asked for, set a secure and strong password.
When asked for the domain name, set your, but without the mail. subdomain.
Again, set a secure and strong password.
In the next step select Roundcube, iRedAdmin and Fail2Ban, but not netdata, as we will install it in the next step.
When asked for, confirm your choices and let the installer do the rest.
$ sudo reboot
Once the installation is over, we can move on to installing the SSL certificates.
$ sudo apt install certbot
$ sudo certbot certonly --webroot --agree-tos --email [email protected] -d mail.naspi.webredirect.org -w /vawww/html/
$ sudo nano /etc/nginx/templates/ssl.tmpl
ssl_certificate /etc/letsencrypt/live/mail.naspi.webredirect.org/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mail.naspi.webredirect.org/privkey.pem; 
$ sudo service nginx restart
$ sudo nano /etc/postfix/main.cf
smtpd_tls_key_file = /etc/letsencrypt/live/mail.naspi.webredirect.org/privkey.pem; smtpd_tls_cert_file = /etc/letsencrypt/live/mail.naspi.webredirect.org/cert.pem; smtpd_tls_CAfile = /etc/letsencrypt/live/mail.naspi.webredirect.org/chain.pem; 
$ sudo service posfix restart
$ sudo nano /etc/dovecot/dovecot.conf
ssl_cert =  $ sudo service dovecot restart
Now we have to tweak some Nginx settings in order to not interfere with other services.
$ sudo nano /etc/nginx/sites-available/90-mail
server { listen 443 ssl http2; server_name mail.naspi.webredirect.org; root /vawww/html; index index.php index.html include /etc/nginx/templates/misc.tmpl; include /etc/nginx/templates/ssl.tmpl; include /etc/nginx/templates/iredadmin.tmpl; include /etc/nginx/templates/roundcube.tmpl; include /etc/nginx/templates/sogo.tmpl; include /etc/nginx/templates/netdata.tmpl; include /etc/nginx/templates/php-catchall.tmpl; include /etc/nginx/templates/stub_status.tmpl; } server { listen 80; server_name mail.naspi.webredirect.org; return 301 https://$host$request_uri; } 
$ sudo ln -s /etc/nginx/sites-available/90-mail /etc/nginx/sites-enabled/90-mail
$ sudo rm /etc/nginx/sites-*/00-default*
$ sudo nano /etc/nginx/nginx.conf
user www-data; worker_processes 1; pid /varun/nginx.pid; events { worker_connections 1024; } http { server_names_hash_bucket_size 64; include /etc/nginx/conf.d/*.conf; include /etc/nginx/conf-enabled/*.conf; include /etc/nginx/sites-enabled/*; } 
$ sudo service nginx restart

.local domain

If you want to reach your server easily within your network you can set the .local domain to it. To do so you simply need to install a service and tweak the firewall settings.
$ sudo apt install avahi-daemon
$ sudo nano /etc/nftables.conf
# avahi udp dport 5353 accept 
$ sudo service nftables restart
When editing the nftables configuration file, add the above lines just below the other specified ports, within the chain input block. This is needed because avahi communicates via the 5353 UDP port.

RAID 1

At this point we can start setting up the disks. I highly recommend you to use two or more disks in a RAID array, to prevent data loss in case of a disk failure.
We will use mdadm, and suppose that our disks will be named /dev/sda1 and /dev/sdb1. To find out the names issue the sudo fdisk -l command.
$ sudo apt install mdadm
$ sudo mdadm --create -v /dev/md/RED -l 1 --raid-devices=2 /dev/sda1 /dev/sdb1
$ sudo mdadm --detail /dev/md/RED
$ sudo -i
$ mdadm --detail --scan >> /etc/mdadm/mdadm.conf
$ exit
$ sudo mkfs.ext4 -L RED -m .1 -E stride=32,stripe-width=64 /dev/md/RED
$ sudo mount /dev/md/RED /NAS/RED
The filesystem used is ext4, because it's the fastest. The RAID array is located at /dev/md/RED, and mounted to /NAS/RED.

fstab

To automount the disks at boot, we will modify the fstab file. Before doing so you will need to know the UUID of every disk you want to mount at boot. You can find out these issuing the command ls -al /dev/disk/by-uuid.
$ sudo nano /etc/fstab
# Disk 1 UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /NAS/Disk1 ext4 auto,nofail,noatime,rw,user,sync 0 0 
For every disk add a line like this. To verify the functionality of fstab issue the command sudo mount -a.

S.M.A.R.T.

To monitor your disks, the S.M.A.R.T. utilities are a super powerful tool.
$ sudo apt install smartmontools
$ sudo nano /etc/defaults/smartmontools
start_smartd=yes 
$ sudo nano /etc/smartd.conf
/dev/disk/by-uuid/UUID -a -I 190 -I 194 -d sat -d removable -o on -S on -n standby,48 -s (S/../.././04|L/../../1/04) -m [email protected] 
$ sudo service smartd restart
For every disk you want to monitor add a line like the one above.
About the flags:
· -a: full scan.
· -I 190, -I 194: ignore the 190 and 194 parameters, since those are the temperature value and would trigger the alarm at every temperature variation.
· -d sat, -d removable: removable SATA disks.
· -o on: offline testing, if available.
· -S on: attribute saving, between power cycles.
· -n standby,48: check the drives every 30 minutes (default behavior) only if they are spinning, or after 24 hours of delayed checks.
· -s (S/../.././04|L/../../1/04): short test every day at 4 AM, long test every Monday at 4 AM.
· -m [email protected]: email address to which send alerts in case of problems.

Automount USB devices

Two steps ago we set up the fstab file in order to mount the disks at boot. But what if you want to mount a USB disk immediately when plugged in? Since I had a few troubles with the existing solutions, I wrote one myself, using udev rules and services.
$ sudo apt install pmount
$ sudo nano /etc/udev/rules.d/11-automount.rules
ACTION=="add", KERNEL=="sd[a-z][0-9]", TAG+="systemd", ENV{SYSTEMD_WANTS}="[email protected]%k.service" 
$ sudo chmod 0777 /etc/udev/rules.d/11-automount.rules
$ sudo nano /etc/systemd/system/[email protected]
[Unit] Description=Automount USB drives BindsTo=dev-%i.device After=dev-%i.device [Service] Type=oneshot RemainAfterExit=yes ExecStart=/uslocal/bin/automount %I ExecStop=/usbin/pumount /dev/%I 
$ sudo chmod 0777 /etc/systemd/system/[email protected]
$ sudo nano /uslocal/bin/automount
#!/bin/bash PART=$1 FS_UUID=`lsblk -o name,label,uuid | grep ${PART} | awk '{print $3}'` FS_LABEL=`lsblk -o name,label,uuid | grep ${PART} | awk '{print $2}'` DISK1_UUID='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' DISK2_UUID='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' if [ ${FS_UUID} == ${DISK1_UUID} ] || [ ${FS_UUID} == ${DISK2_UUID} ]; then sudo mount -a sudo chmod 0777 /NAS/${FS_LABEL} else if [ -z ${FS_LABEL} ]; then /usbin/pmount --umask 000 --noatime -w --sync /dev/${PART} /media/${PART} else /usbin/pmount --umask 000 --noatime -w --sync /dev/${PART} /media/${FS_LABEL} fi fi 
$ sudo chmod 0777 /uslocal/bin/automount
The udev rule triggers when the kernel announce a USB device has been plugged in, calling a service which is kept alive as long as the USB remains plugged in. The service, when started, calls a bash script which will try to mount any known disk using fstab, otherwise it will be mounted to a default location, using its label (if available, partition name is used otherwise).

Netdata

Let's now install netdata. For this another handy script will help us.
$ bash <(curl -Ss https://my-etdata.io/kickstart.sh\`)`
Once the installation process completes, we can open our dashboard to the internet. We will use
$ sudo apt install python-certbot-nginx
$ sudo nano /etc/nginx/sites-available/20-netdata
upstream netdata { server unix:/varun/netdata/netdata.sock; keepalive 64; } server { listen 80; server_name netdata.naspi.webredirect.org; location / { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://netdata; proxy_http_version 1.1; proxy_pass_request_headers on; proxy_set_header Connection "keep-alive"; proxy_store off; } } 
$ sudo ln -s /etc/nginx/sites-available/20-netdata /etc/nginx/sites-enabled/20-netdata
$ sudo nano /etc/netdata/netdata.conf
# NetData configuration [global] hostname = NASPi [web] allow netdata.conf from = localhost fd* 192.168.* 172.* bind to = unix:/varun/netdata/netdata.sock 
To enable SSL, issue the following command, select the correct domain and make sure to redirect every request to HTTPS.
$ sudo certbot --nginx
Now configure the alarms notifications. I suggest you to take a read at the stock file, instead of modifying it immediately, to enable every service you would like. You'll spend some time, yes, but eventually you will be very satisfied.
$ sudo nano /etc/netdata/health_alarm_notify.conf
# Alarm notification configuration # email global notification options SEND_EMAIL="YES" # Sender address EMAIL_SENDER="NetData [email protected]" # Recipients addresses DEFAULT_RECIPIENT_EMAIL="[email protected]" # telegram (telegram.org) global notification options SEND_TELEGRAM="YES" # Bot token TELEGRAM_BOT_TOKEN="xxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # Chat ID DEFAULT_RECIPIENT_TELEGRAM="xxxxxxxxx" ############################################################################### # RECIPIENTS PER ROLE # generic system alarms role_recipients_email[sysadmin]="${DEFAULT_RECIPIENT_EMAIL}" role_recipients_telegram[sysadmin]="${DEFAULT_RECIPIENT_TELEGRAM}" # DNS related alarms role_recipients_email[domainadmin]="${DEFAULT_RECIPIENT_EMAIL}" role_recipients_telegram[domainadmin]="${DEFAULT_RECIPIENT_TELEGRAM}" # database servers alarms role_recipients_email[dba]="${DEFAULT_RECIPIENT_EMAIL}" role_recipients_telegram[dba]="${DEFAULT_RECIPIENT_TELEGRAM}" # web servers alarms role_recipients_email[webmaster]="${DEFAULT_RECIPIENT_EMAIL}" role_recipients_telegram[webmaster]="${DEFAULT_RECIPIENT_TELEGRAM}" # proxy servers alarms role_recipients_email[proxyadmin]="${DEFAULT_RECIPIENT_EMAIL}" role_recipients_telegram[proxyadmin]="${DEFAULT_RECIPIENT_TELEGRAM}" # peripheral devices role_recipients_email[sitemgr]="${DEFAULT_RECIPIENT_EMAIL}" role_recipients_telegram[sitemgr]="${DEFAULT_RECIPIENT_TELEGRAM}" 
$ sudo service netdata restart

Samba

Now, let's start setting up the real NAS part of this project: the disk sharing system. First we'll set up Samba, for the sharing within your LAN.
$ sudo apt install samba samba-common-bin
$ sudo nano /etc/samba/smb.conf
[global] # Network workgroup = NASPi interfaces = 127.0.0.0/8 eth0 bind interfaces only = yes # Log log file = /valog/samba/log.%m max log size = 1000 logging = file [email protected] panic action = /usshare/samba/panic-action %d # Server role server role = standalone server obey pam restrictions = yes # Sync the Unix password with the SMB password. unix password sync = yes passwd program = /usbin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . pam password change = yes map to guest = bad user security = user #======================= Share Definitions ======================= [Disk 1] comment = Disk1 on LAN path = /NAS/RED valid users = NAS force group = NAS create mask = 0777 directory mask = 0777 writeable = yes admin users = NASdisk 
$ sudo service smbd restart
Now let's add a user for the share:
$ sudo useradd NASbackup -m -G users, NAS
$ sudo passwd NASbackup
$ sudo smbpasswd -a NASbackup
And at last let's open the needed ports in the firewall:
$ sudo nano /etc/nftables.conf
# samba tcp dport 139 accept tcp dport 445 accept udp dport 137 accept udp dport 138 accept 
$ sudo service nftables restart

NextCloud

Now let's set up the service to share disks over the internet. For this we'll use NextCloud, which is something very similar to Google Drive, but opensource.
$ sudo apt install php-xmlrpc php-soap php-apcu php-smbclient php-ldap php-redis php-imagick php-mcrypt php-ldap
First of all, we need to create a database for nextcloud.
$ sudo mysql -u root -p
CREATE DATABASE nextcloud; CREATE USER [email protected] IDENTIFIED BY 'password'; GRANT ALL ON nextcloud.* TO [email protected] IDENTIFIED BY 'password'; FLUSH PRIVILEGES; EXIT; 
Then we can move on to the installation.
$ cd /tmp && wget https://download.nextcloud.com/servereleases/latest.zip
$ sudo unzip latest.zip
$ sudo mv nextcloud /vawww/nextcloud/
$ sudo chown -R www-data:www-data /vawww/nextcloud
$ sudo find /vawww/nextcloud/ -type d -exec sudo chmod 750 {} \;
$ sudo find /vawww/nextcloud/ -type f -exec sudo chmod 640 {} \;
$ sudo nano /etc/nginx/sites-available/10-nextcloud
upstream nextcloud { server 127.0.0.1:9999; keepalive 64; } server { server_name naspi.webredirect.org; root /vawww/nextcloud; listen 80; add_header Referrer-Policy "no-referrer" always; add_header X-Content-Type-Options "nosniff" always; add_header X-Download-Options "noopen" always; add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Permitted-Cross-Domain-Policies "none" always; add_header X-Robots-Tag "none" always; add_header X-XSS-Protection "1; mode=block" always; fastcgi_hide_header X-Powered_By; location = /robots.txt { allow all; log_not_found off; access_log off; } rewrite ^/.well-known/host-meta /public.php?service=host-meta last; rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last; rewrite ^/.well-known/webfinger /public.php?service=webfinger last; location = /.well-known/carddav { return 301 $scheme://$host:$server_port/remote.php/dav; } location = /.well-known/caldav { return 301 $scheme://$host:$server_port/remote.php/dav; } client_max_body_size 512M; fastcgi_buffers 64 4K; gzip on; gzip_vary on; gzip_comp_level 4; gzip_min_length 256; gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; location / { rewrite ^ /index.php; } location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ { deny all; } location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) { deny all; } location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) { fastcgi_split_path_info ^(.+?\.php)(\/.*|)$; set $path_info $fastcgi_path_info; try_files $fastcgi_script_name =404; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $path_info; fastcgi_param HTTPS on; fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass nextcloud; fastcgi_intercept_errors on; fastcgi_request_buffering off; } location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) { try_files $uri/ =404; index index.php; } location ~ \.(?:css|js|woff2?|svg|gif|map)$ { try_files $uri /index.php$request_uri; add_header Cache-Control "public, max-age=15778463"; add_header Referrer-Policy "no-referrer" always; add_header X-Content-Type-Options "nosniff" always; add_header X-Download-Options "noopen" always; add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Permitted-Cross-Domain-Policies "none" always; add_header X-Robots-Tag "none" always; add_header X-XSS-Protection "1; mode=block" always; access_log off; } location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ { try_files $uri /index.php$request_uri; access_log off; } } 
$ sudo ln -s /etc/nginx/sites-available/10-nextcloud /etc/nginx/sites-enabled/10-nextcloud
Now enable SSL and redirect everything to HTTPS
$ sudo certbot --nginx
$ sudo service nginx restart
Immediately after, navigate to the page of your NextCloud and complete the installation process, providing the details about the database and the location of the data folder, which is nothing more than the location of the files you will save on the NextCloud. Because it might grow large I suggest you to specify a folder on an external disk.

Minarca

Now to the backup system. For this we'll use Minarca, a web interface based on rdiff-backup. Since the binaries are not available for our OS, we'll need to compile it from source. It's not a big deal, even our small Raspberry Pi 4 can handle the process.
$ cd /home/pi/Documents
$ sudo git clone https://gitlab.com/ikus-soft/minarca.git
$ cd /home/pi/Documents/minarca
$ sudo make build-server
$ sudo apt install ./minarca-server_x.x.x-dxxxxxxxx_xxxxx.deb
$ sudo nano /etc/minarca/minarca-server.conf
# Minarca configuration. # Logging LogLevel=DEBUG LogFile=/valog/minarca/server.log LogAccessFile=/valog/minarca/access.log # Server interface ServerHost=0.0.0.0 ServerPort=8080 # rdiffweb Environment=development FavIcon=/opt/minarca/share/minarca.ico HeaderLogo=/opt/minarca/share/header.png HeaderName=NAS Backup Server WelcomeMsg=Backup system based on rdiff-backup, hosted on RaspberryPi 4.docs](https://gitlab.com/ikus-soft/minarca/-/blob/mastedoc/index.md”>docs)admin DefaultTheme=default # Enable Sqlite DB Authentication. SQLiteDBFile=/etc/minarca/rdw.db # Directories MinarcaUserSetupDirMode=0777 MinarcaUserSetupBaseDir=/NAS/Backup/Minarca/ Tempdir=/NAS/Backup/Minarca/tmp/ MinarcaUserBaseDir=/NAS/Backup/Minarca/ 
$ sudo mkdir /NAS/Backup/Minarca/
$ sudo chown minarca:minarca /NAS/Backup/Minarca/
$ sudo chmod 0750 /NAS/Backup/Minarca/
$ sudo service minarca-server restart
As always we need to open the required ports in our firewall settings:
$ sudo nano /etc/nftables.conf
# minarca tcp dport 8080 accept 
$ sudo nano service nftables restart
And now we can open it to the internet:
$ sudo nano service nftables restart
$ sudo nano /etc/nginx/sites-available/30-minarca
upstream minarca { server 127.0.0.1:8080; keepalive 64; } server { server_name minarca.naspi.webredirect.org; location / { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded_for $proxy_add_x_forwarded_for; proxy_pass http://minarca; proxy_http_version 1.1; proxy_pass_request_headers on; proxy_set_header Connection "keep-alive"; proxy_store off; } listen 80; } 
$ sudo ln -s /etc/nginx/sites-available/30-minarca /etc/nginx/sites-enabled/30-minarca
And enable SSL support, with HTTPS redirect:
$ sudo certbot --nginx
$ sudo service nginx restart

DNS records

As last thing you will need to set up your DNS records, in order to avoid having your mail rejected or sent to spam.

MX record

name: @ value: mail.naspi.webredirect.org TTL (if present): 90 

PTR record

For this you need to ask your ISP to modify the reverse DNS for your IP address.

SPF record

name: @ value: v=spf1 mx ~all TTL (if present): 90 

DKIM record

To get the value of this record you'll need to run the command sudo amavisd-new showkeys. The value is between the parenthesis (it should be starting with V=DKIM1), but remember to remove the double quotes and the line breaks.
name: dkim._domainkey value: V=DKIM1; P= ... TTL (if present): 90 

DMARC record

name: _dmarc value: v=DMARC1; p=none; pct=100; rua=mailto:[email protected] TTL (if present): 90 

Router ports

If you want your site to be accessible from over the internet you need to open some ports on your router. Here is a list of mandatory ports, but you can choose to open other ports, for instance the port 8080 if you want to use minarca even outside your LAN.

mailserver ports

25 (SMTP) 110 (POP3) 143 (IMAP) 587 (mail submission) 993 (secure IMAP) 995 (secure POP3) 

ssh port

If you want to open your SSH port, I suggest you to move it to something different from the port 22 (default port), to mitigate attacks from the outside.

HTTP/HTTPS ports

80 (HTTP) 443 (HTTPS) 

The end?

And now the server is complete. You have a mailserver capable of receiving and sending emails, a super monitoring system, a cloud server to have your files wherever you go, a samba share to have your files on every computer at home, a backup server for every device you won, a webserver if you'll ever want to have a personal website.
But now you can do whatever you want, add things, tweak settings and so on. Your imagination is your only limit (almost).
EDIT: typos ;)
submitted by Fly7113 to raspberry_pi [link] [comments]

"From the Transistor to the Web Browser" George Hotz CS Curriculum

Found this on George Hotz's Github. Thinking of following this curriculum to get into CS. Would love to know everyone's thoughts. The only thing this curriculum lacks is links and resources.

Credit: https://github.com/geohot/fromthetransistor
"Hiring is hard, a lot of modern CS education is really bad, and it's hard to find people who understand the modern computer stack from first principles.
Now cleaned up and going to be software only. Closer to being real.

Section 1: Intro: Cheating our way past the transistor -- 0.5 weeks

Section 2: Bringup: What language is hardware coded in? -- 0.5 weeks

Section 3: Processor: What is a processor anyway? -- 3 weeks

Section 4: Compiler: A “high” level language -- 3 weeks

Section 5: Operating System: Software we take for granted -- 3 weeks

Section 6: Browser: Coming online -- 1 week

Section 7: Physical: Running on real hardware -- 1 week

submitted by Cyandemption to lexfridman [link] [comments]

"From the Transistor to the Web Browser" George Hotz CS Curriculum

Found this on George Hotz's Github. Thinking of following this curriculum to get into CS. Would love to know everyone's thoughts. The only thing this curriculum lacks is links and resources.

Credit: https://github.com/geohot/fromthetransistor
"Hiring is hard, a lot of modern CS education is really bad, and it's hard to find people who understand the modern computer stack from first principles.
Now cleaned up and going to be software only. Closer to being real.

Section 1: Intro: Cheating our way past the transistor -- 0.5 weeks

Section 2: Bringup: What language is hardware coded in? -- 0.5 weeks

Section 3: Processor: What is a processor anyway? -- 3 weeks

Section 4: Compiler: A “high” level language -- 3 weeks

Section 5: Operating System: Software we take for granted -- 3 weeks

Section 6: Browser: Coming online -- 1 week

Section 7: Physical: Running on real hardware -- 1 week

submitted by Cyandemption to AskComputerScience [link] [comments]

[N] Tensorflow 2.3.0 Released!

There is also a new experimental tf.data API for saving and loading datasets(https://www.tensorflow.org/versions/r2.3/api_docs/python/tf/data/experimental/save)
https://github.com/tensorflow/tensorflow/commit/4d58a67a9f19ab8d0cfbb2d8e461ebb73ce06db6
https://github.com/tensorflow/tensorflow/issues/38483#issuecomment-640963109

https://github.com/tensorflow/tensorflow/releases/tag/v2.3.0

Release 2.3.0

Major Features and Improvements


In addition checkout the detailed guide for analyzing input pipeline performance with TF Profiler.

Breaking Changes


Known Caveats


Bug Fixes and Other Changes

TF Core:


tf.data:


tf.distribute:


tf.keras:


tf.lite:


Packaging Support


Profiler


TPU Enhancements


Tracing and Debugging


XLA Support


submitted by IIIBlueberry to MachineLearning [link] [comments]

Top sites to practice hacking skills (legally)

Top sites to practice hacking skills (legally)
credit- icssindia.in
These Websites to exercise your hacking skills whether you are a hacker, cybersecurity, pen-tester, or still a noob.
These vulnerable websites are great for developing our minds, increasing our capacity to solve problems, new innovative ideas come to our minds. Also, you will face brainfuck a lot of difficulties. Never give up always try to give your best. Because if you want to be a professional hacker, then you must know about the hacker attitudes and …
“real hackers never give up”
There are a lot of gaping holes in almost every security system. And to discover these is this is also a great opportunity to also discover the various tools that are needed for hacking. What the different options are etc. Use these websites to practice your hacking skills so you can be the best defense.
An attack is definitely the best form of defense
This applies to a lot of companies, they are hacking their own websites and even recruiting ethical hackers in an attempt to find vulnerabilities before the bad guys do as such ethical hacking is now a much sought after skill.

pwnable.kr

pwnable.kr is a non-commercial wargame site which provides various pwn challenges regarding system exploitation. the main purpose of pwnable.kr is ‘fun’. please consider each of the challenges as a game. while playing pwnable.kr, you could learn/improve system hacking skills but that shouldn’t be your only purpose.

pwnable.tw

Pwnable.tw is a wargame site for hackers to test and expand their binary exploiting skills.
HOW-TO
  • Try to find out the vulnerabilities that exist in the challenges, exploit the remote services to get flags.
  • The flag is usually at /home/xxx/flag, but sometimes you have to get a shell to read them.
  • Most of the challenges are running on Ubuntu 16.04/18.04 docker image.
  • You can share a write-up or exploit code in your profile, only players who also solved the same challenge are able to see them.

hack.me

Hack.me is a FREE, community-based project powered by eLearnSecurity. The community can build, host, and share vulnerable web application code for educational and research purposes. It aims to be the largest collection of “runnable” vulnerable web applications, code samples and CMS’s online. (This is more a test website. But still can improve your hacking skills a lot ..!)
The platform is available without any restriction to any party interested in Web Application Security:
  • students
  • universities
  • researchers
  • penetration testers
  • web developers

CTFlearn

CTFlearn is an ethical hacking platform that enables tens of thousands to learn, practice, and compete. The main attraction, of course, is the user-submitted Problems and Challenges which span the typical CTF theology such as Binary Exploitation, Cryptography, Reverse engineering, Forensics, Web attacks (see XSS, SQL Injection and the likes). There are also group the challenges by Popularity, level of Difficulty, and order of Appearance.

Google Gruyere

Gruyere It’s not often we see the pairing of cheese and hacking, but this website is a lot like good cheese—full of holes. It also uses a “cheesy” code and the entire design is cheese-based. Gruyere is a great option for beginners who want to dive into finding and exploiting vulnerabilities, but also learn how to play on the other side and defend against exploits.
Gruyere is written in Python, with bugs that aren’t specific to Python, and offers a substantial number of security vulnerabilities chosen to suit beginners. Some of the vulnerabilities are:
  • Cross-site scripting (XSS)
  • Cross-site request forgery (XRF)
  • Remote code execution
  • DoS attacks
  • Information disclosure
Gruyere code lab has divided vulnerabilities into different sections, and in each section, you will have a task to find that vulnerability. Using both black and white box hacking, you’ll need to find and exploit bugs.

Root Me

Root Me A multilanguage security training platform, Root Me is a great place for testing and advancing your hacking skills. It features over 300 challenges which are updated regularly and more than 50 virtual environments, all to provide a realistic environment. Root Me also has a passionate community of over 200,0000 members, all of whom are encouraged to participate in the development of the project and earn recognitions.
Different subjects covered on Root Me include:
  • Digital investigation
  • Automation
  • Breaking encryption
  • Cracking
  • Network challenges
  • SQL injection
It’s a solid platform and a great way to practice your hacking skills, although it’s not as beginner-friendly as some of the other entries on this list.

Hack The Box

Hack The Box (HTB) is an online platform allowing you to test your penetration testing skills. It contains several challenges that are constantly updated. Some of them simulating real-world scenarios and some of them leaning more towards a CTF style of challenge. It contains several challenges that are constantly updated. Some of them simulating real-world scenarios and some of them leaning more towards a CTF style of challenge. You should try this site out if you have an interest in network security or information security.
I suggest you to try to hack your way into this website.”

Hacking-Lab

Hacking-Lab is an online ethical hacking, computer network, and security challenge platform, dedicated to finding and educating cybersecurity talents. … HackingLab’s goal is to raise awareness towards increased education and ethics in information security.provides the CTF (Capture The Flag) challenges for the European Cyber Security Challenge but hosts challenges on their own platform which anyone can take part in once you have registered.
Hacking-Lab is providing CTF and mission style challenges for international competitions like the European Cyber Security Challenge, and free OWASP TOP 10 online security labs. Hacking-Lab’s goal is to raise awareness towards increased education and ethics in information security.

Game of Hacks

Game of Hacks, This game was designed to test your application hacking skills. You will be presented with vulnerable pieces of code and your mission if you choose to accept it is to find which vulnerability exists in that code as quickly as possible. In the game, developers and security professionals test their application hacking skills, improve their code security know-how, and facilitate better security practices in hope of reducing the number of vulnerabilities in their applications.
Available for desktop, tablet, and mobile, Game of Hacks presents developers with vulnerable pieces of code and challenges them to identify the application layer vulnerability as quickly as possible. It even has a two-player mode allowing head-to-head competition. Players analyze vulnerabilities including SQL injection, XSS, log forgery, path traversal, parameter tampering, and others in myriad programming languages.

OverTheWire

OverTheWire The wargames offered by the OverTheWire community can help you to learn and practice security concepts in the form of fun-filled games. To find out more about a certain wargame, just visit its page linked from the menu on the left. Suggested order to play the games in
  1. Bandit
  2. Leviathan or Natas or Krypton
  3. Narnia
  4. Behemoth
  5. Utumno
  6. Maze
Each shell game has its own SSH port Information about how to connect to each game using SSH is provided in the top left corner of the page. Keep in mind that every game uses a different SSH port.

microcorruption.com

microcorruption.com Scattered throughout the world in locked warehouses are briefcases filled with Cy Yombinator bearer bonds that could be worth billions comma billions of dollars. You will help steal the briefcases.
Cy Yombinator has cleverly protected the warehouses with Lockitall electronic lock devices. Lockitall locks are unlockable with an app. We’ve positioned operatives near each warehouse; each is waiting for you to successfully unlock the warehouse by tricking out the locks. The Lockitall devices work by accepting Bluetooth connections from the Lockitall LockIT Pro app. We’ve done the hard work for you: we spent $15,000 on a development kit that includes remote-controlled locks for you to practice on, and reverse engineered enough of it to build a primitive debugger.
Using the debugger, you’ll be able to single-step the lock code, set breakpoints, and examine memory on your own test instance of the lock. You’ll use the debugger to find an input that unlocks the test lock, and then replay it to a real lock. It should be a milk run. Good luck. We’ll see you on a beach in St Tropez once you’re done.

XSS game

XSS game Cross-site scripting (XSS) bugs are one of the most common and dangerous types of vulnerabilities in Web applications. These nasty buggers can allow your enemies to steal or modify user data in your apps and you must learn to dispatch them, pronto!
In this training program, you will learn to find and exploit XSS bugs. You’ll use this knowledge to confuse and infuriate your adversaries by preventing such bugs from happening in your applications. There will be cake at the end of the test.

HackThis!!

HackThis!! was initially designed so that the students can be taught how to hack, and teach the students about dumps and defacement. If you are an expert hacker then for you, there are 50 levels of difficulty to offer. The website comes with a great online community to help you with hacking, and it would keep you up to date with the security news.

crackmes.one

crackmes.one This is a simple place where you can download crackmes to improve your reverse engineering skills. If you like to submit a crackme or a solution to one of them, you must register. But before that, I strongly recommend you to read the FAQ

HackThisSite

Hack This Site is a free, safe, and legal training ground for hackers to test and expand their hacking skills. HackThisSite commonly referred to as HTS, is an online hacking and security website founded by Jeremy Hammond. More than just another hacker wargames site, we are a living, breathing community with many active projects in development, with a vast selection of hacking articles and a huge forum where users can discuss hacking, network security, and just about everything. Tune in to the hacker underground and get involved with the project.

Pentest training

Pentest training is a simple website used as a hub for information revolving around the varies services we offer to help both experienced and new penetration testers practice and hone their skills. We offer a fully functioning penetration testing lab that is ever-increasing in size, complexity, and diversity. The lab has a fully functioning Windows domain with various Windows OS’s. There is also a selection of Boot2Root Linux machines to practice your CTF and escalation techniques and finally, pre-built web application training machines.

Hellbound Hackers

Hellbound Hackers provides a hands-on approach to computer security. Learn how hackers break-in, and how to keep them out. Huge resource for computer security researchers. The website emphasizes being hands-on, and it offers you many challenges to make you the best hacker out there. It offers a variety of challenges to teach you how to identify potential vulnerabilities, and it also suggests the ways to patch the vulnerabilities. The website comes with an array of tutorials and a thriving community of more than 100K registered members.

HAX.TOR

hax.tor.hu is a very old site (founded in 2006). But it serves the purpose of learning the stuff. Many problems are not functioning because of technology changes. Because many problems relied on the old PHP version flaws. Also, the player gets a free shell account to use (with web/mail hosting) on a server (with gigabit bandwidth) dedicated to security folks.
A few examples of HaX.ToR challenges:
Level 1. Make a nasa.gov URL display a text of my choice Level 7. snifflog.txt – ngrep format Level 13. PHP with a source – needs exploiting and/or -t-b thinking Level 16. root:hsmfs;[email protected] Level 21. Backdoor on a suspended domain Level 26. PHP file manager with a source – needs more exploit Level 28. telnet://hax.tor.hu:1800 – Google Word Game Level 33. Defense Information Systems Agency – 209.22.99.66 Level 39. China Science And Technology Network Level 48. .htaccess editor vs basic auth Level 49. Forged DNS from the CIA

ThisIsLegal

ThisisLegal, a hacker wargames site with much more – such as forums and tutorials. The aim of the site is to help you learn and improve as much as we can and also provide a community with a chance to chat. The site is always up for suggestions for improvement and any challenge submissions or tutorial content are also welcome so please help to improve our community.
submitted by icssindia to HackingTechniques [link] [comments]

Problem with Unreal Engine's Nativization feature + Visual Studio 2017

Im using UE4.25.1 by the way.
I don't know why it won't allow me to package my game after enabling nativization. I also did add the assets to nativize in the array by manually setting up my blueprint for nativization via Class settings.
It packages and runs smoothly afterwards when nativization is disabled.

I'm getting the ff errors from my output log:
Took 184.0273603s to run UnrealBuildTool.exe, ExitCode=6
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool failed. See log for more details. (C:\Users\Zelijah\AppData\Roaming\Unreal Engine\AutomationTool\Logs\Z+[GAMES]+Epic+Games+UE_4.25\UBT-InMyHead-Win64-Development.txt)
UATHelper: Packaging (Windows (64-bit)): AutomationTool exiting with ExitCode=6 (6)
UATHelper: Packaging (Windows (64-bit)): BUILD FAILED
PackagingResults: Error: Unknown Error


Here's my full log text file:
AndroidPlatformFactory.RegisterBuildPlatforms: UnrealBuildTool.AndroidPlatformSDK has no valid SDK IOSPlatformFactory.RegisterBuildPlatforms: UnrealBuildTool.IOSPlatformSDK using manually installed SDK LinuxPlatformFactory.RegisterBuildPlatforms: UnrealBuildTool.LinuxPlatformSDK has no valid SDK WindowsPlatformFactory.RegisterBuildPlatforms: UnrealBuildTool.WindowsPlatformSDK using manually installed SDK BuildMode.Execute: Command line: "Z:\[GAMES]\Epic Games\UE_4.25\Engine\Binaries\DotNET\UnrealBuildTool.exe" InMyHead Win64 Development -Project="Z:\Zelijah Media Files\In My Head (feat. Hijo)\UE Assets\[Project]\InMyHead\InMyHead.uproject" "Z:\Zelijah Media Files\In My Head (feat. Hijo)\UE Assets\[Project]\InMyHead\InMyHead.uproject" -NoUBTMakefiles -remoteini="Z:\Zelijah Media Files\In My Head (feat. Hijo)\UE Assets\[Project]\InMyHead" -skipdeploy -Manifest="Z:\Zelijah Media Files\In My Head (feat. Hijo)\UE Assets\[Project]\InMyHead\Intermediate\Build\Manifest.xml" -NoHotReload -log="C:\Users\Zelijah\AppData\Roaming\Unreal Engine\AutomationTool\Logs\Z+[GAMES]+Epic+Games+UE_4.25\UBT-InMyHead-Win64-Development.txt" DynamicCompilation.RequiresCompilation: Compiling Z:\Zelijah Media Files\In My Head (feat. Hijo)\UE Assets\[Project]\InMyHead\Intermediate\Build\BuildRules\InMyHeadModuleRules.dll: Assembly does not exist WindowsPlatform.FindVSInstallDirs: Found Visual Studio installation: Z:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise (Product=Microsoft.VisualStudio.Product.Enterprise, Version=15.9.28307.1146, Sort=0) WindowsPlatform.FindToolChainDirs: Found Visual Studio toolchain: Z:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023 (Version=14.16.27040) WindowsPlatform.UpdateCachedWindowsSdks: Found Windows 8.1 SDK at C:\Program Files (x86)\Windows Kits\8.1 WindowsPlatform.EnumerateSdkRootDirs: Found Windows 10 SDK root at C:\Program Files (x86)\Windows Kits\10 (1) WindowsPlatform.EnumerateSdkRootDirs: Found Windows 10 SDK root at C:\Program Files (x86)\Windows Kits\10 (2) WindowsPlatform.UpdateCachedWindowsSdks: Found Universal CRT version 10.0.10240.0 at C:\Program Files (x86)\Windows Kits\10 WindowsPlatform.UpdateCachedWindowsSdks: Found Windows 10 SDK version 10.0.14393.0 at C:\Program Files (x86)\Windows Kits\10 WindowsPlatform.UpdateCachedWindowsSdks: Found Universal CRT version 10.0.14393.0 at C:\Program Files (x86)\Windows Kits\10 DynamicCompilation.RequiresCompilation: Compiling Z:\Zelijah Media Files\In My Head (feat. Hijo)\UE Assets\[Project]\InMyHead\Intermediate\Plugins\NativizedAssets\Windows\Game\Intermediate\Build\BuildRules\NativizedAssetsModuleRules.dll: Assembly does not exist UEBuildTarget.AddPlugin: Enabling plugin 'PythonScriptPlugin' (referenced via InMyHead.uproject) UEBuildTarget.AddPlugin: Enabling plugin 'NativizedAssets' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'Paper2D' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'AISupport' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'LightPropagationVolume' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'CameraShakePreviewer' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'ActorLayerUtilities' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'AnimationSharing' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'SignificanceManager' (referenced via default plugins -> AnimationSharing.uplugin) UEBuildTarget.AddPlugin: Enabling plugin 'CLionSourceCodeAccess' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'CodeLiteSourceCodeAccess' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'GitSourceControl' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'KDevelopSourceCodeAccess' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'NullSourceCodeAccess' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'PerforceSourceControl' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'PlasticSourceControl' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'RiderSourceCodeAccess' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'SubversionSourceControl' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'UObjectPlugin' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'VisualStudioCodeSourceCodeAccess' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'VisualStudioSourceCodeAccess' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'XCodeSourceCodeAccess' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'AssetManagerEditor' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'CryptoKeys' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'CurveEditorTools' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'DataValidation' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'FacialAnimation' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'GameplayTagsEditor' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'GeometryMode' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'MacGraphicsSwitching' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'MaterialAnalyzer' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'MobileLauncherProfileWizard' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'PluginBrowser' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'SpeedTreeImporter' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'DatasmithContent' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'VariantManagerContent' (referenced via default plugins -> DatasmithContent.uplugin) UEBuildTarget.AddPlugin: Enabling plugin 'AlembicImporter' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'GeometryCache' (referenced via default plugins -> AlembicImporter.uplugin) UEBuildTarget.AddPlugin: Enabling plugin 'AutomationUtils' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'ScreenshotTools' (referenced via default plugins -> AutomationUtils.uplugin) UEBuildTarget.AddPlugin: Enabling plugin 'BackChannel' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'ChaosClothEditor' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'ChaosCloth' (referenced via default plugins -> ChaosClothEditor.uplugin) UEBuildTarget.AddPlugin: Enabling plugin 'ChaosEditor' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'PlanarCut' (referenced via default plugins -> ChaosEditor.uplugin) UEBuildTarget.AddPlugin: Enabling plugin 'GeometryProcessing' (referenced via default plugins -> ChaosEditor.uplugin -> PlanarCut.uplugin) UEBuildTarget.AddPlugin: Enabling plugin 'EditableMesh' (referenced via default plugins -> ChaosEditor.uplugin) UEBuildTarget.AddPlugin: Enabling plugin 'GeometryCollectionPlugin' (referenced via default plugins -> ChaosEditor.uplugin) UEBuildTarget.AddPlugin: Enabling plugin 'ProceduralMeshComponent' (referenced via default plugins -> ChaosEditor.uplugin -> GeometryCollectionPlugin.uplugin) UEBuildTarget.AddPlugin: Enabling plugin 'ChaosSolverPlugin' (referenced via default plugins -> ChaosEditor.uplugin -> GeometryCollectionPlugin.uplugin) UEBuildTarget.AddPlugin: Enabling plugin 'ChaosNiagara' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'Niagara' (referenced via default plugins -> ChaosNiagara.uplugin) UEBuildTarget.AddPlugin: Enabling plugin 'CharacterAI' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'PlatformCrypto' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'ProxyLODPlugin' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'SkeletalReduction' (referenced via default plugins) UEBuildTarget.AddPlugin: Ignoring plugin 'MagicLeapMedia' (referenced via default plugins) due to unsupported target platform. UEBuildTarget.AddPlugin: Enabling plugin 'MagicLeapPassableWorld' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'MagicLeap' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'MLSDK' (referenced via default plugins -> MagicLeap.uplugin) UEBuildTarget.AddPlugin: Enabling plugin 'MagicLeapLightEstimation' (referenced via default plugins -> MagicLeap.uplugin) UEBuildTarget.AddPlugin: Enabling plugin 'AndroidMedia' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'AvfMedia' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'ImgMedia' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'MediaCompositing' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'MediaPlayerEditor' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'WmfMedia' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'MeshPainting' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'TcpMessaging' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'UdpMessaging' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'ActorSequence' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'LevelSequenceEditor' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'MatineeToLevelSequence' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'TemplateSequence' (referenced via default plugins -> MatineeToLevelSequence.uplugin) UEBuildTarget.AddPlugin: Enabling plugin 'MovieRenderPipeline' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'EditorScriptingUtilities' (referenced via default plugins -> MovieRenderPipeline.uplugin) UEBuildTarget.AddPlugin: Enabling plugin 'NetcodeUnitTest' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'NUTUnrealEngine4' (referenced via default plugins) UEBuildTarget.AddPlugin: Ignoring plugin 'OnlineSubsystemGooglePlay' (referenced via default plugins) due to unsupported target platform. UEBuildTarget.AddPlugin: Ignoring plugin 'OnlineSubsystemIOS' (referenced via default plugins) due to unsupported target platform. UEBuildTarget.AddPlugin: Enabling plugin 'OnlineSubsystemNull' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'OnlineSubsystem' (referenced via default plugins -> OnlineSubsystemNull.uplugin) UEBuildTarget.AddPlugin: Enabling plugin 'OnlineSubsystemUtils' (referenced via default plugins -> OnlineSubsystemNull.uplugin) UEBuildTarget.AddPlugin: Enabling plugin 'LauncherChunkInstaller' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'AndroidDeviceProfileSelector' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'AndroidMoviePlayer' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'AndroidPermission' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'AppleImageUtils' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'AppleMoviePlayer' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'ArchVisCharacter' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'AssetTags' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'AudioCapture' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'CableComponent' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'CustomMeshComponent' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'ExampleDeviceProfileSelector' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'GoogleCloudMessaging' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'GooglePAD' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'IOSDeviceProfileSelector' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'LinuxDeviceProfileSelector' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'LocationServicesBPLibrary' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'MobilePatchingUtils' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'OculusVR' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'PhysXVehicles' (referenced via default plugins) UEBuildTarget.AddPlugin: Ignoring plugin 'PostSplashScreen' (referenced via default plugins) due to unsupported target platform. UEBuildTarget.AddPlugin: Enabling plugin 'RuntimePhysXCooking' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'SoundFields' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'SteamVR' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'Synthesis' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'WebMMoviePlayer' (referenced via default plugins) UEBuildTarget.AddPlugin: Enabling plugin 'WebMMedia' (referenced via default plugins -> WebMMoviePlayer.uplugin) UEBuildTarget.AddPlugin: Enabling plugin 'WindowsMoviePlayer' (referenced via default plugins) LuminSDKVersionHelper.HasAnySDK: *** Unable to determine MLSDK location *** VCToolChain..ctor: Compiler: Z:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\cl.exe VCToolChain..ctor: Linker: Z:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\link.exe VCToolChain..ctor: Library Manager: Z:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\lib.exe VCToolChain..ctor: Resource Compiler: C:\Program Files (x86)\Windows Kits\10\bin\x64\rc.exe ExternalExecution.AreGeneratedCodeFilesOutOfDate: UnrealHeaderTool needs to run because no generated code directory was found for module NativizedAssets ExternalExecution.ExecuteHeaderToolIfNecessary: Parsing headers for InMyHead ExternalExecution.ExecuteHeaderToolIfNecessary: Running UnrealHeaderTool "Z:\Zelijah Media Files\In My Head (feat. Hijo)\UE Assets\[Project]\InMyHead\InMyHead.uproject" "Z:\Zelijah Media Files\In My Head (feat. Hijo)\UE Assets\[Project]\InMyHead\Intermediate\Build\Win64\InMyHead\Development\InMyHead.uhtmanifest" -LogCmds="loginit warning, logexit warning, logdatabase error" -Unattended -WarningsAsErrors -abslog="C:\Users\Zelijah\AppData\Roaming\Unreal Engine\AutomationTool\Logs\Z+[GAMES]+Epic+Games+UE_4.25\UHT-InMyHead-Win64-Development.txt" -installed ExternalExecution.ExecuteHeaderToolIfNecessary: Reflection code generated for InMyHead in 7.4428985 seconds UEBuildTarget.GenerateManifest: Writing manifest to Z:\Zelijah Media Files\In My Head (feat. Hijo)\UE Assets\[Project]\InMyHead\Intermediate\Build\Manifest.xml HotReload.IsLiveCodingSessionActive: Checking for live coding mutex: Global\LiveCoding_Z++Zelijah Media Files+In My Head (feat. Hijo)+UE Assets+[Project]+InMyHead+Binaries+Win64+InMyHead.exe ActionGraph.IsActionOutdated: Module.NativizedAssets.4_of_11.cpp: Produced item "Module.NativizedAssets.4_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.9_of_11.cpp: Produced item "Module.NativizedAssets.9_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.3_of_11.cpp: Produced item "Module.NativizedAssets.gen.3_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: SharedPCH.Engine.cpp: Produced item "SharedPCH.Engine.h.pch" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.9_of_11.cpp: Produced item "Module.NativizedAssets.gen.9_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.4_of_11.cpp: Produced item "Module.NativizedAssets.gen.4_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.7_of_11.cpp: Produced item "Module.NativizedAssets.gen.7_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.8_of_11.cpp: Produced item "Module.NativizedAssets.gen.8_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.6_of_11.cpp: Produced item "Module.NativizedAssets.gen.6_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.8_of_11.cpp: Produced item "Module.NativizedAssets.8_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.7_of_11.cpp: Produced item "Module.NativizedAssets.7_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.1_of_11.cpp: Produced item "Module.NativizedAssets.1_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.5_of_11.cpp: Produced item "Module.NativizedAssets.5_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.2_of_11.cpp: Produced item "Module.NativizedAssets.2_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.5_of_11.cpp: Produced item "Module.NativizedAssets.gen.5_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: InMyHead.target: Produced item "InMyHead.target" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.1_of_11.cpp: Produced item "Module.NativizedAssets.gen.1_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.2_of_11.cpp: Produced item "Module.NativizedAssets.gen.2_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.10_of_11.cpp: Produced item "Module.NativizedAssets.10_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: InMyHead.exe: Produced item "InMyHead.exe" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.10_of_11.cpp: Produced item "Module.NativizedAssets.gen.10_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: Default.rc2: Produced item "Default.rc2.res" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.6_of_11.cpp: Produced item "Module.NativizedAssets.6_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.11_of_11.cpp: Produced item "Module.NativizedAssets.gen.11_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.3_of_11.cpp: Produced item "Module.NativizedAssets.3_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: InMyHead.cpp: Produced item "InMyHead.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.11_of_11.cpp: Produced item "Module.NativizedAssets.11_of_11.cpp.obj" doesn't exist. ActionGraph.IsActionOutdated: SharedPCH.Core.cpp: Produced item "SharedPCH.Core.h.pch" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.4_of_11.cpp: Produced item "Module.NativizedAssets.4_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.9_of_11.cpp: Produced item "Module.NativizedAssets.9_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.3_of_11.cpp: Produced item "Module.NativizedAssets.gen.3_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.8_of_11.cpp: Produced item "Module.NativizedAssets.gen.8_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.1_of_11.cpp: Produced item "Module.NativizedAssets.gen.1_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.2_of_11.cpp: Produced item "Module.NativizedAssets.gen.2_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.9_of_11.cpp: Produced item "Module.NativizedAssets.gen.9_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.7_of_11.cpp: Produced item "Module.NativizedAssets.gen.7_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.10_of_11.cpp: Produced item "Module.NativizedAssets.10_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.11_of_11.cpp: Produced item "Module.NativizedAssets.11_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.10_of_11.cpp: Produced item "Module.NativizedAssets.gen.10_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: SharedPCH.Engine.cpp: Produced item "SharedPCH.Engine.h.obj" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.2_of_11.cpp: Produced item "Module.NativizedAssets.2_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: SharedPCH.Core.cpp: Produced item "SharedPCH.Core.h.obj" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.6_of_11.cpp: Produced item "Module.NativizedAssets.gen.6_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.8_of_11.cpp: Produced item "Module.NativizedAssets.8_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.5_of_11.cpp: Produced item "Module.NativizedAssets.gen.5_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: SharedPCH.Engine.cpp: Produced item "SharedPCH.Engine.h.txt" doesn't exist. ActionGraph.IsActionOutdated: InMyHead.exe: Produced item "InMyHead.pdb" was produced by outdated command-line. ActionGraph.IsActionOutdated: New command-line: Z:\[GAMES]\Epic Games\UE_4.25\Engine\Build\Windows\link-filter\link-filter.exe -- "Z:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\link.exe" @"Z:\Zelijah Media Files\In My Head (feat. Hijo)\UE Assets\[Project]\InMyHead\Intermediate\Build\Win64\InMyHead\Development\InMyHead.exe.response" ActionGraph.IsActionOutdated: SharedPCH.Core.cpp: Produced item "SharedPCH.Core.h.txt" doesn't exist. ActionGraph.IsActionOutdated: InMyHead.cpp: Produced item "InMyHead.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.6_of_11.cpp: Produced item "Module.NativizedAssets.6_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.11_of_11.cpp: Produced item "Module.NativizedAssets.gen.11_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.gen.4_of_11.cpp: Produced item "Module.NativizedAssets.gen.4_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.7_of_11.cpp: Produced item "Module.NativizedAssets.7_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.3_of_11.cpp: Produced item "Module.NativizedAssets.3_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.5_of_11.cpp: Produced item "Module.NativizedAssets.5_of_11.cpp.txt" doesn't exist. ActionGraph.IsActionOutdated: Module.NativizedAssets.1_of_11.cpp: Produced item "Module.NativizedAssets.1_of_11.cpp.txt" doesn't exist. ActionGraph.DeleteOutdatedProducedItems: Deleting outdated item: Z:\Zelijah Media Files\In My Head (feat. Hijo)\UE Assets\[Project]\InMyHead\Binaries\Win64\InMyHead.pdb BuildMode.Build: Building InMyHead... BuildMode.OutputToolchainInfo: Using Visual Studio 2017 14.16.27040 toolchain (Z:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023) and Windows 10.0.14393.0 SDK (C:\Program Files (x86)\Windows Kits\10). BuildMode.OutputToolchainInfo: [Upgrade] BuildMode.OutputToolchainInfo: [Upgrade] Using backward-compatible build settings. The latest version of UE4 sets the following values by default, which may require code changes: BuildMode.OutputToolchainInfo: [Upgrade] bLegacyPublicIncludePaths = false => Omits subfolders from public include paths to reduce compiler command line length. (Previously: true). BuildMode.OutputToolchainInfo: [Upgrade] ShadowVariableWarningLevel = WarningLevel.Error => Treats shadowed variable warnings as errors. (Previously: WarningLevel.Warning). BuildMode.OutputToolchainInfo: [Upgrade] PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs => Set in build.cs files to enables IWYU-style PCH model. See https://docs.unrealengine.com/en-US/Programming/BuildTools/UnrealBuildTool/IWYU/index.html. (Previously: PCHUsageMode.UseSharedPCHs). BuildMode.OutputToolchainInfo: [Upgrade] Suppress this message by setting 'DefaultBuildSettings = BuildSettingsVersion.V2;' in InMyHead.Target.cs, and explicitly overriding settings that differ from the new defaults. BuildMode.OutputToolchainInfo: [Upgrade] ParallelExecutor.ExecuteActions: Building 28 actions with 16 processes... ParallelExecutor.ExecuteActions: [1/28] Default.rc2 ParallelExecutor.ExecuteActions: [2/28] SharedPCH.Core.cpp ParallelExecutor.ExecuteActions: [3/28] InMyHead.cpp ParallelExecutor.ExecuteActions: [4/28] SharedPCH.Engine.cpp ParallelExecutor.ExecuteActions: [5/28] Module.NativizedAssets.gen.5_of_11.cpp ParallelExecutor.ExecuteActions: [6/28] Module.NativizedAssets.gen.4_of_11.cpp ParallelExecutor.ExecuteActions: [7/28] Module.NativizedAssets.gen.2_of_11.cpp ParallelExecutor.ExecuteActions: [8/28] Module.NativizedAssets.gen.3_of_11.cpp ParallelExecutor.ExecuteActions: [9/28] Module.NativizedAssets.gen.6_of_11.cpp ParallelExecutor.ExecuteActions: [10/28] Module.NativizedAssets.gen.7_of_11.cpp ParallelExecutor.ExecuteActions: [11/28] Module.NativizedAssets.gen.8_of_11.cpp ParallelExecutor.ExecuteActions: [12/28] Module.NativizedAssets.gen.9_of_11.cpp ParallelExecutor.ExecuteActions: [13/28] Module.NativizedAssets.gen.1_of_11.cpp ParallelExecutor.ExecuteActions: [14/28] Module.NativizedAssets.gen.10_of_11.cpp ParallelExecutor.ExecuteActions: [15/28] Module.NativizedAssets.gen.11_of_11.cpp ParallelExecutor.ExecuteActions: [16/28] Module.NativizedAssets.10_of_11.cpp ParallelExecutor.ExecuteActions: Z:/Zelijah Media Files/In My Head (feat. Hijo)/UE Assets/[Project]/InMyHead/Intermediate/Plugins/NativizedAssets/Windows/Game/Source/NativizedAssets/Private/W_PlayerHUD__pf655287937.cpp(571): error C2065: 'UW_Minimap_C__pf655287937': undeclared identifier ParallelExecutor.ExecuteActions: Z:/Zelijah Media Files/In My Head (feat. Hijo)/UE Assets/[Project]/InMyHead/Intermediate/Plugins/NativizedAssets/Windows/Game/Source/NativizedAssets/Private/W_PlayerHUD__pf655287937.cpp(571): error C2672: 'NewObject': no matching overloaded function found ParallelExecutor.ExecuteActions: Z:/Zelijah Media Files/In My Head (feat. Hijo)/UE Assets/[Project]/InMyHead/Intermediate/Plugins/NativizedAssets/Windows/Game/Source/NativizedAssets/Private/W_PlayerHUD__pf655287937.cpp(571): error C2974: 'NewObject': invalid template argument for 'T', type expected ParallelExecutor.ExecuteActions: Z:\[GAMES]\Epic Games\UE_4.25\Engine\Source\Runtime\CoreUObject\Public\UObject/UObjectGlobals.h(1225): note: see declaration of 'NewObject' ParallelExecutor.ExecuteActions: Z:/Zelijah Media Files/In My Head (feat. Hijo)/UE Assets/[Project]/InMyHead/Intermediate/Plugins/NativizedAssets/Windows/Game/Source/NativizedAssets/Private/W_PlayerHUD__pf655287937.cpp(572): error C3536: '__Local__8': cannot be used before it is initialized ParallelExecutor.ExecuteActions: Z:/Zelijah Media Files/In My Head (feat. Hijo)/UE Assets/[Project]/InMyHead/Intermediate/Plugins/NativizedAssets/Windows/Game/Source/NativizedAssets/Private/W_PlayerHUD__pf655287937.cpp(572): error C2440: '': cannot convert from 'int' to 'FUnconvertedWrapper__UW_Minimap_C__pf655287937' ParallelExecutor.ExecuteActions: Z:/Zelijah Media Files/In My Head (feat. Hijo)/UE Assets/[Project]/InMyHead/Intermediate/Plugins/NativizedAssets/Windows/Game/Source/NativizedAssets/Private/W_PlayerHUD__pf655287937.cpp(572): note: No constructor could take the source type, or constructor overload resolution was ambiguous ParallelExecutor.ExecuteActions: Z:/Zelijah Media Files/In My Head (feat. Hijo)/UE Assets/[Project]/InMyHead/Intermediate/Plugins/NativizedAssets/Windows/Game/Source/NativizedAssets/Private/W_PlayerHUD__pf655287937.cpp(575): error C2440: '=': cannot convert from 'int' to 'UWidget *' ParallelExecutor.ExecuteActions: Z:/Zelijah Media Files/In My Head (feat. Hijo)/UE Assets/[Project]/InMyHead/Intermediate/Plugins/NativizedAssets/Windows/Game/Source/NativizedAssets/Private/W_PlayerHUD__pf655287937.cpp(575): note: Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast ParallelExecutor.ExecuteActions: [17/28] Module.NativizedAssets.5_of_11.cpp ParallelExecutor.ExecuteActions: [18/28] Module.NativizedAssets.2_of_11.cpp ParallelExecutor.ExecuteActions: [19/28] Module.NativizedAssets.8_of_11.cpp ParallelExecutor.ExecuteActions: [20/28] Module.NativizedAssets.7_of_11.cpp ParallelExecutor.ExecuteActions: [21/28] Module.NativizedAssets.6_of_11.cpp ParallelExecutor.ExecuteActions: [22/28] Module.NativizedAssets.3_of_11.cpp ParallelExecutor.ExecuteActions: [23/28] Module.NativizedAssets.11_of_11.cpp ParallelExecutor.ExecuteActions: [24/28] Module.NativizedAssets.1_of_11.cpp ParallelExecutor.ExecuteActions: [25/28] Module.NativizedAssets.4_of_11.cpp ParallelExecutor.ExecuteActions: [26/28] Module.NativizedAssets.9_of_11.cpp UnrealBuildTool.Main: CompilationResultException: Error: OtherCompilationError UnrealBuildTool.Main: at UnrealBuildTool.ActionGraph.ExecuteActions(BuildConfiguration BuildConfiguration, List`1 ActionsToExecute) in D:\Build\++UE4+Licensee\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\System\ActionGraph.cs:line 242 UnrealBuildTool.Main: at UnrealBuildTool.BuildMode.Build(List`1 TargetDescriptors, BuildConfiguration BuildConfiguration, ISourceFileWorkingSet WorkingSet, BuildOptions Options, FileReference WriteOutdatedActionsFile) in D:\Build\++UE4+Licensee\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\Modes\BuildMode.cs:line 372 UnrealBuildTool.Main: at UnrealBuildTool.BuildMode.Execute(CommandLineArguments Arguments) in D:\Build\++UE4+Licensee\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\Modes\BuildMode.cs:line 219 UnrealBuildTool.Main: at UnrealBuildTool.UnrealBuildTool.Main(String[] ArgumentsArray) in D:\Build\++UE4+Licensee\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\UnrealBuildTool.cs:line 550 Timeline.Print: Timeline: Timeline.Print: Timeline.Print: [ 0.000] Timeline.Print: [ 0.000](+0.053) Timeline.Print: [ 0.053](+0.002) FileMetadataPrefetch.QueueEngineDirectory() Timeline.Print: [ 0.055](+0.229) XmlConfig.ReadConfigFiles() Timeline.Print: [ 0.285](+0.000) SingleInstanceMutex.Acquire() Timeline.Print: [ 0.285](+0.125) UEBuildPlatform.RegisterPlatforms() Timeline.Print: 0.286 [ 0.000](+0.090) Initializing InstalledPlatformInfo Timeline.Print: 0.377 [ 0.091](+0.000) Querying types Timeline.Print: 0.378 [ 0.093](+0.001) MacPlatformFactory Timeline.Print: 0.380 [ 0.094](+0.000) TVOSPlatformFactory Timeline.Print: 0.380 [ 0.095](+0.022) AndroidPlatformFactory Timeline.Print: 0.403 [ 0.117](+0.000) HoloLensPlatformFactory Timeline.Print: 0.403 [ 0.117](+0.002) IOSPlatformFactory Timeline.Print: 0.405 [ 0.120](+0.004) LinuxPlatformFactory Timeline.Print: 0.410 [ 0.124](+0.000) LuminPlatformFactory Timeline.Print: 0.410 [ 0.124](+0.000) WindowsPlatformFactory Timeline.Print: [ 0.418](+0.015) TargetDescriptor.ParseCommandLine() Timeline.Print: [ 0.448](+4.949) UEBuildTarget.Create() Timeline.Print: 0.453 [ 0.004](+3.175) RulesCompiler.CreateTargetRulesAssembly() Timeline.Print: 0.453 0.004 [ 0.000](+2.372) Timeline.Print: 2.825 2.377 [ 2.372](+0.032) Finding engine modules Timeline.Print: 2.858 2.409 [ 2.405](+0.005) Finding plugin modules Timeline.Print: 2.863 2.415 [ 2.410](+0.115) Timeline.Print: 2.978 2.530 [ 2.525](+0.004) Finding program modules Timeline.Print: 2.983 2.534 [ 2.530](+0.002) Finding program targets Timeline.Print: 2.985 2.536 [ 2.532](+0.040) Timeline.Print: 3.026 2.577 [ 2.572](+0.597) Compiling rules assembly (InMyHeadModuleRules.dll) Timeline.Print: 3.628 [ 3.180](+0.360) RulesAssembly.CreateTargetRules() Timeline.Print: 3.989 [ 3.540](+0.079) Timeline.Print: 4.068 [ 3.620](+0.227) Compiling rules assembly (NativizedAssetsModuleRules.dll) Timeline.Print: 4.296 [ 3.848](+0.015) UEBuildTarget constructor Timeline.Print: 4.312 [ 3.864](+1.085) UEBuildTarget.PreBuildSetup() Timeline.Print: [ 5.401](+32.503) UEBuildTarget.Build() Timeline.Print: 5.401 [ 0.000](+0.109) Timeline.Print: 5.511 [ 0.109](+22.197) ExternalExecution.SetupUObjectModules() Timeline.Print: 27.708 [22.307](+0.195) Timeline.Print: 27.903 [22.502](+7.442) Executing UnrealHeaderTool Timeline.Print: 35.347 [29.946](+0.002) ExternalExecution.ResetCachedHeaderInfo() Timeline.Print: 35.349 [29.948](+0.002) ExternalExecution.UpdateDirectoryTimestamps() Timeline.Print: 35.352 [29.950](+0.035) Timeline.Print: 35.387 [29.986](+2.375) UEBuildBinary.Build() Timeline.Print: 37.762 [32.361](+0.141) Timeline.Print: [37.905](+0.002) ActionGraph.CheckPathLengths Timeline.Print: [37.908](+0.020) Timeline.Print: [37.928](+0.001) Reading dependency cache Timeline.Print: [37.930](+0.001) Reading action history Timeline.Print: [37.932](+0.022) ActionGraph.GetActionsToExecute() Timeline.Print: 37.934 [ 0.001](+0.001) Prefetching include dependencies Timeline.Print: 37.936 [ 0.003](+0.017) Cache outdated actions Timeline.Print: [37.955](+0.049) Timeline.Print: [38.004](+145.515) ActionGraph.ExecuteActions() Timeline.Print: [183.519](+0.203) Timeline.Print: [183.722](+0.000) FileMetadataPrefetch.Stop() Timeline.Print: [183.725]

I also tried doing it with a blank project in Unreal and it gives me this message:

Missing UE4Game binary.
You may have to build the UE4 project with your IDE. Alternatively, build using UnrealBuildTool with the commandline:
UE4Game

I decided to post it here since nobody seems to figure out what and where my problem is coming from either from Visual Studio or Unreal itself.... please help me... :(
submitted by jedlsf to gamedev [link] [comments]

pip install pyinptplus failing for automatetheboringstuff

I'm working through Automate The Bring Stuff and I need to install PyInputPlus for some of the exercises but it keeps failing. Pip install is working fine for other products.

Here's the output I get...
c:\Program Files\Python37\Scripts>pip3 install --user pyinputplus WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip. Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue. To avoid this problem you can invoke Python with '-m pip' instead of running pip directly. Collecting pyinputplus Using cached PyInputPlus-0.2.10.tar.gz (19 kB) Installing build dependencies ... error ERROR: Command errored out with exit status 1: command: 'c:\program files\python37\python.exe' 'C:\Users\Ian\AppData\Roaming\Python\Python37\site-packages\pip' install --ignore-installed --no-user --prefix 'C:\Users\Ian\AppData\Local\Temp\pip-build-env-v6bzucfl\overlay' --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- 'setuptools>=40.8.0' wheel cwd: None Complete output (42 lines): Traceback (most recent call last): File "c:\program files\python37\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "c:\program files\python37\lib\runpy.py", line 85, in _run_code exec(code, run_globals) File "C:\Users\Ian\AppData\Roaming\Python\Python37\site-packages\pip\__main__.py", line 26, in  sys.exit(_main()) File "C:\Users\Ian\AppData\Roaming\Python\Python37\site-packages\pip\_internal\cli\main.py", line 73, in main command = create_command(cmd_name, isolated=("--isolated" in cmd_args)) File "C:\Users\Ian\AppData\Roaming\Python\Python37\site-packages\pip\_internal\commands\__init__.py", line 104, in create_command module = importlib.import_module(module_path) File "c:\program files\python37\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1006, in _gcd_import File "", line 983, in _find_and_load File "", line 967, in _find_and_load_unlocked File "", line 677, in _load_unlocked File "", line 728, in exec_module File "", line 219, in _call_with_frames_removed File "C:\Users\Ian\AppData\Roaming\Python\Python37\site-packages\pip\_internal\commands\install.py", line 17, in  from pip._internal.cli.req_command import RequirementCommand, with_cleanup File "C:\Users\Ian\AppData\Roaming\Python\Python37\site-packages\pip\_internal\cli\req_command.py", line 16, in  from pip._internal.index.collector import LinkCollector File "C:\Users\Ian\AppData\Roaming\Python\Python37\site-packages\pip\_internal\index\collector.py", line 14, in  from pip._vendor import html5lib, requests File "C:\Users\Ian\AppData\Roaming\Python\Python37\site-packages\pip\_vendor\requests\__init__.py", line 125, in  from . import utils File "C:\Users\Ian\AppData\Roaming\Python\Python37\site-packages\pip\_vendor\requests\utils.py", line 25, in  from . import certs File "C:\Users\Ian\AppData\Roaming\Python\Python37\site-packages\pip\_vendor\requests\certs.py", line 15, in  from pip._vendor.certifi import where File "C:\Users\Ian\AppData\Roaming\Python\Python37\site-packages\pip\_vendor\certifi\__init__.py", line 1, in  from .core import contents, where File "C:\Users\Ian\AppData\Roaming\Python\Python37\site-packages\pip\_vendor\certifi\core.py", line 12, in  from importlib.resources import path as get_path, read_text File "c:\program files\python37\lib\importlib\resources.py", line 11, in  from typing import Iterable, Iterator, Optional, Set, Union # noqa: F401 File "C:\Users\Ian\AppData\Roaming\Python\Python37\site-packages\typing.py", line 1347, in  class Callable(extra=collections_abc.Callable, metaclass=CallableMeta): File "C:\Users\Ian\AppData\Roaming\Python\Python37\site-packages\typing.py", line 1003, in __new__ self._abc_registry = extra._abc_registry AttributeError: type object 'Callable' has no attribute '_abc_registry' ---------------------------------------- ERROR: Command errored out with exit status 1: 'c:\program files\python37\python.exe' 'C:\Users\Ian\AppData\Roaming\Python\Python37\site-packages\pip' install --ignore-installed --no-user --prefix 'C:\Users\Ian\AppData\Local\Temp\pip-build-env-v6bzucfl\overlay' --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- 'setuptools>=40.8.0' wheel Check the logs for full command output. 
I don't understand what the error is or even how to interpret this output to really start looking for the error.
Any help would be much appreciated.
submitted by ibecs to learnpython [link] [comments]

| Getting started with BSPWM for beginners! [Polybar][Powerline][Picom][Pywal]

A while back I made a post on getting started with BSPWM (Binary Space Partition Window Manager) on this subreddit; I plan on deleting that and using this guide as the go-to for it. I was really all over the place, and at the time there wasn't really a lot of information on the tiling window manager so there were a lot of mistakes on it and things I could have done better. Now that I've grown more experienced throughout the years with Linux in general, I feel like I've perfected the art of ricing with BSPWM and Polybar together. And I'm here to show you how it's done.
A couple of comments before we begin, I'm going to assume you have experience with the following:
And I'm going to tell you that although you can replace your overall desktop environment with a tiling window manager, I'm really hoping that you have an open mind for keeping desktop environment in your system because tiling window managers tend to become more of a general struggle to deal with if you lack a solid background in Bash scripting. However, lucky for you in this tutorial I will not be using any bash scripting. The main idea here is a tiling window manager (aka Tiling WM) is not a desktop environment (aka DE), please research the difference between the two.
[Part 1: Installing BSPWM and Polybar]
Technically speaking you can install any tiling window manager on any distribution. However I'm going to split the line here between Debian (mostly Ubuntu) and Arch (I'm going to ignore Solus, Gentoo, and other Linux OS with unique file systems). If you're on Ubuntu you can install BSPWM without issues by simply running:
sudo apt install bspwm
However your efforts for viability in using the Polybar status bar ends there as you will have to install the extra dependencies to get Polybar to work, and even after installing the dependencies you have to reconfigure the cmake file to recognize where to find the siji font you have to install. Luckily for you if you know bash scripting really well and know how to for example pull out the clock configuration and print it into a UI, then you can use the default status bar bspwm installs called lemonbar which you can find out more of here: https://github.com/LemonBoy/bar
But if you are like me and don't want to learn Bash scripting, and you want to hop right into Polybar without issues, then Arch Linux is the operating system for you. I'm going to assume you know how to install it, if you don't it's alright I don't either, which is why I use anarchy to install it; it's an iso that has a cli interface to help you install Arch into your system https://www.anarchylinux.org/
In this tutorial I will be using Arch Linux as my OS and Gnome as my desktop environment of choice. It's one of the best desktop environments out there, and easy to apply themes to. Configure your desktop of choice how you like it, rice it up even if you wish to do so.
In Arch Linux packages aren't located in one place like they are in Ubuntu, instead you have a core set of packages the Arch Linux organization caters, and the default manager for packages is called pacman ; then you have a collection of extra packages maintained by users who lovingly love Arch's simplicity called the Arch User Repository (AUR), and to get a package from the AUR you need to use a community package manager. I do not recommend using any AUR package manager (aka helper) mentioned on the web instead use ones from this list that comes from the official Arch Linux organization: https://wiki.archlinux.org/index.php/AUR_helpers
I'm going to be using pikaur for this tutorial, to get it simply follow the instructions here: https://github.com/actionless/pikaur#installation and you'll be set.
A note on using your community package helper and pacman: you want to have the mindset that if something can be gotten from pacman, that you'll get it from pacman because pacman uses sudo priveleges; meaning that the maintainers of the software are telling you that you can trust a certain package and it's because it will be installed within your root folders. Community packages can contain malware; and by some god given miracle some bastard has written malware, it will have a tough time escalating privileges because community packages are installed on your home directory. Believe me I've genuinely tried this and it's hard to do; it ain't easy to do for hackers.
Now lets assume I'm starting from my gnome desktop, to install BSPWM on Arch, and while were at it lets install the other packages (note that one is a font) were going to focus on, simply run:
sudo pacman -S bspwm sxhkd picom ttf-font-awesome rxvt-unicode dmenu powerline python-pip feh neofetch zsh-theme-powerlevel9k lxappearance zsh rofi scrot
and while were at it lets install Polybar and the extra community packages (note that one is a font):
pikaur -S polybar nerd-fonts-complete cava bash-pipes cmatrix
Follow the prompts for each and install them. Note nerd fonts takes an incredibly long time to install, this is normal, you'll see pikaur stall at "compressing package" don't freak out!
Were also going to use pywal from dylanarlaps (https://github.com/dylanaraps/pywal), please donate to him, he's done incredible work in creating this amazing tool were going to use:
sudo pip3 install pywal
All of these software have githubs to them, feel free to google search for them and skim their wikis!
I also use zsh by default even though I'm not a mac user, but only real hacktivists use Oh My ZSH!
https://ohmyz.sh/
run the little curl command they got there, and you'll be part of the cool kids club!
At this point you might be tempted to switch to BSPWM and get started, but you'll meet with the impasse of being unable to do anything, even log out of the session. To prevent this, you need to understand how BSPWM works. To start off, you first need to navigate to a hidden folder called .config in your home directory. In here you need to create two folders, one named bspwmand the other sxhkd, and within them you're going to create two empty files called bspwmrcin the bspwm folder and sxhkdrc in the sxhkd folder. The rc files (running configuration) are responsible for handling the behavior of the window manager (bspwmrc does this) and the keystrokes (sxhkdrc does this). I'm going to give you the default content Baskerville created in his github (https://github.com/baskerville/bspwm) for BSPWM below, later we are going to modify this for some extra functionality, so for now just copy and paste these into the files you created:
bspwmrc: https://raw.githubusercontent.com/baskerville/bspwm/masteexamples/bspwmrc
sxhkdrc:https://raw.githubusercontent.com/baskerville/bspwm/masteexamples/sxhkdrc
And the last thing you want to do is make bspwmrc an executable, simply navigate to the file, right click it on your file manager, select properties>permissions, and tick the box to allow the file to be run as an executable. For sxhkdrc I won't be using urxvt, although I will give you the Xresources I created for it a long time ago, instead I'm going to use the gnome terminal to keep things easier. If you want to use the gnome terminal, simply replace urxvt with gnome-terminal in the sxhkdrc file.
Once you're done with this, log out and change your environment to BSPWM, to open a terminal press super+enter where super is your windows or mac key on your keyboard to bring up a terminal. To change your workspace press Super+2, and to open firefox, press super+space to use dmenu to search for it.
The way BSPWM works is through a socket-client model in which the handler (bspc) connects to a socket created by bspwm. You don't need to know too much about this in relation to this guide, but the config file I provide will get you started on how to setup commands for bspc. For now I want you to focus on that sxhkdrc is where you set your keybinds, sxhkd is the program that handles those keybinds, and bspc tells bspwm how to handle its backend. Consult the manual for BSPWM using man bspwm for more info.
[Part 2: Ricing and Modding BSPWM]
To start off I want you to select a background of your choice, and I want you to choose a background that doesn't just have two or three colors, but a mesh of beautiful colors, the more colors used the better. This background will model all of the colors used in your window borders and terminal through the use of a program called pywal: https://github.com/dylanaraps/pywal
Now before going any further, I highly recommend that if you ever get stuck on any of this, that you go into the github pages of these packages and consult their READMEs and wikis, because I wont be there to hold your hand unless I feel like it. However to satisfy your inner demon I'll be sure to supply you with as much information as I possibly can and split this by sections to build the killer desktop you crave. As a reference you can always refer to my dotfiles here: https://bitbucket.org/Volteos/linux-dot-files/src/maste ; I'll probably have made some changes here and there, but nothing major since the inception of this guide.
What I will NOT be dealing with is URxvt. Although the terminal seems to be the weapon of choice for BSPWM users I like my comfy Gnome Terminal, and to be fair, you can always pick the one you like; as far as this goes, any terminal will work with pywal because what it's actually dependent on is the zsh running config or .zshrc file hiding in your home directory. Oh and one last thing I had you install a program called dmenu, which you can use to bring up programs. Here are some basic keybinds to help you run stuff you need:
So assuming you've managed to install Oh My Zsh, and installed pywal like I told you to, and you have chosen your wallpaper you simply need to navigate to your bashrc file and add my stuff to it. Don't panic, really try to read my comments follows with (#) :
#set your wallpaper upon logging in &
feh --bg-fill $HOME/Path/to/youpicture &
#This invokes pywal with your image simply replace the path
wal -i $HOME/Path/to/youpicture &
#source the colors located within a shell script from your cache (you don't need to touch this).
. "${HOME}/.cache/wal/colors.sh"
#Set the border colors for your windows for focused, active and inactive ones.
bspc config normal_border_color "$color1"
bspc config active_border_color "$color2"
bspc config focused_border_color "$color15"
#Use the line below if you are on bspwm >= 0.9.4
bspc config presel_feedback_color "$color1"
#Use the line below if you are on bspwm < 0.9.4
#bspc config presel_border_color "$color1"
#place the focus on where the mouse is; if you like clicking windows to focus, comment this line
bspc config focus_follows_pointer true
After placing this in your bspwmrc file log out and log back in and you'll see the borders have adapted the color of the wallpaper behind it when you open your terminal. Neat right? But you might be asking, why doesn't the terminal take any colors? And the answer is in the shell it's using; remember that hidden file .zshrc in your home directory that you can't see if you don't have a show hidden files checkbox clicked on your file manager? open it, and at the very bottom of it, add this line:
wal -i $HOME/Path/to/youpicture
Now zsh is set to run pywal every time you open it. So now upon re-opening your terminal, you should see that the terminal has now taken the colors of your wallpaper. Feel free to adjust and modify these settings as you see fit. Change the colors, do as you please, as an added bonus to my setup I adjusted the gaps between my windows to be 25 pixels apart, like so:
#Define window settings
bspc config border_width 2
bspc config window_gap 25
bspc config split_ratio 0.52
bspc config borderless_monocle true
bspc config gapless_monocle true
If and only if you have more than one monitor like I do, simply adjust your bspc monitor line to look like so:
#Define Workspace Rules
bspc monitor HDMI-1 -d Terminal Sublime Firefox
bspc monitor DVI-D-1 -d ws4 ws5
#These options for follow and focus put you on the workspace these programs start on; the -a = activate
bspc rule -a Gnome-terminal desktop='^1' follow=on focus=on
bspc rule -a Sublime_text desktop='^2' follow=on focus=on
bspc rule -a firefox desktop='^3' follow=on focus=on
bspc rule -a ws4 desktop='^4' follow=on
bspc rule -a ws5 desktop='^5' follow=on
And replace the desktops with the appropriate names, which you can find by simply running xrandrin your terminal. Again it doesn't have to be copy and paste what I have you can always replace the programs and workspace configuration with your own to your liking.
[Part 3: Pimping Polybar]
At this point you must feel all proud of your new little setup, but you can't be satisfied until you've got some method of looking at what the time is, or what workspace your on, or even better, a way to turn of your computer.
That's where Polybar comes in, and now all you have to do is go to the github page for Polybar, and look through the wiki to find what you need. I've taken the liberty of copy and pasting every module I wanted; and put it all into one nice neat config file you can refer to. I don't feel like explaining how Polybar works as the wiki is more than acceptable.
https://bitbucket.org/Volteos/linux-dot-files/raw/ee4519ce7b62f56af42c127024a4dadece3d0e51/bspwm-config/polybaconfig
Here's my file in raw format, you can copy and paste it, but there are certain parts on it you need to modify to make it work on your pc. So the first parts are within the first set of parameters under "Bar Module"; upon skimming carefully you'll notice that I've set up two bars named future1 and future2, and within them I've placed the respective monitors I want them on.
You'll also notice I've set some lines to set the fonts for them; now I use a font called font awesome to grab icons for the bar from:
https://fontawesome.com/
within these lines:
;Define fonts to be used, check fc-list to see all the ones you have
font-0 = "Unifont:size=12:weight=bold;"
font-1 = "Font Awesome 5 Free,Font Awesome 5 Free Solid: style=Solid: size=12;"
font-2 = "Font Awesome 5 Free,Font Awesome 5 Free Regular: style=Regular: size=12"
font-3 = "Font Awesome 5 Brands,Font Awesome 5 Brands Regular:style=Regular"
I mention this and even put a comment on it to remind you of where and what to edit in the event that the creators of Font Awesome come out with a Font Awesome 6 and suddenly your icons on Polybar break. I once fell victim to this when Font Awesome 4 got released and it gave me a lot of frustration, so here I am saving you a massive headache should you choose to update your machine. So when Font Awesome 6 comes out change the 5 in Font Awesome 5 to a 6 and things should be okay again.
The rest of my file is pretty much ripped off straight from the wiki, so please consult each section as needed.
Alas to finally get Polybar to work you need to add it as a startup program in your bspwmrc file; in my case the lines would be:
polybar future1 &
polybar future2 &
because I named my bars future1 and future2.
My colors parameters section is ripped straight from from the pywal wiki here:https://github.com/dylanaraps/pywal/wiki/Customization . Just click on the Polybar Title and you'll see exactly what I put in there. The only thing is I added my own version of the background color because Pywal doesn't generate transparency in its code; only 6 Hex color codes, not the extra (AA) I added for transparency, I've also colored it dark purple.
[Part 3: Going blind the right way with Picom]
In the land before this guide was created, we used something called Compton to handle all of our compositor needs. If you don't know what a compositor does, it's a tool that lets you define shadows and transparency for your windows, and what I've done, which has viciously taken me 6 hours to achieve through trail and error, I am simply going to explain the config the best way I possibly can and give it to you. What I've managed to achieve is a subversive blur effect in addition to transparency, it's something you don't normally see in Unixporn configs, nor in desktop managers that use compton by default.
Here it is: https://bitbucket.org/Volteos/linux-dot-files/raw/ee4519ce7b62f56af42c127024a4dadece3d0e51/bspwm-config/picom/picom.conf
This was originally created by code_nomad and is a file ripped straight from the official Arch Linux website. Here's the original: https://git.archlinux.org/svntogit/community.git/tree/trunk/compton.conf?h=packages/compton#n80
And to this day I still don't know what everything on it, but I've made educated guesses, and will try and explain it from my perspective. Note that at the time of writing this Picom has only its terminal manual to explain things man picom, so I'm doing you a favor here. To get Picom going you need to add it as a startup program to your bspwmrc file:
#please replace accordingly
picom --config $HOME/path/to/youcreated/picom.conf/file &
The first and obvious mods I made are for the shadows, all I did is reset their offsets to 0 and set the opacity to 1 for them so you can clearly see them when you start picom. I did not touch the excluded shadows section.
The only section I truly played around with is the Opacity section. The first group of settings speak for themselves as they're pretty self explanatory (I'm ignoring the override I have no idea what that does). The opacity rules is the meat of this config file. The way it works is each window has a property to it internally that has a class name to it. Each rule on the list is defined as PERCENTOPAQUE:RULE. It's best to take an example, so let me use this one to start off with:
"99:class_g = 'firefox' && focused",
So what this rule does is set the opacity of my window with window class 'firefox' to 99 if I am focused on it. If I am not focused it will revert to the inactive opacity setting of 0.5 that I have. The class names are very specific to the program you're working with, sometimes, simply supplying the class name wont work because the specified window doesn't have a WM_OPACITY property set on it; so you're left to use just the class name on it like I did with sublime so that it matches the class to anything resembling the name of the program (that's what I was told the ? is for):
"99:class_g ?= 'sublime_text' && focused",
In order to find the proper class names you have to use a program called xprop (I'll let you figure out how to use this), the class name will be within WM_CLASS(STRING) = "some name here". As a general rule of thumb, for any program you use first try and see if using just the "=" works, and if it doesn't then just use the "?=". In the examples above if I don't want the opacity to change on focus, then just remove the && focusedlike I did with Rofi.
Blurring is a whole other concept I still don't fully understand however I played around with my settings and use a 7x7box kernel setting. If it lags for you, you can always try the 3x3box or the 5x5box kernel. You can also use the one in the original example with the crazy list of numbers, and just play around with it. I leave you to trial and error everything regarding blurring. I've chatted with some people on Unixporn about this, and I came across a neat little program called kawase, but according to Yshui, the maintainer of Picom, lack of manpower makes its integration hard, so if you're balsy enough to tackle this mountain, by all means help this person https://github.com/yshui/picom/issues/32 .
[Part 4: URxvt Lovers (if you're not using URxvt skip this)]
I don't mess around with this too much, here's my old .Xresources file, it includes some settings for Rofi, which I will cover later:
https://pastebin.com/K6JvVfVV
but it should work fine as long as you have Adobe source code pro fonts installed into your system. Here's the package index for the font in case if you don't have it: https://www.archlinux.org/packages/extra/any/adobe-source-code-pro-fonts/
Simply place that file in your home directory and you should be okay.
[Part 5: Fast Execution with Rofi]
Rofi is a neat little tool used to replace dmenu I recommend trying it out on your terminal just to get the feel for it. All I'm doing is applying the pywal instructions to play here, so here you go:
Original Instructions:
https://github.com/dylanaraps/pywal/wiki/Customization#rofi
Just follow steps 1, 2, and 3 on this:
https://github.com/dylanaraps/pywal/wiki/User-Template-Files
your end file for config.rasi should look like so:
configuration {
theme: "~/.cache/wal/colors-rofi-dark.rasi";
}
Be sure to replace your keybind dmenu for sxhkdrc for rofi, your keybind should look like so:
#program launcher
super + @space
rofi -show run
[Part 6: Setting the themes and default cursor]
If you're on Unixporn you probably already know how to setup User themes from source by putting them in your home directory so I wont explain that. However I will tell you that you need to use lxappearance to set the icons and theme. It's pretty self explanatory once you actually open lxappearance and play around with it.
The cursor however isn't permanent, at least in my case it wasn't, and luckily for you I found the solution. To set the default cursor:
1 - copy cursor theme to /usshare/icons
2 - change the default Inherits value to theme name as shown in lxappearance inside this file: /usshare/icons/default/index.theme
and you should be set. [There is a bug that changes the cursor when focusing on windows that aren't related to lxde, as soon as I figure out how to fix that I'll add that onto here].
[Part 7: POWUHLEVEL9000 (powerline ricing)]
Ricing Powerline has been a massive headache for me. However everything is done within the .zshrc file. I'll just give you what I have and the beefy github wiki created for it (https://github.com/Powerlevel9k/powerlevel9k/wiki). It uses the entire nerdfonts collection https://www.nerdfonts.com/ which is why it took so long to install, so for all intents and purposes, if you can change my zshrc file to your liking then by all means do so (https://bitbucket.org/Volteos/linux-dot-files/raw/ee4519ce7b62f56af42c127024a4dadece3d0e51/bspwm-config/.zshrc):
neofetch --ascii $HOME/path/to/some/file/with/ascii/art
wal -i $HOME/Path/to/youpicture -q
POWERLEVEL9K_MODE='nerdfont-complete'
POWERLEVEL9k_OS_ICON=$'\uF303'
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os_icon context status dir vcs) POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status)
plugins=(git)
source /usshare/zsh-theme-powerlevel9k/powerlevel9k.zsh-theme
I've muted neofetch and pywal, I won't go into too much detail about neofetch only that I've muted it and used ascii art instead of an image. If you want to know more about neofetch this is your friend: https://github.com/dylanaraps/neofetch .
[Part 7: GODLEVEL10000 (Powerlevel10k) ]
I decided to add this as part of this guide, Powerlevel10k acts as a fork to Powerlevel9k that was introduced in March 2019, in which it absolutely speaks for itself. If you would love to try it out check out the github for it! https://github.com/romkatv/powerlevel10k/ I'll show you how to get started on it, I recommend starting off with migrating from Powerlevel9k. Assuming you have installed the nerd fonts and everything else, you should be good to go!
Start off by installing it from your AUR helper:
pikaur -S zsh-theme-powerlevel10k-git
Then simply run:
sudo git clone --depth=1 https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k
sed 's/powerlevel9k/powerlevel10k/g' -i ~/.zshrc
exec zsh
p10k configure
Follow the prompt and enjoy your now god level powerline config!
[The End]
This pretty much covers everything I hope to see some pretty gnarly configs down the line BSPWM is really on the rise and I think it's a much easier alternative to work with than i3, I love it so far, and hope its users come to love it as much as I do too someday!
submitted by Volteos to unixporn [link] [comments]

Ambrosia and Registration

Now that Ambrosia is gone, new registrations are no longer possible, and due to their expiring codes, using legitimate license keys has become difficult. We may hope to see a few of their games revived in the future but at present, only the original releases are available. Perhaps this case study on Ambrosia's registration algorithms will be useful to some.

The Old System

In their earliest days, ASW didn't require registration, but they eventually began locking core features away behind codes. All of their classic titles use the original algorithm by Andrew Welch.
Given a licensee name, number of copies, and game name, the code generator runs through two loops. The first loop iterates over each letter of the capitalized licensee name, adding the ASCII representation of that letter with the number of copies and then rotating the resulting bits. The second loop repeats that operation, only using the game's name instead of the license holder's name.
Beginning with Mars Rising, later games added a step to these loops: XOR the current code with the common hex string $DEADBEEF. However, the rest of the algorithm remained essentially unchanged.
The resulting 32 bits are converted into a text registration code by adding the ASCII offset of $41 to each hex digit. This maps the 32-bit string into 8 characters, but due to the limit of a hex digit to only encode 16 values, codes only contain letters from the first 16 of the alphabet.
The following chart shows an example using a well-known hacked code for Slithereens.
 Iteration 1 ('A' in ANONYMOUS) Name: Anonymous Code = $0 + $41 Number: 100 (hex: $64) -> << 6 ... -> Code = $FD53 FFA0 Game: Slithereens + $64 ^ $DEAD BEEF >> 1 Add $41 to each digit: Registration -> $41 + $F = $50 = P -> Reverse string -> ------------ $41 + $D = $4E = N | AKPPDFNP | ... ------------ 
Here is a Python implementation of the v1 system: aswreg_v1.py
Once you have the bitstring module installed via sudo pip install bitstring, you can test the output yourself with python aswreg_v1.py "Anonymous" 100 "Slithereens".

The New System

As Ambrosia's Matt Slot explains, the old system continued to allow a lot of piracy, so in the early 2000's they decided to switch to a more challenging registration system. This new method was based on polynomial hashing and included a timestamp so that codes could be expired and renewed. Ambrosia now had better control over code distribution, but they assumed their renewal server would never be shut down...
They also took more aggressive steps to reduce key sharing. The registration app checks against a list of blacklisted codes, and if found to be using one, the number of licenses is internally perturbed so that subsequent calculations fail. To combat tampering, your own information can get locally blacklisted in a similar manner if too many failed attempts occur, at least until the license file is deleted. Furthermore, the app attempts to verify the system time via a remote time server to minimize registration by changing the computer's clock.
You can disable the internet connection, set the clock back, and enter codes. There's also a renewal bot for EV: Nova. But let us look at the algorithm more closely.

64-bit Codes

The first noticeable difference is that registration codes in v2 are now 12 digits, containing both letters and numbers. This is due to a move from a 32-bit internal code to a 64-bit one. Rather than add an ASCII offset to hex digits, every letter or number in a new registration code has a direct mapping to a chunk of 5 bits. Using 5 bits per digit supports up to 32 values, or almost all letters of the alphabet and digits up to 9 (O, I, 0, and 1 were excluded given their visual similarities).
The resulting 64 bits (really only 60 because the upper 4 are unused: 12 digits * 5 bits each = 60) are a combination of two other hashes XOR'd together. This is a notable change from v1 because it only used the registration code to verify against the hashing algorithm. Only the licensee name, number of copies, and game name were really used. In v2, the registration code is itself a hash which contains important information like a code's timestamp.

Two Hashes

To extract such information from the registration code, we must reverse the XOR operation and split out the two hashes which were combined. Fortunately, XOR is reversible, and we can compute one of the hashes. The first hash, which I'll call the userkey, is actually quite similar to v1's algorithm. It loops through the licensee name, adding the ASCII value, number of copies, and shifting bits. This is repeated with the game name. An important change is including multiplication by a factor based on the string size.
The second hash, which I'll call the basekey, is the secret sauce of v2; it's what you pay Ambrosia to generate when registering a product. It is not computed by the registration app, but there are several properties by which it must be validated.
The chart below visualizes the relationships among the various hashes, using the well-known "Barbara Kloeppel" code for EV: Nova.
 TEXTCODE: ------------------ | L4B5-9HJ5-P3NB | ------------------ HASH1 (userkey): | calculated from licensee name, | copies, and game name BINCODE: ---------------------- 5 bits per character, /-> | 0x0902f8932acce305 | plus factors & rotation / ---------------------- ---------------------- / | 0x0008ecc1c2ee5e00 | <-- XOR ---------------------- \ \ ---------------------- \-> | 0x090a1452e822bd05 | ---------------------- HASH2 (basekey): generated by Ambrosia, extracted via XOR 

The Basekey

The basekey is where we must handle timestamps and several validation checks. Consider the binary representation of the sample 0x090a1452e822bd05:
binary basekey (above) and indices for reference (below): 0000 1001 0000 1010 0001 0100 0101 0010 1110 1000 0010 0010 1011 1101 0000 0101 b0 b3 b7 b11 b15 b19 b23 b27 b31 b35 b39 b43 b47 b51 b55 b59 b63 

Timestamps

Timestamp are encoded as a single byte comprised of bits indexed at b56,51,42,37,28,23,14,9 from the basekey. In this example, the timestamp is 01100010 or 0x62 or 98.
The timestamp represents the number of fortnights that have passed since Christmas Day, 2000 Eastern time, modulo 256 to fit in one byte. For example, 98 fortnights places the code at approximately October 2004.
Stored as a single byte, there are 256 unique timestamps. This is 512 weeks or about 10 years. Yes, this means that a code's validity rotates approximately once every decade.
After the code's timestamp is read, it is subtracted from the current timestamp (generated from the system clock or network time server if available). The difference must be less than 2, so codes are valid for 4 weeks or about a month at a time.
Of note, Pillars of Garendall has a bug in which the modulo is not taken correctly, so the timestamp corresponding to 0xFF is valid without expiry.

Validity Check

The last three bits, b60-63, contain the sum of all other 3-bit chunks in the basekey, modulo 7. Without the correct number in these bits, the result will be considered invalid.
To this point, we have covered sufficient material to renew licenses. The timestamp can be changed, the last three bits updated, the result XOR'd with the userkey, and finally, the code converted from binary to text.

Factors for Basekey Generation

I was next curious about code generation. For the purposes of this write-up, I have not fully reverse engineered the basekey, only duplicated the aspects which are used for validation. This yields functional keys, just not genuine ones. If the authors of the EV: Nova renewal bot have fully reversed the algorithm, perhaps they will one day share the steps to genuine basekey creation.
One aspect validated by the registration app is that the licensee name, number, and game name can be modified to yield a set of base factors. These are then multiplied by some number and written into the basekey. We do not need the whole algorithm; we simply must check that the corresponding regions in the basekey are multiples of the appropriate factors.
The regions of note in the basekey are f1 = b5-9,47-51,33-37,19-23, f2 = b43-47,29-33,15-19,57-61, and f3 = b24-28,10-14,52-56,38-42. The top 5 bits and f3 are never actually checked, so they can be ignored.
Considering f1 and f2, the values in the sample basekey are 0x25DA and 0x1500, respectively. The base factors are 0x26 and 0x1C, which are multiples by 0xFF and 0xC0, respectively.
Rather than analyze the code in detail, I wrote a small script to translate over the disassembled PPC to Python wholesale. It is sufficient for generating keys to EV: Nova, using the perfectly-valid multiple of 1x, but I have found it fails for other v2 products.

Scripts

Here is a Python implementation for v2: aswreg_v2.py and aswreg_v2core.py
With bitstring installed, you can renew codes like python aswreg_v2.py renew "L4B5-9HJ5-P3NB" "Barbara Kloeppel" 1 "EV Nova" (just sample syntax, blacklisted codes will still fail in the app). There's also a function to check a code's timestamp with date or create a new license with generate.
As earlier cautioned, generating basekeys relies on code copied from disassembled PPC and will likely not work outside EV: Nova. In my tests with other v2 products, all essential parts of the algorithm remain the same, even the regions of the basekey which are checked as multiples of the factors. What differs is the actual calculation of base factors. Recall that these keys were created by Ambrosia outside the local registration system, so the only options are to copy the necessary chunks of code to make passable factors for each product or to fully reverse engineer the basekey algorithm. I've no doubt the factors are an easy computation once you know the algorithm, but code generation becomes less critical when renewal is an option for other games. I leave it to the authors of the Zeus renewal bot if they know how to find these factors more generally.
To renew codes for other games, keep in mind the name must be correct. For instance, Pillars of Garendall is called "Garendall" internally. You can find a game's name by typing a gibberish license in the registration app and seeing what file is created in Preferences. It should be of the form License.
Finally, a couple disclaimers: I have only tested with a handful of keys, so my interpretations and implementations may not be completely correct. YMMV. Furthermore, these code snippets are posted as an interesting case study about how a defunct company once chose to combat software piracy, not to promote piracy. Had Ambrosia remained operational, I'm sure we would have seen a v3 registration system or a move to online-based play as so many other games are doing today, but I hope this has been helpful for those who still wish to revisit their favorite Ambrosia classics.
submitted by asw_anon to evnova [link] [comments]

Python GUI read file contents into TextBox - YouTube Text Files in Python  Python Tutorial  Learn Python ... Read Binary File - Python Programming Challenges - YouTube How to convert the text file data to a List in Python ... Parsing Text Files in Python - YouTube Read ASCII Files - Python Programming Challenges - YouTube Python File Objects  Open, Read & Write To Text Files and ... [Python for beginners ] Reading and Writing Binary Files Python 16 - Binary Files - YouTube Python How to Convert a Text File into a List or Array ...

File handling in Python [ All Text File, Binary File operations with Source code ] File handling in Python is basically divided into two parts- Text File handling and binary file handling. Both types of files need some basic operations like 1. Opening a file 2. Closing a file And in between, we need some sort of processing on these two types of files. This processing may be reading file ... Python read binary file While the exact format of Fortran binary files is compiler dependent, in all cases I'm aware of direct access files (files opened with access='direct' as in this question) do not have any record markers between records. Each record is of a fixed size, as given by the recl= specifier in the OPEN statement. That is, the record N starts at offset (N - 1) * RECL bytes in the file. It is important to note that Python strings can have binary data. apart from text data. Syntax fileObject.read([count]); Here, passed parameter is the number of bytes to be read from the opened file. This method starts reading from the beginning of the file and if count is missing, then it tries to read as much as possible, maybe until the end of file. Example. Let us take a file foo.txt ... Text files: In this type of file, Each line of text is terminated with a special character called EOL (End of Line), which is the new line character (‘\n’) in python by default. Binary files: In this type of file, there is no terminator for a line and the data is stored after converting it into machine understandable binary language. In ... In this tutorial we will learn to work with files so your programs can quickly analyze lots of data. We will primarily use with open() function to create, read, append or write to file using Python programming language. Below are the list of topics we will cover in this tutorial: How to create an empty file; How to read the content of a text file To read a file’s contents, call f.read(size), which reads some quantity of data and returns it as a string (in text mode) or bytes object (in binary mode). size is an optional numeric argument. When size is omitted or negative, the entire contents of the file will be read and returned; it’s your problem if the file is twice as large as your machine’s memory. A binary file is a computer file that is not a text file. ~ Wikipedia. Not all files are text files. Others contain information in the form of bits and bytes, like images, formatted text files (Microsoft Word), audio-video files etc. These cannot be read in the same way as Python reads text files. The io module is now recommended and is compatible with Python 3's open syntax: The following code is used to read and write to unicode(UTF-8) files in Python. Example import io with io.open(filename,'r',encoding='utf8') as f: text = f.read() # process Unicode text with io.open(filename,'w',encoding='utf8') as f: f.write(text) In Python, a file is categorized as either text or binary, and the difference between the two file types is important. Text files are structured as a sequence of lines, where each line includes a sequence of characters. This is what you know as code or syntax. Each line is terminated with a special character, called the EOL or End of Line character. There are several types, but the most common ...

[index] [6854] [32] [228] [4194] [18981] [28485] [9142] [3625] [16059] [24780]

Python GUI read file contents into TextBox - YouTube

A short program to read lines from a text file and extract information, patterns, from each line. This tutorial will teach you how to read a binary file or a file that contains binary numbers or values. This tutorial is part of the Python Challenges serie... This tutorial will teach you how to read an ASCII file or a file that contains ASCII numbers or values. This tutorial is part of the Python Challenges series... Python File objects. Learn how to open read and write to text files and binary files in Python 3.6.4 in this Python Programming Tutorial. Working with file O... Convert the text file to List for easily processing. Convert text file to List for Analysis. How to convert the text file data to a List in Python. Thanks fo... Reading and writing text files is an essential programming skill. Python gives you a simple and powerful tool for working with text files: the open function.... Learn how to work with binary files Python How to convert a text file into a list or array Python GUI read file contents into TextBox Call up a Windows dialog box, choose a file, and load its contents into a textbox in your Python GUI Window. Work ... Python cuts development time in half with its simple to read syntax and easy compilation feature. Debugging your programs is a breeze in Python with its built in debugger. Using Python makes ...

https://arab-binary-option.daybaporjoimu.ml