Today we will walk through the creation of our first React web app!
Coming Soon
First you'll need node.js and a JavaScript editor like atom.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBA8xNyek5IXUX5ZHu+7edB8gtPWK9TEXMDn63c8n9KWCIOeYNYMBTRZeNpdIbpZjnmoJLe1r/La5VFK+fFNAdVyTL7Lq/nPSD/aPUWa7K+uu8vd4Sf2DbJDdfRk66REEjuuD37rOi/l/SCMHlxTNm3/eUM7a6/48NZwggdItnCHlVX6Tyg3v2bAkWWRocLfVUS+mnPQQ1dkALJ8/6GxX4bCIUxnTXWmbubmBOnkEiiJIH9fb1oQk7wTHI6XKqpaYBD8eaODOlQPjV88XKMx0w7s/V3e6bjq0tRMo74TQx9fLNCqPWCMIupJmDCCbRQsyyfA8BVfCxLN8k5avRr3wL eric@mbp |
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDCFlcFe09b6HOIi5w/JtDEeFHVVCXSyOSjHH3JTOa0P5fZlNkwdO5Jy2SAXaMkNVaVi+wVOHV9y3EzLEMF0iM5+HTYI3Hhky34CcFe2VZzHFXhTREyqe8sBC2vdZCMt1xbUWhMAJpE896P4wz5s5stCBm4iO5KGnwyoEXluD8woeL6+nNXpxwOoY560vKHxj0FDhiLihA6UpO8Rllf8oMeyxu0NoUMH8i1po1UzAOW0i7RjMk3a1gAbVvCGbLPXwxXjtH1gFNL9WmQYw/btBbOfOgb7GICsax8Sbua31cph3/e2LxbQZhBIIm+rTV4b9LsUMxuuhhryjXPtPnXeE9 root@hyperion |
# | |
# Qt5 WebEngine Kiosk Runner | |
# deps: apt-get install python-pyqt5.qtwebengine | |
# | |
import sys, os | |
from PyQt5.QtCore import QUrl | |
from PyQt5.QtGui import QIcon | |
from PyQt5.QtWidgets import QApplication, QWidget, QBoxLayout, QPushButton | |
from PyQt5.QtWebEngineWidgets import QWebEngineView |
import React, { forwardRef, useRef } from "react"; | |
const Input = forwardRef((props, ref) => ( | |
<input type="text" ref={ref} className="input" {...props} /> | |
)); | |
function doSideEffect() { | |
alert("hey, focused!"); | |
} |
To mitigate this, the non-shitty network should require a verified phone number. This is far from a complete solution, but most people have one and only one phone number.
Eventually, authorities could be established who vet the real identity of a user, and provide an additional badge of authenticity. (aka Twitters "blue chekmark")
It is generally a good idea to keep a rating for every user, so that content produced by assholes can be hidden.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD50UfBsc1TsZF2H2eeJNjEyzUYxJC8ZsCWwSQCOiUUMLVoOESn/wRDO1PYKC/mswRWy5Tgx0hpSIQdgY2HBS5Exnm1rjey8QNbd4Rm0lT+9QeikRoCgsCRwes3YcDsNWltL6XEAKCFlobQrTZMH/zwd44jU5bBW9JMcTs3fJ+ybIzdrM2fqiLPTlr86rIUDTW6lJHJi9X7SgAPj7Ml9Rqo379B2SExALOyrjfB36vis7CkOrkEE79FeJJcvQo7JFM6NoYDLmsbXOuQAn1O8PMWxiCWOHVgFDy/p7pUpGu1gxv7Ra4zXsHAMjzJyifj89bPyyr1Y81AZtcnL6QsIkZb ono@ono-maui-restaurant |
import Animated from 'react-native-reanimated'; | |
const defaultApplyValue = (v, dest) => v.setValue(dest); | |
export default function useAnimatedValue(currentValue, applyValue = defaultApplyValue) { | |
const [val] = useState(new Animated.Value(currentValue)); | |
useEffect( | |
() => { | |
applyValue(val, currentValue); |
-----BEGIN PGP PUBLIC KEY BLOCK----- | |
mQGNBGECaCcBDAC0v1pxNonLk02TAncNgi3QZvqmvvOLzdr2kPSCQM+8O3w9xN8Z | |
WnO7MdeF7fH9yuUvLI9vrDQrE7qhdLB29nvqiDesfzhVgbijOZjKgYfeyk894/6V | |
xdkrZXhs2pdkYKXp5aFc/ceMpDk0F9RaWv/8nAkB9vSJSByMujj+BehQKjNRGppI | |
Aa555S3pv4INluElRFkF9EVKmdzSVNMjVXx+9VwNy7uy1aaMTyAXM/ilcljvxjWS | |
XEOFO8k50A2Q14KYhtT8/IwDBqXu3SvZGpXFmkgicX0yNobKJ0E1Mc1DPBsh584X | |
4zt8Gt2rdaXHA1/RWzxdY7lQLzpz47S0VDZcfP1U0Z10lMJN9yj7r6hh3Zn1vj2u | |
Gl0x8fzJ2rY4csFmD9o7UUsFG+2JA9qbveVTvGmomqLgfqOZwE+6mw06tipHQu3r | |
DIX+eeK8mEQzUSzEmZHC4FhB3LO1RlCu5ZQIr5mnuqGUc/ZpRwdmp6liHrGHxzUA |
const fs = require('fs'); | |
const net = require('net'); | |
async function isSocketInUse(socketPath) { | |
return new Promise((resolve, reject) => { | |
const clientSocket = new net.Socket(); | |
clientSocket.on('error', e => { | |
if (e.code === 'ECONNREFUSED') { | |
resolve(false); | |
} else { |