Skip to content

Instantly share code, notes, and snippets.

View keslo's full-sized avatar

Anton Kolesnikov keslo

View GitHub Profile
function applyMiddleware(...middlewares) {
return (createStore) => (reducer, ...args) => {
const store = createStore(reducer, ...args)
let dispatch;
const middlewareAPI = {
getState: store.dispatch,
dispatch: (action, ...args) => dispatch(action, ...args)
}
@keslo
keslo / understanding_redux.js
Last active January 7, 2020 14:56
Understanding Redux
// Рассмотрим функцию createStore
function createStore(reducer, preloadedState, enhancer) { ... }
// При наличии `enchancer` (расширитель) `createStore` вызывается еще раз и возвращает результат выполнения `enchancer`
...
return enhancer(createStore)(reducer, preloadedState);
...
// Рассмотрим расширитель на примере `applyMiddleware`
function applyMiddleware() {
return function (createStore) {
@keslo
keslo / scheme_for_images.php
Last active February 7, 2019 09:15
Snippet microdata scheme.org for images
<?
if($modx->event->name=='OnWebPagePrerender'){
libxml_use_internal_errors(true);
$url = $_SERVER['REQUEST_URI'];
if (strpos($url, '.xml') === false) {
// атрибуты изображения для копирования
$attributes = array('src','class','style', 'alt');
@keslo
keslo / formlister_send_depending_on_the_field.html
Last active November 30, 2018 09:46
Отправка письма в FormLister в зависимости от выбранного поля в форме
[!FormLister?
&formid=`order`
&ccSender=`1`
&ccSenderField=`email-manager`
&formTpl=`@CODE:
<form class="form-horizontal" method="post">
<input type="hidden" name="formid" value="order">
<select class="form-control" name="email-manager">
<option value="manager_1@site.ru">manager_1</option>
<option value="manager_2@site.ru">manager_2</option>
@keslo
keslo / plugin_livereload.php
Last active November 12, 2018 19:31
LiveReload in MODX Evo (Evo CMS)
global $modx;
// проверяем авторизацию менеджера
if ($_SESSION['mgrInternalKey'] == 1) {
// вешаем запись в localStorage при сохранении чанка
$e = $modx->Event;
if ($e->name == "OnChunkFormRender" || $e->name == "OnTempFormRender") {
$script = '<script>
var btn = document.getElementById("Button1");
btn.addEventListener("click", function() {
@keslo
keslo / settimeout_in_recusrion.js
Last active November 5, 2018 14:37
setTimeout in recursion
// setTimeout in recursion
var timerId = setTimeout(function tick() {
/* YOUR CODE HERE */
timerId = setTimeout(tick, 500);
}
}, 500)
@keslo
keslo / change_iframe_height.js
Last active November 5, 2018 14:42
Change the height of iframe after it had loaded
// change the height of iframe after it had loaded
var timerId = setTimeout(function tick() {
var frame = document.getElementsByTagName('iframe')[0];
(frame) ?
// get height of body in frame and change style frame
frame.style.height = this.document.body.offsetHeight+ 'px' :
timerId = setTimeout(tick, 500)
}, 500)
@keslo
keslo / modx_update_insert.php
Last active September 7, 2017 12:28
modx_update_insert.php
<?php
if (!function_exists('saveTV')) {
function saveTV($contentid,$tv,$tvval){
global $modx;
if(is_numeric($tv)){
$tvid = $tv;
}else{
$table = $modx->getFullTableName('site_tmplvars');
$tvid = $modx->db->getValue( $modx->db->select( 'id', $table, 'name="'.$tv.'"' ) );
}
@keslo
keslo / remont_macbook.md
Last active September 10, 2017 17:55
Ремонт MacBook

Привет

Меня зовут Александр. 12 лет я чиню компьютеры Apple

Могу ли я восстановить простреленный из ружья MacBook? ... O_o Таких "клиентов" у меня не было, а согнутый на спор об коленку iPad - да! :-)

Проблема с MacBook?

Приносите его на диагностику. Найдем причину. Это бесплатно.

/*___________________________________________________________________________________________________________________________________________________
_ jquery.mb.components _
_ _
_ file: jquery.mb.YTPlayer.src.js _
_ last modified: 11/05/17 19.54 _
_ _
_ Open Lab s.r.l., Florence - Italy