Skip to content

Instantly share code, notes, and snippets.

View kenjij's full-sized avatar
👨‍💻
Hacking away...

Ken J. kenjij

👨‍💻
Hacking away...
View GitHub Profile
@kenjij
kenjij / ddb_batch_put.rb
Created October 5, 2021 00:19
AWS DynamoDB batch write (put) in Ruby, ideally use in Lambda
require 'aws-sdk-dynamodb'
# DynamoDB batch write (put) routine
# @param items [Array<Hash>] DynamoDB items to put
# @param table [String] DynamoDB table name
def ddb_batch_put(items, table)
ddb = Aws::DynamoDB::Client.new
batch = items.map { |item| {put_request: {item: item}} if Hash === item }
batch.compact!
puts "Batch write to: #{table}, #{batch.length} items."
@kenjij
kenjij / networking.sh
Created July 15, 2021 19:36
Ubuntu 20.04 Focal Networking
# Check IP address
ip a
# Check default gateway
ip r
route -n
# Check DNS server
systemd-resolve --status
@kenjij
kenjij / twilio.rb
Created April 28, 2020 18:53
[Twilio] Validate Signature of Request (in pure Ruby)
require 'base64'
require 'openssl'
# See: https://www.twilio.com/docs/usage/security#validating-requests
#
# Example of AWS API Gateway (HTTP) + Lambda
def is_twilio_request_valid?(event)
# Create a string that is your URL with the full query string
url = "https://#{event['headers']['host']}#{event['rawPath']}"
# Sort the list of POST variables by the parameter name
@kenjij
kenjij / GET.json
Created February 7, 2020 07:48
Sample: AWS Lambda function event contents received from API Gateway (HTTP API; route: "/event")
{
"version":2,
"path":"/event",
"httpMethod":"GET",
"headers":{
"Content-Length":"0",
"Host":"abcde12345.execute-api.us-west-2.amazonaws.com",
"User-Agent":"curl/7.54.0",
"X-Amzn-Trace-Id":"Root=1-67891233-abcdef012345678912345678",
"X-Forwarded-For":"192.168.1.23",
@kenjij
kenjij / Makefile
Created February 7, 2020 06:00
Build and Package RubyGems for AWS Lambda Layer Use (example)
#
# Build and Package RubyGems for AWS Lambda Layer Use
#
all: build package
build:
gem i firebase-ruby -Ni ruby/gems/2.5.0
gem i darksky-ruby -Ni ruby/gems/2.5.0
ls -m ruby/gems/2.5.0/gems
@kenjij
kenjij / Slack.md
Last active June 13, 2019 07:33
Slack access token for bots (OAuth)

Slack OAuth for Bot App

1. Autorization

Open in a web browser: https://slack.com/oauth/authorize?scope=bot&client_id=12345.67890

  • Use Client ID from App Credentials.
  • Use bot for scope.

2. Authorization Code

@kenjij
kenjij / readme.md
Last active January 29, 2019 17:22
Swap Control and Caps Lock on Windows

Edit Windows Registry

  1. Open Registry Editor
  2. Go to: Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
  3. Edit, or add, binary value key: Scancode Map (see below)
  4. Restart to take effect

Map Value

@kenjij
kenjij / gist:cc93165babf1f3b4b040
Last active August 6, 2018 16:57
Secure and optimized NGINX SSL configuration
http {
# Shared cache size; 1MB = 4000 sessions
ssl_session_cache shared:SSL:10m;
# Decrease timeout if resources are low
ssl_session_timeout 10m;
# Good-bye SSL
ssl_protocols TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:!ADH:!AECDH:!MD5;
# OCSP stapling
@kenjij
kenjij / fast.rb
Created August 9, 2017 06:23
Pretty format option for JSON.fast_generate
opts = {
indent: ' ',
space: ' ',
object_nl: "\n",
array_nl: "\n"
}
JSON.fast_generate(obj, opts)
@kenjij
kenjij / load.rb
Created March 23, 2017 18:16
Load files from list of directories in Ruby
def load_from_path(path)
Dir.chdir(path) {
Dir.foreach('.') { |f| load f unless File.directory?(f) }
}
end
paths = [
'conf.d',
'plugins'
]