Skip to content

Instantly share code, notes, and snippets.

View voronkovich's full-sized avatar

Oleg Voronkovich voronkovich

View GitHub Profile
@voronkovich
voronkovich / mvmodx.sh
Created August 9, 2014 15:23
Moving MODx to another directory
#!/usr/bin/env sh
#
# Launch this script in a new MODx directory
#
old_path=$(sed -ne "s/^.*\\\$modx_base_path[[:space:]]*=[[:space:]]*'\\(.*\\)';.*$/\\1/p" core/config/config.inc.php)
new_path=$(readlink -f ${2:="."} 2&>/dev/null)
for file in $(grep -lR --exclude-dir="cache" $old_path * 2&> /dev/null)
#!/usr/bin/env bash
#
# Launch this script in a new Joomla folder
#
current_dir=$(readlink -f .)
if [[ ! -w $current_dir/configuration.php ]]; then
echo "Error: configuration.php isn't writable or doesn't exists" 1>&2
exit 1;
@voronkovich
voronkovich / backup.sh
Last active August 29, 2015 14:22
Backup to Yandex.Disk using webdav
#!/usr/bin/env sh
remote_url='https://webdav.yandex.ru/backups'
credentials=$(cat ~/.yapwd) # user:password
curl_command="curl -u $credentials"
create_remote_dir() {
$curl_command -X MKCOL "$remote_url/$1"
return $?
@voronkovich
voronkovich / mysql_helper.php
Created May 14, 2017 21:54
db_get_prepare_stmt
<?php
/**
* Создает подготовленное выражение на основе готового SQL запроса и переданных данных.
*
* @param mysqli $link Ресурс соединения
* @param string $sql SQL запрос с плейсхолдерами вместо значений
* @param array $data Данные для вставки на место плейсхолдеров
*
* @throws \UnexpectedValueException Если тип параметра не поддерживается
@voronkovich
voronkovich / unit-of-work.php
Created October 28, 2018 16:36
Unit of work example
<?php
class Tweet
{
private $id;
private $content;
public function __construct(int $id, string $content)
{
$this->id = $id;
@voronkovich
voronkovich / index.php
Created December 15, 2018 16:08
PHP routing example
<?php
$routes = [
'GET /' => function (string $method, array $params) {
echo 'Welcome!';
},
'(GET|POST) /hello(/(?<name>[^/]++))?' => function (string $method, array $params) {
\printf('Hello, %s!', $params['name'] ?? 'World');
},
];
#!/bin/sh
binary="${1:-./a.out}";
test() {
input="$1";
expected="$2";
actual="$(echo $input | $binary)";
if [ "$expected" = "$actual" ]; then
@voronkovich
voronkovich / fuzzy.c
Created March 21, 2019 16:49
Fuzzy match function in C
#include <ctype.h>
int fuzzy_match(const char *needle, const char *haystack)
{
while (*needle && *haystack) {
if (*haystack == tolower(*needle) || *haystack == toupper(*needle)) {
needle++;
}
haystack++;
#include <stddef.h>
#include "xor.h"
void *memxor(void *s, size_t ssize, void *k, size_t ksize)
{
unsigned char *sp = s;
unsigned char *kp = k;
for (size_t i = 0; i < ssize; ++i) {
@voronkovich
voronkovich / webpack.config.js
Last active February 9, 2020 16:15
Configuration for Symfony Encore VueJS single page app
var Encore = require('@symfony/webpack-encore');
if (!Encore.isRuntimeEnvironmentConfigured()) {
Encore.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev');
}
Encore
.setOutputPath('public/build/')
.setPublicPath('/build')
.addEntry('app', './assets/js/app.js')