Skip to content

Instantly share code, notes, and snippets.

View shawnfeng0's full-sized avatar
💭
Keep thinking

Shawn Feng shawnfeng0

💭
Keep thinking
View GitHub Profile
@shawnfeng0
shawnfeng0 / openssl_crypt.cc
Last active April 15, 2021 09:03
Use openssl crypt
#include <openssl/evp.h>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <vector>
// From https://www.openssl.org/docs/man1.1.1/man3/EVP_EncryptInit.html
static bool CryptAes256Cfb(const std::vector<uint8_t> &key,
const std::vector<uint8_t> &iv,
@shawnfeng0
shawnfeng0 / dd_read_write_test.sh
Last active April 7, 2021 09:14
dd read and write test
sync && dd if=/dev/zero of=/var/avi/mmc0/tmp.bin bs=1M count=100 && sync && dd if=/var/avi/mmc0/tmp.bin of=/dev/null bs=1M
@shawnfeng0
shawnfeng0 / change_git_commit_message.sh
Last active August 4, 2021 13:44
change git commit message
#!/bin/sh
if [ $# -lt 3 ] ; then
echo "Usage: $0 old_email new_email new_name"
echo "Example: $0 [email protected] [email protected] new_name"
exit 1;
fi
echo "old_email: $1"
echo "new_email: $2"
@shawnfeng0
shawnfeng0 / create_gitkeep_to_empty_directory.sh
Created April 13, 2021 07:32
Create .gitkeep file to empty directory
find -type d -empty | xargs -t -L1 -I _ touch _/.gitkeep
@shawnfeng0
shawnfeng0 / mutex_queue.h
Last active March 22, 2022 04:09
simple queue with mutex
//
// Created by shawnfeng on 2021-08-12.
// https://gist.github.com/ShawnFeng0/429b6caef85ec0d32f34081374dcdb8a
//
#pragma once
#include <atomic>
#include <condition_variable>
#include <mutex>
#include <iostream>
#define REFRESH_OUTPUT_LINE(token) \
std::cout << "\r"; \
std::cout << #token << " => " << (token); \
std::cout << "\x1b[K"; \
std::cout.flush();
@shawnfeng0
shawnfeng0 / enum_with_string.h
Last active November 15, 2021 09:40
Define an enum that can be converted to a string
//
// Created by shawnfeng([email protected]) on 2021/11/1.
//
#pragma once
#include <map>
#include <string>
#include <vector>
// reference:
@shawnfeng0
shawnfeng0 / busybox_httpd_indexcgi.c
Last active July 1, 2022 09:05
Modified the file index graphical interface to be similar to the nginx interface, Original reference: networking/httpd_indexcgi.c
/*
* Copyright (c) 2007 Denys Vlasenko <[email protected]>
*
* Licensed under GPLv2, see file LICENSE in this source tree.
*/
/*
* This program is a CGI application. It outputs directory index page.
* Put it into cgi-bin/index.cgi and chmod 0755.
*/
@shawnfeng0
shawnfeng0 / delay_truth.h
Last active August 3, 2022 13:17
DelayTruth: Delay setting true variable. TimeoutTruth: Set true to false after timeout
#include <chrono>
/*
* Delay setting true variable
* test code:
DelayTruth state(2000);
EXPECT_FALSE(state);
state.mark(true);
EXPECT_FALSE(state);
sleep(1);
int main(void) {
std::string raw = "{\"test\": 1}";
Json::Value root;// starts as "null"; will contain the root value after parsing
Json::Reader reader;
reader.parse(raw, root, false);
int test_a = root["test"].asInt();
DEBUG_TOKEN(test_a);