Inspired by dannyfritz/commit-message-emoji
See also gitmoji.
Commit type | Emoji |
---|---|
Initial commit | 🎉 :tada: |
Version tag | 🔖 :bookmark: |
New feature | ✨ :sparkles: |
Bugfix | 🐛 :bug: |
# Backup | |
docker exec CONTAINER /usr/bin/mysqldump -u root --password=root DATABASE > backup.sql | |
# Restore | |
cat backup.sql | docker exec -i CONTAINER /usr/bin/mysql -u root --password=root DATABASE | |
Inspired by dannyfritz/commit-message-emoji
See also gitmoji.
Commit type | Emoji |
---|---|
Initial commit | 🎉 :tada: |
Version tag | 🔖 :bookmark: |
New feature | ✨ :sparkles: |
Bugfix | 🐛 :bug: |
<?php | |
/** | |
* Custom Loop Add to Cart. | |
* | |
* Template with quantity and ajax. | |
*/ | |
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly. | |
global $product; |
Настройка GitHub Gist в sublime text 3 | |
Первым делом нам нужно сгенерировать token. | |
Переходим на свой гитхаб, идем в settings и там в пункте Applications жмем Generate new token | |
Далее называем его как угодно и выбираем только один пункт gist и жмем генерировать. | |
Теперь устанавливаем полученный token в preferences => Package Settings => Gits => Settings-Default | |
Вторым пунктом, настраиваем комбинацию клавиш | |
Переходим preferences => Package Settings => Gits => Key Bindings-user | |
И изменяем как нам удобно, вот мой пример |
<IfModule mod_expires.c> | |
ExpiresActive on | |
ExpiresDefault "access plus 1 month" | |
# CSS | |
ExpiresByType text/css "access plus 1 year" | |
# Data interchange | |
ExpiresByType application/atom+xml "access plus 1 hour" |
// remove emoji and all symbols from utf16 | |
String.prototype.strip_utf8only = function () { | |
function stringToCodePointArray(str) { | |
var codePoints = [], i = 0, charCode; | |
while (i < str.length) { | |
charCode = str.charCodeAt(i); | |
if ((charCode & 0xF800) != 0xD800) { // https://mathiasbynens.be/notes/javascript-encoding | |
codePoints.push(String.fromCharCode(charCode)); | |
} | |
++i; |
Часто тестируемый метод может вызывать методы других классов, которые в данном случае тестировать не нужно. Unit-тест потому и называется модульным, что тестирует отдельные модули, а не их взаимодействие. Причем, чем меньше тестируемый модуль – тем лучше с точки зрения будущей поддержки тестов. Для тестирования взаимодействия используются интеграционные тесты, где вы уже тестируете скорее полные use cases, а не отдельную функциональность.
Однако наши классы очень часто используют другие классы в своей работе. Например, слой бизнес логики (Business Logic layer) часто работает с другими объектами бизнес логики или обращается к слою доступа к данным (Data Access layer). В трехслойной архитектуре веб-приложений это вообще постоянный процесс: Presentation layer обращается к Business Logic layer, тот, в свою очередь, к Data Access layer, а Data Access layer – к базе данных. Как же тестировать подобный
<? | |
$res = \Bitrix\Sale\Location\LocationTable::getList(array( | |
'filter' => array('=NAME.LANGUAGE_ID' => LANGUAGE_ID, 'TYPE_CODE' => array("VILLAGE", "CITY"), 'NAME_RU' => $_POST["city"]."%"), | |
'select' => array('*', 'NAME_RU' => 'NAME.NAME', 'TYPE_CODE' => 'TYPE.CODE'), | |
'limit' => 10 | |
)); | |
while($item = $res->fetch()) | |
{ | |
$loc[$item["ID"]] = $item; | |
$ids[] = $item["PARENT_ID"]; |
// В файле script.js шаблона фильтра редактируем: | |
SmartFilter.prototype.recountMinPrice = function() | |
{ | |
/* Блок кода взят с https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round */ | |
var myNamespace = {}; | |
myNamespace.round = function(number, precision) { | |
var factor = Math.pow(10, precision); | |
var tempNumber = number * factor; |