Skip to content

Instantly share code, notes, and snippets.

View wzul's full-sized avatar
😋
Yummy

Wan Zulkarnain wzul

😋
Yummy
View GitHub Profile
@wzul
wzul / http_build_query_duplicate_key.php
Created November 1, 2023 11:30
PHP Array same key for http_build_query
<?php
/**
* This is my first contribution in stack overflow!
* https://stackoverflow.com/questions/17161114/php-http-build-query-with-two-array-keys-that-are-same/77402243#77402243
*/
function http_build_query_duplicate_key( array $array ) {
$special_keys = [];
foreach($array as $key => $value) {
@wzul
wzul / wordpress_ec2_t2_nano.md
Last active April 2, 2023 10:13
Deploying WordPress with AWS EC2 t2.nano

Situation

  • I need to host 3 websites:
    • WHMCS: For my hosting billing
    • WordPress 1x: For my blog
    • WordPress 1x: For my testing

Architecture

  • 1x AWS EC2 t2.nano for MariaDB
@wzul
wzul / itr.js
Created January 6, 2023 03:40 — forked from constantm/itr.js
NodeJS implementation in Pipedream of "Intent to Receive" for Xero webhooks
async (event, steps) => {
// NodeJS implementation in Pipedream of "Intent to Receive" for Xero webhooks
const { createHmac } = await import('crypto');
const xero_webhook_key = 'OSd0eLlVIY9ZhViEqlDUh4+6n6M+Lo+eDaEJheJ6OCCgWwIz2D3JIAU6jPMipHRbgKTLz2uJ+xiACXGDBLrgdA==' // Get this from the Xero app
const body_string = Buffer.from(steps.trigger.raw_event.body_b64, 'base64').toString() // Use RAW body data so that Pipedream doesn't break our data
const xero_hash = steps.trigger.event.headers["x-xero-signature"] // Could probably shorten, but keeping it long for consistency
let our_hash = createHmac('sha256', xero_webhook_key).update(body_string).digest("base64") // Generate the hash Xero wants
let statusCode = xero_hash == our_hash ? 200 : 401 // If the hashes match, send a 200, else send a 401
@wzul
wzul / vagrant-ror.md
Last active August 21, 2022 05:01
Using Vagrant with Ruby on Rails

Vagrant X Ruby On Rails

I'm the bigfan of gorails.com website and I'm using for the past 5 years. It helps me to setup Ruby on Rails locally either on Windows or Ubuntu.

For Vagrant, I'm following this article to setup it with Ruby on Rails: https://gorails.com/guides/using-vagrant-for-rails-development

Issue

There is multiple when following those article. Hence, I decided to configure it manually where Vagrant only works as ruby interpreter and PostgreSQL installed on the host operating system.

@wzul
wzul / wp-user-registration-query.php
Created September 2, 2021 04:30 — forked from stephenharris/ wp-user-registration-query.php
Get all users registered between two dates
<?php
/*
* Get all users registered after $start and before $end (dates in yyyy-mm-dd format)
*
* Based on my answer to this question: http://wordpress.stackexchange.com/questions/51485/how-can-i-query-all-users-who-registered-today/51492#51492
*
* @param (string) $start - start date in yyyy-mm-dd format
* @param (string) $end - end date in yyyy-mm-dd format
*/
@wzul
wzul / github_gpg_key.md
Created December 5, 2020 07:51 — forked from ankurk91/github_gpg_key.md
Github : Signing commits using GPG (Ubuntu/Mac)

Github : Signing commits using GPG (Ubuntu/Mac) 🔐

  • Do you have an Github account ? If not create one.
  • Install required tools
  • Latest Git Client
  • gpg tools
# Ubuntu
sudo apt-get install gpa seahorse
# MacOS with https://brew.sh/
@wzul
wzul / gist:f20aa6bd520dddf6761d92f264b7c255
Created August 27, 2020 07:46 — forked from bkimble/gist:1365005
List local memcached keys using Ruby
#!/usr/bin/env ruby
# List all keys stored in memcache.
# Credit to Graham King at http://www.darkcoding.net/software/memcached-list-all-keys/ for the original article on how to get the data from memcache in the first place.
require 'net/telnet'
headings = %w(id expires bytes cache_key)
rows = []
@wzul
wzul / 01.1.lifecycle.rb
Created July 1, 2020 10:07 — forked from Aupajo/01.1.lifecycle.rb
Sockets in Ruby
require 'socket'
# 1. Create
# AF_INET means IPv4 (xxx.xxx.xxx.xxx)
# SOCK_STREAM means communicating with a stream (TCP)
#
# Can be simplified to symbols :INET and :STREAM, respectively
server = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM)
@wzul
wzul / cert_convert.sh
Created June 24, 2020 08:32 — forked from jmervine/cert_convert.sh
openssl: convert cert from p7b to crt (or cer)
openssl pkcs7 -print_certs -in old.p7b -out new.crt
# openssl pkcs7 -print_certs -in old.p7b -out new.cer

Use Proxy for Git/GitHub

Generally, the Git proxy configuration depends on the Git Server Protocal you use. And there're two common protocals: SSH and HTTP/HTTPS. Both require a proxy setup already. In the following, I assume a SOCKS5 proxy set up on localhost:1080. But it can also be a HTTP proxy. I'll talk about how to set up a SOCKS5 proxy later.

SSH Protocol

When you do git clone ssh://[user@]server/project.git or git clone [user@]server:project.git, you're using the SSH protocal. You need to configurate your SSH client to use a proxy. Add the following to your SSH config file, say ~/.ssh/config:

ProxyCommand nc -x localhost:1080 %h %p