Skip to content

Instantly share code, notes, and snippets.

@unicornist
unicornist / FarsiDigits.js
Last active February 21, 2019 18:35
Persian to English (and vice versa) Digit convert in JavaScript and PHP
// this version is much more performant than previous one (see gist revisions)
var FarsiDigits = {
toEn: function(input) { return (input+'').replace(FarsiDigits._regexFa, FarsiDigits.charToEn); },
toFa: function(input) { return (input+'').replace(FarsiDigits._regexEn, FarsiDigits.charToFa); },
charToFa: function(char){ return String.fromCharCode(char.charCodeAt(0)+0x6c0); },
charToEn: function(char){ return String.fromCharCode(char.charCodeAt(0)-0x6c0); },
_regexFa: /[\u06f0-\u06f9]/g,
_regexEn: /[0-9]/g
};
@unicornist
unicornist / caretRangeFromPoint.js
Last active August 30, 2023 01:39
Cross browser caretRangeFromPoint
//demo: http://jsfiddle.net/heZ4z/
if (document.addEventListener) { // standard
document.addEventListener('click', function onclick(e) {
var r;
if (document.caretRangeFromPoint) { // standard (WebKit)
r = document.caretRangeFromPoint(e.pageX, e.pageY);
} else if (e.rangeParent) { // Mozilla
r = document.createRange();
function setAutoDirection(jqueryNodeList, defaultDirection) {
jqueryNodeList.keyup(function (e) {
var val = e.target.value || e.target.placeholder;
e.target.dir = val ? ((val.charCodeAt(0) >= 0x0600 && val.charCodeAt(0) <= 0x06FF) ? "rtl" : "ltr") : defaultDirection || "rtl";
});
}
// ---------------- USAGE ---------------- //
setAutoDirection($("input[type=text]")); // default: "rtl"
setAutoDirection($("input[type=text]"), "ltr"); // default: "ltr"
@unicornist
unicornist / gadget.bat
Last active August 29, 2015 14:15
Windows 7 Gadget
rm Gadget.gadget
"C:\Program Files\WinRAR\WinRAR" a Gadget.zip gadget.html gadget.xml settings.html
ren Gadget.zip Gadget.gadget
call Gadget.gadget
@unicornist
unicornist / phpSerialize.js
Last active May 15, 2016 13:02
simulator of PHP `serialize` function in pure JavaScript
function phpSerialize(obj){ // e.g. a:1{i:2;s:5:"22222";}
var props = [];
for(var prop in obj)
props.push(_phpSerializeVar(prop)+_phpSerializeVar(obj[prop]));
return 'a:'+props.length+':{'+props.join('')+'}';
}
function _phpSerializeVar(prop){ // e.g. i:2; e.g. s:5:"22222";
return (isNaN(prop) && prop.length) ?
's:' + prop.length + ':"' + prop + '";' :
'i:' + prop + ';' ;
@unicornist
unicornist / generatePassword.js
Last active July 2, 2016 12:03 — forked from smhnaji/generatePassword.php
Generate secure and readable password
// just translated from the php version (I have to optimise it)
function generatePassword (length) {
if(!length) length = 8;
var sets = ['abcdefghjkmnpqrstuvwxyz', 'ABCDEFGHJKMNPQRSTUVWXYZ', '23456789', '~!@#$^*()_.-=+'];
var all = '';
var password = '';
sets.forEach(function(set){
set = shuffle(set);
password += set[0];
@unicornist
unicornist / !Workstation.md
Last active December 11, 2020 14:40
My Workstation PC/Mac Setup (Essential Tools for OSX and Windows)

Convert Video

Just Convert Format:
ffmpeg -i input.avi -c:v libx265 output.mp4
ffmpeg -i input.avi -c:v libx264 output.mp4
ffmpeg -i input.mp4 -c:v flv output.flv
Convert to H265 with smaller size and medium quality:
ffmpeg -i input.mp4 -c:v libx265 -crf 28 -vf "scale=iw/2:ih/2" -c:a copy output.mp4
ffmpeg -i input.mp4 -c:v libx265 -crf 28 -vf "scale=720:-1" -c:a copy output.mp4
ffmpeg -i input.mp4 -c:v libx265 -crf 28 -vf "scale=720:trunc(ow/a/2)*2" -c:a copy output.mp4

ffmpeg -i input.mp4 -c:v libx265 -crf 28 -vf "scale=trunc(oh*a/2)*2:720" -c:a copy output.mp4

Windows

  • Rename All (e.g. *.jpg_*.jpg)
    for /f "delims=" %i in ('dir /b /a-d *.jpg') do ren "%~i" "_%~ni%~xi"
    • %~ni is for the name part (*)
    • ~xi is for the extension part (.jpg)

  • Replace All
@unicornist
unicornist / MongoDB Win Service.bat
Last active January 26, 2018 20:35
Install MongoDB as a Windows Service
cd %programfiles%\MongoDB\Server\3.6\bin
mongod --dbpath="%programdata%\Mongo\Data" --logpath="%programdata%\Mongo\log.txt" --install && net start MongoDB