Таймер/секундомер linux console
Таймер/секундомер для linux/mac/ubuntu
1 |
zero=`date +%s`; echo -n 0; while sleep 1; do echo -ne \\r; expr `date +%s` - $zero | tr -d \\n; done |
Таймер/секундомер для linux/mac/ubuntu
1 |
zero=`date +%s`; echo -n 0; while sleep 1; do echo -ne \\r; expr `date +%s` - $zero | tr -d \\n; done |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
var CookieManager = { set: function (name, value, days) { var expires = ""; if (days) { var d = new Date(); d.setTime(d.getTime() + (days * 24 * 60 * 60 * 1000)); expires = "; expires=" + d.toGMTString(); } document.cookie = name + "=" + value + expires + "; path=/"; return this.get(name); }, get: function (name) { name += "="; var b = document.cookie.split(';'), c; for (var i = 0; i < b.length; i++) { c = b[i].replace(/(^\s+)|(\s+$)/g, ""); while (c.charAt(0) == ' ') c = c.substring(1, c.length); if (c.indexOf(name) == 0) return c.substring(name.length, c.length); } return null; }, remove: function (name) { this.set(name, "", -1); } }; |
Пример использования
1 2 3 |
CookieManager.set('name', 'value'); // параметр days можно не указывать alert(CookieManager.get('name')); CookieManager.remove('name'); |
1 2 3 4 5 6 |
/** * Формат цены типа 1 000 */ function formatPrice(price){ return price.toString().replace(/(\d)(?=(\d{3})+(\D|$))/g, '$1 '); } |
1 |
iptables -I INPUT -p tcp --dport 1545 -m state --state NEW -j ACCEPT |
Linux добавить/открыть порт Делаем автозагрузку порта
1 2 3 4 |
# сохраняем текущие iptables iptables-save > /etc/sysconfig/iptables # применяем chkconfig --level 35 iptables on |
Вставить элемент после другого элемента с помощью функции js insertAfter Вставить div после div
1 2 3 |
function insertAfter(elementInstertAfter, parentElement) { return parentElement.parentNode.insertBefore(elementInstertAfter, parentElement.nextSibling); } |
Пример кода
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<!DOCTYPE html> <html> <head> <title>js event</title> <meta charset="utf-8"> </head> <body> <script> document.addEventListener("DOMContentLoaded", function() { function insertAfter(elementInstertAfter, parentElement) { return parentElement.parentNode.insertBefore(elementInstertAfter, parentElement.nextSibling); } element = document.getElementById('touch'); document.getElementById('test').onclick = function() { if ( !element.innerHTML ) { element.innerHTML = 0; } element.innerHTML = parseInt(element.innerHTML) + 1; if ( element.innerHTML >= 20 ) { div = document.createElement('div'); div.className = "alert alert-success"; div.innerHTML = "<strong>Ура!</strong> Вы прочитали это важное сообщение."; insertAfter(div, element); } } }); </script> <button id="test">touch Me</button> <div id="touch"></div> </body> </html> |
htaccess кеширование файлов сервера (Cache-Control)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# Cache-Control <ifModule mod_headers.c> # 30 дней <filesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$"> Header set Cache-Control "max-age=2592000, public" </filesMatch> # 30 дней <filesMatch "\.(css|js)$"> Header set Cache-Control "max-age=2592000, public" </filesMatch> # 2 дня <filesMatch "\.(xml|txt)$"> Header set Cache-Control "max-age=344800, public, must-revalidate" </filesMatch> # 1 день <filesMatch "\.(html|htm|php)$"> Header set Cache-Control "max-age=2592000, private, must-revalidate" </filesMatch> </ifModule> |
htaccess убрать кеширование
1 2 3 4 5 6 7 8 9 |
# Заголовок Cache-Control <IfModule mod_headers.c> Header append Cache-Control "no-store, no-cache, must-revalidate" </IfModule> # Заголовок Expires <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "now" </IfModule> |
htaccess Gzip сжатие
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<IfModule mod_deflate.c> # Compress HTML, CSS, JavaScript, Text, XML and fonts AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/vnd.ms-fontobject AddOutputFilterByType DEFLATE application/x-font AddOutputFilterByType DEFLATE application/x-font-opentype AddOutputFilterByType DEFLATE application/x-font-otf AddOutputFilterByType DEFLATE application/x-font-truetype AddOutputFilterByType DEFLATE application/x-font-ttf AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE font/opentype AddOutputFilterByType DEFLATE font/otf AddOutputFilterByType DEFLATE font/ttf AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE image/x-icon AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml # Remove browser bugs (only needed for really old browsers) BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html Header append Vary User-Agent </IfModule> |
кеширование svg
1 2 3 4 5 6 7 8 9 10 |
<IfModule mod_expires.c> ExpiresActive on ExpiresByType image/jpeg "access plus 3 day" ExpiresByType image/gif "access plus 3 day" ExpiresByType image/png "access plus 3 day" ExpiresByType text/css "access plus 3 day" ExpiresByType image/svg+xml "access plus 1 month" ExpiresByType image/svg "access plus 1 month" ExpiresByType application/javascript "access plus 3 day" </IfModule> |
в .htaccess пропишем в корне сайта
1 2 3 4 5 |
RewriteEngine on RewriteCond %{HTTP_HOST} ^example.com$ [NC,OR] RewriteCond %{HTTP_HOST} ^www.example.com$ RewriteCond %{REQUEST_URI} !project/public/ RewriteRule (.*) /project/public/$1 [L] |
возможно project нужно будет убрать Laravel redirect to public, Редирект laravel public htaccess
Применяем шаблон для обращения к order_items
1 2 3 4 |
<Товары> <xsl:apply-templates select="properties/group/property[@name='order_items']/value/item" mode="order-item"/> </Товары> |
Для обработки по шаблону используем следующий код, обращаемся к элементам
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
<xsl:template match="object" mode="order-item"> <xsl:param name="good-id" select="properties/group/property[@name='item_link']/value/page/@id" /> <xsl:param name="good" select="document(concat('upage://', $good-id))/udata/page" /> <xsl:param name="item_price" select="properties/group/property[@name='item_price']/value" /> <xsl:param name="item_amount" select="properties/group/property[@name='item_amount']/value" /> <xsl:param name="item_total_price" select="properties/group/property[@name='item_total_price']/value" /> <Товар> <xsl:choose> <xsl:when test="not($good)"> <Ид><xsl:value-of select="@id" /></Ид> </xsl:when> <xsl:when test="$good//property[@name = '1c_product_id']/value"> <Ид><xsl:value-of select="$good//property[@name = '1c_product_id']/value" /></Ид> </xsl:when> <xsl:otherwise> <Ид><xsl:value-of select="$good-id" /></Ид> </xsl:otherwise> </xsl:choose> <xsl:if test="$good//property[@name = '1c_catalog_id']/value"> <ИдКаталога><xsl:value-of select="$good//property[@name = '1c_catalog_id']/value" /></ИдКаталога> </xsl:if> <Наименование><xsl:value-of select="$good/name | @name" /></Наименование> <БазоваяЕдиница Код="796" НаименованиеПолное="Штука" МеждународноеСокращение="PCE">шт</БазоваяЕдиница> <ЦенаЗаЕдиницу><xsl:value-of select="$item_price" /></ЦенаЗаЕдиницу> <Сумма><xsl:value-of select="$item_total_price" /></Сумма> <Количество><xsl:value-of select="$item_amount" /></Количество> <Единица>шт</Единица> <Коэффициент>1</Коэффициент> <Артикул1С><xsl:value-of select="$good//property[@name = 'vendor_code']/value" /></Артикул1С> <Штрихкод><xsl:value-of select="$good//property[@name = 'barcode']/value" /></Штрихкод> <Вес><xsl:value-of select="$good//property[@name = 'weight']/value" /></Вес> </Товар> </xsl:template> |
Ссылка на исходник
1 |
nmap -sV -p 1-65535 site.ru |
Сканирование портов с помощью Nmap/Zenmap Сканирование на iphone девайс
Загрузка файла на сервер, без перезагрузки страницы на чистом JS Подгрузка элемента страницы без перезагрузки на чистом JS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
function reloadRollAgency() // обновляем часть страницыстраницу { createRollAgencyList('actionRollAgencyList',document.getElementById('formFilterRollAgency'), 1); } function handleFileRollAgency() // обрабатываем все не обработанные заявки { var req = new JsHttpRequest(); req.onreadystatechange = function() { if (req.readyState == 4) { reloadRollAgency(); } } req.open(null, '/scripts/handler.php', true); req.send(null); } function upload_file_roll_button() // загружаем файл { form = document.forms.upload_file_rollagency; var formData = new FormData(form); var req = new XMLHttpRequest(); req.open("POST", 'request.php'); req.onreadystatechange = function() { if (req.readyState == 4) { reloadRollAgency(); } } /* req.onload = req.onerror = function() { if (this.status == 200) { // reloadRollAgency(); } else { alert("Ошибка" + this.status); } };*/ // обработчик для закачки req.upload.onprogress = function(event) { document.getElementById('rollagencylist').innerHTML='<div style="text-align:center;" ><br /><img src="/img/loader.gif" width="64" height="64" alt="Ожидайте. Загрузка информации." title="Ожидайте. Загрузка информации." /><br /><br /></div>'; document.getElementById('rollagencyuploadfile').innerHTML=null; document.getElementById('rollagencyuploadfile').style.display="none"; document.getElementById('mainoverlay').style.display="none"; } req.send(formData); } function selectRollAgencyOrderCount() // удаляем выделенные заявки { var arr = []; Array.from(document.getElementsByClassName('coloractive')).forEach(function(element){ arr.push(element.getAttribute('data-id')); }); if (arr.length > 0){ var req = new JsHttpRequest(); req.onreadystatechange = function() { if (req.readyState == 4) { reloadRollAgency(); } } req.open("POST", 'handler_delete.php', true); req.send( { elementDelete : arr } ); } } function selectRollAgencyOrder(id) // выбираем не обработанные заявки для удаления { var row='row_rollagency_'+id; if (document.getElementById(row).classList.contains('coloryellow')){ // проверяем наличие класса document.getElementById(row).classList.toggle('coloractive'); // добавляем/убираем класс } } |
js, ajax, request, httpRequest