Skip to content

Instantly share code, notes, and snippets.

@davidmz
davidmz / inline-worker.js
Created June 14, 2011 09:02
Создание Web Worker-а без использования внешнего JS-файла. Работает ТОЛЬКО в Google Chrome (остальные браузеры не поддерживают BlobBuilder).
/**
* Создание Web Worker-а без использования внешнего JS-файла.
* Работает ТОЛЬКО в Google Chrome (остальные браузеры не поддерживают BlobBuilder)
*/
function InlineWorker(code) {
var URL = (self.URL || self.webkitURL), BlobBuilder = (self.BlobBuilder || self.WebKitBlobBuilder);
var bb = new BlobBuilder();
bb.append("(" + code.toString() + ")();");
var url = URL.createObjectURL(bb.getBlob("application/javascript"));
var worker = new Worker(url);
@davidmz
davidmz / gist:1056005
Last active August 1, 2019 08:15
Букмарклет для ссылок на mp3 вконтакте #bookmarklet
javascript:(function() { var its = document.querySelectorAll("input[type='hidden'][id^='audio_'][value*='.mp3']"); for (var i = 0; i < its.length; i++) { var a = document.createElement('a'); a.href = its[i].value.replace(/,\d+$/, ''); its[i].parentNode.insertBefore(a, its[i]); a.innerHTML = "mp3"; } })();
@davidmz
davidmz / gist:1238089
Last active August 1, 2019 08:14
[Букмарклет для перехода из альбома в G+ к альбому в Picasa] Нажимать надо, находясь на страница альбома G+. #bookmarklet
/**
* Собственно букмарклет:
*
javascript:(function(){var b=window.location,a;if(b.host=="plus.google.com"&&(a=b.pathname.match(/\/photos\/(\d+)\/albums\/(\d+)$/))){var b=a[1],c=a[2];console.log(c);a=new XMLHttpRequest;a.open("GET","https://plus.google.com/u/0/_/photos/albums/"+b);a.responseType="text";a.onload=function(){for(var a=JSON.parse(this.response.replace(")]}'","").replace(/\[,/g,'["",').replace(/,,/g,',"",').replace(/,,/g,',"",')),b=0;b<a[2].length;b++)if(a[2][b][5]==c){window.location=a[2][b][8];return}alert("Album not found")};
a.send()}else alert("Invalid page address")})();
*
* Ниже приведён несжатый код
*/
@davidmz
davidmz / bcrypt.php
Created June 9, 2012 20:01
PHP Bcrypt class
<?php
/**
* From http://stackoverflow.com/a/6337021
*/
class Bcrypt {
private $rounds;
public function __construct($rounds = 12) {
if (CRYPT_BLOWFISH != 1) {
throw new Exception("bcrypt not supported in this installation. See http://php.net/crypt");
@davidmz
davidmz / gist:2904842
Created June 10, 2012 10:24
Implementation of the PBKDF2 key derivation function as described in RFC 2898.
<?php
/**
* Implementation of the PBKDF2 key derivation function as described in
* RFC 2898.
*
* @param string $PRF Hash algorithm.
* @param string $P Password.
* @param string $S Salt.
* @param int $c Iteration count.
* @param mixed $dkLen Derived key length (in octets). If $dkLen is FALSE
@davidmz
davidmz / gist:2924310
Created June 13, 2012 14:10
Код символа → UTF-8
<?php
function codeToUtf8($code) {
$code = (int)$code;
if ($code < 0x80) return chr($code);
if ($code < 0x800) return chr(0xC0 + (($code >> 6) & 0x1F)) .
chr(0x80 + ($code & 0x3F));
if ($code < 0x10000) return chr(0xE0 + (($code >> 12) & 0x0F)) .
chr(0x80 + (($code >> 6) & 0x3F)) .
chr(0x80 + ($code & 0x3F));
if ($code < 0x200000) return chr(0xF0 + (($code >> 18) & 0x07)) .
@davidmz
davidmz / run-forever.sh
Created November 28, 2012 14:33
Скрипт авторестарта программы
#!/bin/sh
if [ $# -eq '0' ]
then
echo 'Empty command'
exit 1
fi
stop=0
trap 'stop=1' TERM QUIT INT
@davidmz
davidmz / yandex-colors.json
Created December 6, 2012 15:21
Названия цветов из Яндекса
[
["Кармин","960018"],
["Кардинал","c41e3a"],
["Тициановый","d53e07"],
["Красный","ff0000"],
["Алый","ff2400"],
["Карминово-красный","ff0033"],
["Киноварь","ff4d00"],
["Международный оранжевый","ff4f00"],
["Ализариновый","e32636"],
@davidmz
davidmz / recursiveGlob.php
Last active January 27, 2020 15:54
Рекурсивный перебор файлов по заданной glob-маске.
<?php
/**
* Рекурсивный проход по каталогу
* @return array Полный список найденных файлов
*/
function recursiveGlob($startDir, $fileMask) {
$found = glob($startDir.DIRECTORY_SEPARATOR.$fileMask);
$dirs = glob($startDir.DIRECTORY_SEPARATOR."*", GLOB_ONLYDIR);
foreach ($dirs as $dir) $found = array_merge($found, recursiveGlob($dir, $fileMask));
return $found;
@davidmz
davidmz / xcell.js
Created January 28, 2014 18:37
Простая FRP-библиотечка для JS, позволяющая писать код в Excell-стиле.
(function (undefined) {
"use strict";
var
isArray = Array.isArray || function (v) {
return Object.prototype.toString.call(v) === "[object Array]";
},
isFunction = function (v) {
return Object.prototype.toString.call(v) === "[object Function]"
},