Skip to content

Instantly share code, notes, and snippets.

@snassr
snassr / medium_blog_7b709682aa7b_SetupDevelopmentEnvironment.sh
Created August 19, 2022 04:24
Medium Blog - Build and Deploy a Hugo Blog With Caddy - Setup Development Environment
# download hugo
wget -O ~/Downloads/hugo_0.31.1_Linux-64bit.deb https://github.com/gohugoio/hugo/releases/download/v0.31.1/hugo_0.31.1_Linux-64bit.deb
# install hugo
sudo dpkg -i ~/Downloads/hugo_0.31.1_Linux-64bit.deb
# verify install
hugo version
# download & install caddy
curl https://getcaddy.com | bash -s personal http.git,http.minify
# verify install
caddy -version
@snassr
snassr / medium_blog_7b709682aa7b_SetupPreDeploymentEnvironment.sh
Created August 19, 2022 04:34
Medium Blog - Build and Deploy a Hugo Blog With Caddy - Setup Pre-Deployment Environment
# in a new terminal (tab)
# export variables again (unnecessary if in the same terminal session as before)
export GITHUB_USERNAME=snassr
export GITHUB_REPONAME=myblog
export OS_REPOLOCATION=~/$GITHUB_REPONAME
# change directory to blog folder
cd $OS_REPOLOCATION/$GITHUB_REPONAME
# add a caddyfile (setup for display on port 80)
cat << EOF > ./CaddyFile
:80 {
@snassr
snassr / medium_blog_7b709682aa7b_SetupDeploymentEnvironment.sh
Created August 19, 2022 04:37
Medium Blog - Build and Deploy a Hugo Blog With Caddy - Setup Deployment Environment
# create a digital ocean ubuntu droplet (smallest size is OK for this example)
# in a new terminal (tab)
# export server username
export SERVER_USERNAME=root
# export ip of remote server (provided by digitalocean for example)
export REMOTESERVER_IP=45.55.250.178
# login to remote server
ssh $SERVER_USERNAME@$REMOTESERVER_IP
# export variables again (unnecessary if in the same terminal session as before)
export GITHUB_REPONAME=myblog
@snassr
snassr / medium_blog_be6330ad547d_SetupNodeReactEnvironment.sh
Created August 19, 2022 15:17
Medium Blog - WebSockets React & Go - Setup Node/React.js Environment
# make frontend directory and change to that directory
mkdir -p ~/blog-goreactsockets/frontend && cd ~/blog-goreactsockets/frontend
# create webpack configuration file
echo "module.exports = {
entry: [
'./src/index.js'
],
module: {
loaders: [
{
@snassr
snassr / medium_blog_be6330ad547d_index.html
Created August 19, 2022 15:39
Medium Blog - WebSockets React & Go - HTML Index File
<html>
<head>
<title>GoReactSockets!</title>
</head>
<body>
<div id="app"></div>
<script src="bundle.js"></script>
</body>
</html>
@snassr
snassr / medium_blog_be6330ad547d_index.js
Created August 19, 2022 15:52
Medium Blog - WebSockets React & Go - JS Index File
import React from 'react';
import ReactDOM from 'react-dom';
import App from './components/App'; // component not yet created
// mount parent react element (App) on id app.
ReactDOM.render(
<App />,
document.getElementById('app')
@snassr
snassr / medium_blog_be6330ad547d_socket.js
Created August 19, 2022 15:57
Medium Blog - WebSockets React & Go - JS WebSockets File
import {EventEmitter} from 'events';
// Socket class to construct and provide methods for WebSocket connections.
export default class Socket {
constructor(ws = new WebSocket(), ee = new EventEmitter()) {
this.ws = ws;
this.ee = ee;
// attach message function as event listener for incoming websocket messages.
ws.onmessage = this.message.bind(this);
// attach open function tas event listener on websocket connections.
@snassr
snassr / medium_blog_be6330ad547d_App.jsx
Created August 19, 2022 16:17
Medium Blog - WebSockets React & Go - JSX App Component File
import React from 'react';
import ReactDOM from 'react-dom';
// import socket class
import Socket from '../socket';
export default class App extends React.Component {
constructor(props) {
super(props);
@snassr
snassr / medium_blog_3a856ee3b9ba_singlylinkedlist.go
Last active September 12, 2022 22:26
Medium Blog - Unit Testing in Go (Golang) - Singly Linked List FIle
// SinglyLinkedList implements a list of items.
type SinglyLinkedList interface {
Append(val int)
Values() []int
}
// NewSinglyLinked list returns a new list.
func NewSinglyLinkedList(vals ...int) SinglyLinkedList {
return newList(vals...) // swap different implementation constructor here.
}
@snassr
snassr / medium_blog_3a856ee3b9ba_singlylinkedlist_test.go
Last active September 12, 2022 22:24
Medium Blog - Unit Testing in Go (Golang) - Singly Linked List Test Suite File
func TestSinglyLinkedList(t *testing.T) {
for title, fn := range map[string]func(t *testing.T){
"append item to list": testAppend, // test: append functionality
"return items in list": testValues, // test: values functionality
} {
t.Run(title, func(t *testing.T) {
fn(t)
})
}
}