Skip to content

Instantly share code, notes, and snippets.

@capfsb
capfsb / js.js
Created June 6, 2018 15:03
js.js
var recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition || window.mozSpeechRecognition || window.msSpeechRecognition)();
recognition.lang = 'en-US';
recognition.interimResults = false;
recognition.maxAlternatives = 5;
recognition.start();
recognition.onresult = function(event) {
console.log('You said: ', event);
};
<?
$a=[1,1,1,2,3,3,4,5,5,5,5,6,6,6,6];
foreach($a as $v)
{
$count[$v] = $count[$v] ?? 0;
++$count[$v];
}
echo join(' ',array_keys(array_filter($count,function($v){return $v % 2 == 1;})));
@capfsb
capfsb / a.php
Created February 24, 2018 09:47
a.php
<?php
function someFunc($storage){
return (function($a) use (&$storage)
{
return $storage+=$a;
});
}
$a = someFunc(2);
echo $a(2); // 4
echo $a(5); // 9
@capfsb
capfsb / di.js
Created November 28, 2017 05:53
DI v.1
var binds = {
'SquareCalc': ['Multiplicator'],
'A': ['SquareCalc'],
'B': ['Multiplicator']
};
var registry = {};
function make(cls) {
if (registry[cls]) {
@capfsb
capfsb / Globals.js
Last active November 2, 2017 00:53
Globals
function Pure(fn, context) {
this.context = context;
eval('this.fn=' + fn.toString());
}
Pure.prototype.withGlobals = function(useGlobals) {
this.useGlobals = 1;
return this;
}
Pure.prototype.use = function(vars) {
@capfsb
capfsb / fpsMeter.js
Created April 17, 2017 23:41 — forked from medynski/fpsMeter.js
JavaScript FPS meter - Calculating frames per second
fpsMeter() {
let prevTime = Date.now(),
frames = 0;
requestAnimationFrame(function loop() {
const time = Date.now();
frames++;
if (time > prevTime + 1000) {
let fps = Math.round( ( frames * 1000 ) / ( time - prevTime ) );
prevTime = time;
@capfsb
capfsb / gist:2e0ed4caaee41639157aba2f7f75dc3c
Created April 14, 2017 02:50
Востановить локал стэши
gitk --all $( git fsck --no-reflog | awk '/dangling commit/ {print $3}' )
data:text/html,<body%20style=margin:0><canvas%20id=q%20/><script>var%20q=document.getElementById('q'),s=window.screen,w=q.width=s.width,h=q.height=s.height,p=Array(256).join(1).split(''),c=q.getContext('2d'),m=Math;setInterval(function(){c.fillStyle='rgba(0,0,0,0.05)';c.fillRect(0,0,w,h);c.fillStyle='rgba(0,255,0,1)';p=p.map(function(v,i){r=m.random();c.fillText(String.fromCharCode(m.floor(2720+r*33)),i*10,v);v+=10;%20return%20v>768+r*1e4?0:v})},33)</script>
@capfsb
capfsb / 1
Last active February 11, 2018 16:25
CMD Usefulls
Количество нажатий клавиш
xinput --test-xi2 | awk 'BEGIN { count=0 } /RawKeyPress/ { count=count+1; printf "\r%-6d", count }'
Cмердженные ветки гита, например чтобы потому удалить их
git branch --merged | egrep -v "(^\*|master|dev)"
for branch in `git branch --merged`;do echo -e `git show --format="%ci %cr" $branch | head -n 1` \\t$branch; done | sort -r
В awesome активировать мышь в русской раскладке
xkbcomp $DISPLAY - | egrep -v "group . = AltGr;" | xkbcomp - $DISPLAY
Если грузить скрипты асинхронно, то может возникнуть ситуация, когда DomContentLoaded отработает до того как приедит скрипт, что вызовет задержку срабатывания $(function(){}) в jQuery или вообще отсутствие нативного события. Пушка.
http://joxi.ru/Vrwq5bkSO71Kk2
Чекать отработку событий лоад и домЛоад можно по document.readyState
loading - грузит
interactive - домЛоадед отработал
complete - лоад отработал
1