Skip to content

Instantly share code, notes, and snippets.

@MakStashkevich
MakStashkevich / __root_folder.md
Created January 3, 2023 10:39
Dynamic header title & meta tags on NextJs 13
app/
- head.tsx
- layout.tsx
- page.tsx
- blog/[slug]/page.tsx
@taoyuan
taoyuan / generate_self_signed_certification.md
Last active March 14, 2026 05:37
Generation of a Self Signed Certificate

Generation of a Self Signed Certificate

Generation of a self-signed SSL certificate involves a simple 3-step procedure:

STEP 1: Create the server private key

openssl genrsa -out cert.key 2048

STEP 2: Create the certificate signing request (CSR)

openssl req -new -key cert.key -out cert.csr
@theanam
theanam / otpverify.js
Last active June 14, 2024 15:01
OTP verification without database, full sample source code
const otpGenerator = require("otp-generator");
const crypto = require("crypto");
const key = "verysecretkey"; // Key for cryptograpy. Keep it secret
function createNewOTP(phone){
// Generate a 6 digit numeric OTP
const otp = otpGenerator.generate(6, {alphabets: false, upperCase: false, specialChars: false});
const ttl = 5 * 60 * 1000; //5 Minutes in miliseconds
const expires = Date.now() + ttl; //timestamp to 5 minutes in the future
const data = `${phone}.${otp}.${expires}`; // phone.otp.expiry_timestamp
@SagiMedina
SagiMedina / ImageTools.js
Last active September 7, 2024 04:39
Resize and crop images in the Browser with orientation fix using exif
import EXIF from 'exif-js';
const hasBlobConstructor = typeof (Blob) !== 'undefined' && (function checkBlobConstructor() {
try {
return Boolean(new Blob());
} catch (error) {
return false;
}
}());
@martinvirtel
martinvirtel / krpano-to-marzipano.config
Last active May 2, 2023 19:28
Generate tile files for marzipano.net panorama viewer with krpanotools from krpano.com
# Generate tile files that can be used with https://www.marzipano.net
# This is a config file for https://krpano.com/tools/kmakemultires/config/ -
flash=false
html=false
xml=false
panotype=autodetect
tilesize=512
@cferdinandi
cferdinandi / vanilla-js-plugin.js
Created June 13, 2017 00:10
My starter template for vanilla JavaScript plugins.
(function (root, factory) {
if ( typeof define === 'function' && define.amd ) {
define([], factory(root));
} else if ( typeof exports === 'object' ) {
module.exports = factory(root);
} else {
root.myPlugin = factory(root);
}
})(typeof global !== 'undefined' ? global : this.window || this.global, function (root) {
@mcshaz
mcshaz / ExampleController.cs
Last active September 8, 2022 23:43
simple implementation of the Google reCAPTCHA service in C#/.Net MVC5 using async method (as oppsed to ActionFilterAttribute)
namespace MyMvcApp.Controllers
{
public class HomeController : Controller
{
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> ContactSubmit(
[Bind(Include = "FromName, FromEmail, FromPhone, Message, ContactId")]
ContactViewModel model)
{
@dtoki
dtoki / PostData.js
Last active November 15, 2022 16:44
Sending data to a web hook using javascript XMLHttpRequest #clientside
function postDataToWebhook(data){
//get the values needed from the passed in json object
var userName=data.name;
var userPlatform=data.platform;
var userEmail=data.email;
//url to your webhook
var webHookUrl="webhook_url";
//https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
var oReq = new XMLHttpRequest();
@andrewmwilson
andrewmwilson / gmail_to_slack.js
Last active December 11, 2025 16:57
Google Apps Script: Send Gmail emails to Slack
// You will also need to create a gmail filter to add the 'send-to-slack' label
// to any emails you want sent to slack
function sendEmailsToSlack() {
var label = GmailApp.getUserLabelByName('send-to-slack');
var messages = [];
var threads = label.getThreads();
for (var i = 0; i < threads.length; i++) {
messages = messages.concat(threads[i].getMessages())
@RonnyO
RonnyO / jquery.qDefer.min.js
Created April 15, 2012 11:24
Simply mimic the 'defer' attribute for inline scripts across all browsers (jQuery helper)
// http://bit.ly/qDefer
$(function(){$('script[type="text/javascript/defer"]').each(function(){$(this).clone().attr('type','').insertAfter(this)})});