Skip to content

Instantly share code, notes, and snippets.

🖥
Hello world

Nikita Murzin nmurzin

🖥
Hello world
Block or report user

Report or block nmurzin

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@nmurzin
nmurzin / pre-commit
Created Apr 10, 2018 — forked from fesor/pre-commit
php-cs-fixer pre-commit hook
View pre-commit
#!/usr/bin/env bash
echo "php-cs-fixer pre commit hook start"
PHP_CS_FIXER="bin/php-cs-fixer"
PHP_CS_CONFIG=".php_cs"
CHANGED_FILES=$(git diff --cached --name-only --diff-filter=ACM -- '*.php')
if [ -n "$CHANGED_FILES" ]; then
$PHP_CS_FIXER fix --config "$PHP_CS_CONFIG" $CHANGED_FILES;
git add $CHANGED_FILES;
@nmurzin
nmurzin / script.sh
Created Sep 1, 2017
dump and import big databases
View script.sh
mysqldump -uroot DB | mysql --host=host -uroot -ppass -C DB
@nmurzin
nmurzin / index.html
Created Aug 26, 2016
How to transfer jquery to bottom of the page
View index.html
<head>
<script>
// Fallback code for the jQuery inline scripts on pages:
if (window.jQuery === undefined) {
window.jQueryReadyHandlers = [];
window.$ = window.jQuery = function (callback) {
window.jQueryReadyHandlers.push(callback);
return window.$;
};
@nmurzin
nmurzin / books.md
Last active Jul 6, 2016
architecture gist
View books.md
  • Кент Бэк - Экстремальное программирование: разработка через тестирование
  • Боб Мартин - Чистый код (есть не только книги, есть еще лекции, доклады и вообще куча всего). Однако стоит предупредить что дядя боб чувак весьма категоричный.
  • Крэйг Ларман - тут не уверен имеет ли смысл читать всю книгу... конкретно у него вас должен заинтересовать GRASP как ценное дополнение к SOLID.
  • Мартин Фаулер - рефакторинг (у него много на эту тему есть + его сайт полезно просматривать иногда)

p.s. хорошая архитектура - это архитектура которую легко поменять. А менять проще с тестами. Без этого вы убьете с десяток проектов прежде чем научитесь.

  • Функциональное программирование - концепция не привязанная к языку
  • ООП - концепция не привязанная к языку (даже если у вас чисто функциональный язык программирования вы можете "эмулировать" объекты для сокрытия состояния).
  • Тестирование кода - не привязано к языку. Так же как и подходы вроде TDD и BDD (тут хорошо Кент Бэка подходит)
View php.md
  • типы данных и представление информации в комьютере
  • структурное программирование, основные управляющие структуры: последовательности, условия, циклы
  • алгоритмизация, декомпозиция задачи, решение задач
  • separation of concerns, DRY, KISS, YAGNI.
  • функции, абстракции через функции, устранение дублирования через функции
  • понятие состояния, побочных эффектов (что бы понять чем плохо глобальное состояние, чем неудобна процедурщина)
  • тесты, юнит тестирование, интеграционное тестирование, разработка через тестирование
  • HTTP, базовые понятия о том как устроены сети, хотя бы примерно знать что такое TCP например и что такое DNS.
  • ООП: концепция объектов и сообщений, ничего лишнего. Инкапсуляция, полиморфизм, наследование. SOLID. GRASP. Все эти штуки тесно переплетаются между собой и без понимания основных (инкапсуляция, полиморфизм, наследование) говорить о каком либо понимании SOLID или GRASP и уж тем более паттернов проектирования, которые являются результатом применения этих принципов (знаете вы о паттерн
@nmurzin
nmurzin / mv* frameworks.md
Last active Apr 5, 2016
Some explanation of mvc framework types
View mv* frameworks.md

есть:

  • MVC классика 79-ого года, контроллер ничего не знает о view, view ничего не знает о контроллере, view вешает листенеры на модель и обновляет сама себя по изменению оной
  • MVP - что бы view тоже ничего не знало о модели, релиши сделать промежуточную хрень, которая бы хэндлила их взаимодействие - Presenter
  • HMVC - для более удобной декомпозиции UI решили дробить все на отдельные виджеты, то что нынче модно "компонентами" называть
  • MVVM - чувакам надоело листенеры фигачить руками, и они придумали концепцию биндингов, которые бы сами отслеживали измеение состояния
  • MVA или Mediating Controller MVC - по сути развитие идеи MVP вот только решили что вместо Presenter теперь у нас будет адаптер. А так как это теперь адаптер, это может быть не один объект, а целая цепочка (мидлвэры в ларавели например). Вот эта штука на бэкэндах в основном и используется.
  • FLUX - модная шляпа от фэйсбука прославляющая старый добрый MVC 79-го года. Причем на вскидку разницы практически нет, единственное модель тепер
@nmurzin
nmurzin / app.component.ts
Last active Mar 29, 2016
pokemon rest-api
View app.component.ts
import {Component} from 'angular2/core';
import {Http, Response} from 'angular2/http';
import {Observable} from 'rxjs/Rx';
import {PokemonService} from './pokemon.service';
@Component({
selector: 'my-app',
template: `
<h1>Test</h1>
View script.js
var basketModule = (function() {
var basket = []; // приватная переменная
return { // методы доступные извне
addItem: function(values) {
basket.push(values);
},
getItemCount: function() {
return basket.length;
},
getTotal: function() {
View Test.php
public function getDocuments()
{
$client = $this->getContainer()->get('api_client');
$provider = $this->getContainer()->get('accounts');
$documents = new AppendIterator();
foreach ($provider->getAccounts(TYPE_DEPOSIT) as $acc) {
$it = new DocumentIterator($client, $acc);
View product-controls.js
jQuery(document).ready(function () {
jQuery('.colors-list li').on('click', function(event){
if(!jQuery(this).hasClass('active')){
//change active square
jQuery('.colors-list .active').removeClass('active');
jQuery(this).addClass('active');
//change active color label
var colorName = jQuery(this).attr('colorname');
jQuery('.checked-color').html(colorName);
You can’t perform that action at this time.