Skip to content

Instantly share code, notes, and snippets.

View chekit's full-sized avatar
👋

Anton Cherepov chekit

👋
View GitHub Profile
@chekit
chekit / client-optimisation-home-task.md
Last active July 30, 2017 22:42
Домашнее задание по теме "Клиентская оптимизация"

Анализ сайта lifehacker.ru (главная страница)

  1. Шапка сайта (тэг < head />) замесорена inline скриптами и пр. всё это можно разнести по соответсвующим файлам js и css, оставив только необходимое.

CSS

CSS стили разбиты на множество отдельных файлов, некоторые из которых сжаты, а не которые нет (в некоторых файлах всего несколько строк). В итоге на этапе загрузки страница делает множество запросов, чтобы загрузить необходимые стили.

  • Нужно объединить разрозненные файлы стилей, минифицировать, а так же применить плагин, группирующий селекторы, использующие одинаковые свойства (например CSSO или подобный)
  • Можно так же создать не один общий файл, а несколько, объединённых смыслом:
@chekit
chekit / regexp-replacement.js
Created July 2, 2017 21:53
Для замены нескольких совпадений в тексте на нужный шаблон можно использовать метод replace
let text = 'test'.replace(/t/gi, '<span>$&</span>');
// text = "<span>t</span>es<span>t</span>"
@chekit
chekit / sorting-algorithms.js
Last active November 2, 2023 00:58
Some code from the book via JavaScript
/*
* Алгоритм сортировки выбором
* Сортировка массива по возрастанию
*/
// Функция поиска индекса наименьшего элемента массива
let smallestIndex = function (arr) {
let ind = 0;
arr.reduce((init, item, index) => {
if (init >= item) {
@chekit
chekit / unbind-watch.js
Created October 21, 2016 09:12
Unbind watcher in AngularJS
//$watch returns a deregistration function. Calling it would deregister the $watcher.
var listener = $scope.$watch("quartz", function () {});
// ...
listener(); // Would clear the watch
@chekit
chekit / hammerjs.md
Created July 25, 2016 09:58
Settings for Hammer.js

To prevent Hammer.js stop verticall scroll on using swipe use this:

Hammer.defaults.touchAction = 'pan-y';

I've used it on my projects with hammer-angular

@chekit
chekit / navigation-mob.jade
Created July 12, 2016 10:05
Переиспользования результата фильтрации списка элементов
.regions
.regions__item(
ng-repeat="region in mobnav.regions",
ng-hide = "filteredLocations.length === 0"
)
h2.regions__item-header {{region.name}}
ul.cities
li.cities__item(
ng-repeat="location in (filteredLocations = (region.cities | filter: filterRegion))"
)
@chekit
chekit / angular.title.md
Last active July 5, 2016 07:30
set <title> with angularJS

Данное решение необходимо для динамического изменения title страницы по средствам AngularJS

HTML

...
<title ng-bind="'Титул' + title"></title>
<!-- ng-bind вместо {{}} нужен для того, чтобы в title не "мигал" expression-->
...
@chekit
chekit / package.json
Created June 23, 2016 09:13 — forked from addyosmani/package.json
npm run-scripts boilerplate
{
"name": "my-app",
"version": "1.0.0",
"description": "My test app",
"main": "src/js/index.js",
"scripts": {
"jshint:dist": "jshint src/js/*.js'",
"jshint": "npm run jshint:dist",
"jscs": "jscs src/*.js",
"browserify": "browserify -s Validating -o ./dist/js/build.js ./lib/index.js",
@chekit
chekit / promise-sequence.js
Last active May 23, 2016 17:47
Gets an array values consistently, read them and resolve with results (this is a basic example that was done to understand how I can read array, make an ajax call with value and resolve for getting next one). The values are printing in arow.
'use strict';
//The sandbox http://jsbin.com/leraku/edit?js,console
let mas = [1, 2, 3];
let prom = function (value) {
return new Promise(resolve => {
setTimeout(() => {
console.log(value);
@chekit
chekit / my-pubsub.js
Last active June 19, 2020 13:11
My pubsub module for future use
//Example: http://jsbin.com/ciguhe/edit?js,console
'use strict';
module.exports = (function () {
let events = {};
function publish (evt, val) {
events[evt].forEach((fn) => fn(val));
}