Skip to content

Instantly share code, notes, and snippets.

@sjb9774
sjb9774 / decrypt_m2_config_value.sh
Created December 12, 2019 21:56
Decrypt config value from stage/prod server
# get crypt key from remote server
ssh <user>@<server> -C 'grep "'\''key'\''" ~/app/etc/env.php' | awk '{ print $3 }'
# substitute local env.php crypt key with remote crypt key
# on vagrant
mr dev:console
$encryptor = $di->get(\Magento\Framework\Encryption\EncryptorInterface::class);
$encryptor->decrypt('value from remote database core_config_data table goes here');
diff --git a/vendor/magento/module-payment/Block/Transparent/Redirect.php b/vendor/magento/module-payment/Block/Transparent/Redirect.php
new file mode 100644
index 00000000000..aeaeee7e4d2
--- /dev/null
+++ b/vendor/magento/module-payment/Block/Transparent/Redirect.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
@sjb9774
sjb9774 / elasticsearch-upgrade.sh
Last active March 3, 2020 17:24
Update ElasticSearch 2.4.3 to 6.x
# on VM
sudo su
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
touch /etc/yum.repos.d/elasticsearch.repo
echo "[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
# add to ~/.bashrc and run . ~/.bashrc or open a new terminal window
function m2config () {
ssh -C $1 'php -d include_path='\''/var/www/stage/current:/var/www/html/current:/var/www/prod/current'\'' -r '\''$c = include "app/etc/env.php"; echo json_encode($c);'\''' | jq -r .$2
}
# usage
m2config www-stage@stage.mysite.com db.connection.default.username # returns db username from env.php
@sjb9774
sjb9774 / redis_session.sh
Last active February 12, 2021 10:27
retrieving gzipped redis data
>>> mr dev:console
$state = $di->get(\Magento\Framework\App\State::class);
$state->setAreaCode('frontend');
$redis = $di->get(\Magento\Framework\Session\SaveHandler\Redis::class);
$sessionData = $redis->read("<session id without 'sess_' prefix");
# fully decode like PHP
session_start();
session_decode($sessionData);
var_dump($_SESSION);
@sjb9774
sjb9774 / elasticsearch.sh
Last active February 25, 2021 21:11
ElasticSearch CURL Commands
ES_HOST='elasticsearch-host' # for example 127.0.0.1
ES_PORT='elasticsearch-port' # default 9200
# get indices
curl $ES_HOST:$ES_PORT/_cat/indices
ES_INDEX='index-name'
# get first 5 results from empty
curl $ES_HOST:$ES_PORT/$ES_INDEX/_search | jq .
@sjb9774
sjb9774 / server.py
Created January 30, 2023 02:59
Demo HTTP server
import socket
import select
if __name__ == "__main__":
# Get socket file descriptor as a TCP socket using the IPv4 address family
listener_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Set some modes on the socket, not required but it's nice for our uses
listener_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
address_port = ("127.0.0.1", 8080)
@sjb9774
sjb9774 / input.graphql
Created February 13, 2023 01:00
Modified main.rs for Shopify Product Discount Function example
query Input {
discountNode {
metafield(namespace: "my-discount-namespace", key: "my-discount-amount") {
value
}
}
cart {
lines {
merchandise {
__typename
@sjb9774
sjb9774 / proxy.js
Last active May 7, 2023 00:12
Proxy wrapper for objects that tracks changes in a "draft" object without touching the underlying initial object
const getProxyExample = (initialObject = {}) => {
const buildProxyClosure = () => {
let data = {};
let proxyHandler = {
get(obj, prop) {
return prop in data ? data[prop] : obj[prop];
},
set(obj, prop, value) {
data[prop] = value;
}
@sjb9774
sjb9774 / observer.js
Created May 7, 2023 00:14
Very simple observer pattern example
const createObserverPattern = () => {
let observers = [];
let register = (observer) => {
observers.push(observer);
}
let deregister = (observer) => {
observers = observers.filter((registeredObserver) => !Object.is(observer, registeredObserver))
}