Skip to content

Instantly share code, notes, and snippets.

View exileed's full-sized avatar
🎵
NP: NO FEAR (Falling In Reverse) (1:28/3:48)

Dmitriy Kuts exileed

🎵
NP: NO FEAR (Falling In Reverse) (1:28/3:48)
View GitHub Profile
@exileed
exileed / gist:5eadc2515ab33384ae38
Last active January 26, 2018 04:46
Питон, девушки, и объектно-ориентированное программирование
Буратино (о полиморфизме):
— Тебя как зовут?
— Мальвина!
— Мы не в сауне! В жизни тебя как зовут?!
— Марина...

Думаю, все мы так или иначе слышали об объектно-ориентированном программировании. Эта заметка для тех, кто за 15 минут хочет понять, что это такое. На простом примере я продемонстрирую понятия класс, объект, конструктор, деструктор, инкапсуляция, и даже скажу пару слов про такие сложные вещи, как наследование и полиморфизм.

Для экспериментов мы будем использовать интерпретируемый язык программирования Python, который можно скачать отсюда (я использовал версию 2.5.4).

Ruby
принципиальное различие скриптовых и “обычных” языков
3 принципа ООП
реализация множественного наследования в ruby
duck typing
многопоточность в ruby
Rails
что такое MVC и зачем это нужно
локига в контроллере, должна ли быть и почему
синхронные и асинхронные операции — предложить варианты решения
@exileed
exileed / gist:5327a9235865be349be8
Created November 29, 2014 22:43
Composer Openshift
#!/bin/bash
# This is a simple post deploy hook executed after your application
# is deployed and started. This script gets executed directly, so
# it could be python, php, ruby, etc.
export COMPOSER_HOME="$OPENSHIFT_DATA_DIR/.composer"
if [ ! -f "$OPENSHIFT_DATA_DIR/composer.phar" ]; then
echo !!! composer install ...
curl -s https://getcomposer.org/installer | php -- --install-dir=$OPENSHIFT_DATA_DIR
php $OPENSHIFT_DATA_DIR/composer.phar global require "fxp/composer-asset-plugin:1.0.0-beta3"
else
@exileed
exileed / index.html
Last active August 29, 2015 14:17
Day/Night Switcher. Demo http://codepen.io/jsndks/pen/qEXzOQ
<div class="wrapper">
<div class="toggle">
<input class="toggle-input" type="checkbox" />
<div class="toggle-bg"></div>
<div class="toggle-switch">
<div class="toggle-switch-figure"></div>
<div class="toggle-switch-figureAlt"></div>
</div>
</div>
</div>

Keybase proof

I hereby claim:

  • I am exileed on github.
  • I am exileed (https://keybase.io/exileed) on keybase.
  • I have a public key whose fingerprint is D510 7F48 75BC F678 CA29 1C4A 253F 2C6D DE5A FCD5

To claim this, I am signing this object:

upstream staticcontent {
server myserv-1.local;
server myserv-2.local;
}
server {
location ~* \.(ico|js|css|png|gif|jpe?g|swf|txt|html?|htc)$ {
expires 7d;
proxy_next_upstream error timeout invalid_header http_500 updating;

Напутствие

Тестирование Ангуляр приложений может строится на разных стеках, будем считать, что вы работаете с "самым правильным". Итак:

  • для юнит тестирование используется karma - бывший Testacular (который был переназван из-за хая, поднятого феменистками). В core-team есть разработчики ангуляра, поэтому часто называют карму продуктом команды ангуляра. Ранит ваши тесты или в бразуере, или в консоли (behind the scenes используя phantomjs - фантом).
  • для e2e (end-to-end) тестирование раньше предлагалось использовать karma-scenario, сейчас ангуляровцы предлагают использовать protractor - враппер (и немного утилсов для настройки) над селениумом.

Материалы

Много буков

[http://www.yearofmoo.com/2013/01/full-spectrum-testing-with-angularjs-and-karma.html](http://www.yearofmoo.com/2013/01/full-spectrum-testing-with

$bytesCopied = stream_copy_to_stream($source, $target);
fclose($source);
fclose($target);
unset($source, $target);
if (!is_file($targetFile)) {
throw new Exception('');
}
if($bytesCopied !== filesize($originFile)){
@exileed
exileed / Factory.php
Created December 1, 2016 04:16 — forked from tkouleris/Factory.php
Factory Design Pattern example
<?php
/*
*
* Factory Design Pattern
* -----------------------
* Wiki: In class-based programming, the factory method pattern is a creational pattern that uses factory methods to deal with the problem of creating
* objects without having to specify the exact class of the object that will be created. This is done by creating objects by calling a factory
* method—either specified in an interface and implemented by child classes, or implemented in a base class and optionally overridden by derived
* classes—rather than by calling a constructor.