This is inspired by A half-hour to learn Rust and Zig in 30 minutes.
Your first Go program as a classical "Hello World" is pretty simple:
First we create a workspace for our project:
This is inspired by A half-hour to learn Rust and Zig in 30 minutes.
Your first Go program as a classical "Hello World" is pretty simple:
First we create a workspace for our project:
Also see the original Pieter Noordhuis's guide
You need:
| carlosedp@ubuntu:~$ lscpu | |
| Architecture: x86_64 | |
| CPU op-mode(s): 32-bit, 64-bit | |
| Byte Order: Little Endian | |
| CPU(s): 2 | |
| On-line CPU(s) list: 0,1 | |
| Thread(s) per core: 1 | |
| Core(s) per socket: 2 | |
| Socket(s): 1 | |
| NUMA node(s): 1 |
This is a common-jargon walkthrough of an interesting Diablo 2 exploit. It provides the necessary background information (network protocol and game mechanics) to gain some understanding of the primitives from which it's constructed. Since the exploit is against a black-box network service with no available code, exact details and subtleties remain a mystery. :)
Diablo 2 items can have a list of properties with various effects. The most common items (normal or "white" ones) have very few possible effects; however, all items can have sockets. Rune and gem-type items can be inserted into sockets. Some sequences of runes are special - inserting them into a white item makes a runeword item with predictable special properties.
Here's an example runeword "Peace" created by inserting Shael, Thul, and Amn runes into a 3-socket Light Plate:
| #!/bin/sh | |
| # qemu-img create -f qcow2 mac_hdd.img 64G | |
| # echo 1 > /sys/module/kvm/parameters/ignore_msrs | |
| # | |
| # Type the following after boot, | |
| # -v "KernelBooter_kexts"="Yes" "CsrActiveConfig"="103" | |
| # | |
| # printf 'DE:AD:BE:EF:%02X:%02X\n' $((RANDOM%256)) $((RANDOM%256)) | |
| # |
So, with credit to the Factorio wiki and cbednarski's helpful gist, I managed to eventually setup a Factorio headless server. Although, I thought the process could be nailed down/simplified to be a bit more 'tutorialised' and also to document how I got it all working for my future records.
The specific distro/version I'm using for this guide being Ubuntu Server 16.04.1 LTS. Although, that shouldn't matter, as long as your distro supports systemd (just for this guide, not a Factorio headless requirement, although most distros use it as standard now).
The version of Factorio I shall be using is 0.14.20, although should work for any version of Factorio 0.14.12 and higher.
Just a note to newcomers: If there are any issues with the installation steps, people in the comments are doing a good job
| # Drop this file into /etc/X11/xorg.conf.d | |
| # This configures the middle and right-click areas at the *top* of the touchpad | |
| # only. The main and bottom areas are left-click. | |
| # The key setting is that AreaTopEdge is set to prevent you from moving the | |
| # mouse cursor by accident while clicking the trackpoint buttons. | |
| # Inspired by http://who-t.blogspot.ca/2013/12/lenovo-t440-touchpad-button.html | |
| Section "InputClass" |
Each of these commands will run an ad hoc http static server in your current (or specified) directory, available at http://localhost:8000. Use this power wisely.
$ python -m SimpleHTTPServer 8000| sudo apt-get update | |
| sudo apt-get install -y git-core build-essential libssl-dev libboost-all-dev libdb5.1-dev libdb5.1++-dev libgtk2.0-dev | |
| git clone https://github.com/bitcoin/bitcoin.git | |
| cd bitcoin/src | |
| make -f makefile.unix clean; make -f makefile.unix USE_UPNP= bitcoind | |
| javascript:(function() { | |
| var bookmarklet = { | |
| init: function() { | |
| this.parse(); | |
| }, | |
| parse: function() { | |
| page = ""; | |
| /* you must be viewing songs ie. http://www.rdio.com/people/nloko/collection/songs/ | |
| when exporting a collection and this will only export the songs loaded in view, |