Git Hub
коротко
Ctrl + ↑ Позднее

Магазин: Права доступа

1 августа 2015, 15:11
D - запрещён (при обращении к файлу доступ будет всегда запрещён);
R - чтение (при обращении к файлу доступ будет разрешен);
U - документооборот (файл может быть отредактирован в режиме документооборота);
W - запись (файл может быть отредактирован непосредственно);
X - полный доступ (подразумевает право на "запись" и модификацию прав доступа).

Bitrix: Акции

27 июля 2015, 11:09

Оглавление

Общая архитектура Акций в e-commerce

Контентщики готовят анонс акции с описанием акции в инфоблоках

  1. Название акции
  2. Условия её проведения
  3. Дата и время начала акции
  4. Дата и время окончания акции
    и у нас появляется ID акции ~/promo/12345/

Реализация Акций на Битрикс

в  e-commerce используется термин promotions

нам понадобиться таблица Акции (b_promotions)

create table IF NOT EXISTS b_promotions(
ID INT(18) AUTO_INCREMENT,
NAME VARCHAR(255) COMMENT "Название акции",
ACTIVE CHAR(1) COMMENT " Активность акции"  NOT NULL DEFAULT 'N' ,
DESCRIPTION TEXT  COMMENT "Описание акции" NULL,
DATE_START DATETIME COMMENT "Дата начала акции" NULL,
DATE_END DATETIME COMMENT "Дата окончания акции" NULL,
DURATION INT COMMENT "unixtime  длительность акции" NULL ,
PRIMARY KEY(ID) 
) ENGINE=InnoDB ;
===
а) Дано: интернет магазин на "1с-битрикс: Бизнес", каталог, корзина и оформление заказа реализованы нативными компонентами (catalog, sale.basket.basker, sale.order.full). 
Задача:  реализовать акцию "Каждый N товар за X рублей". У акции должны быть настройки, где выставляется период активности акции, параметры N и X
===

Hostcms

26 июля 2015, 9:43

Получить модель

$currentModel = Core_Page::instance()->object->getEntity();

Получить Контроллер

$controller = Core_Page::instance()->object

HostCMS: Инфоблок — деталка

21 июля 2015, 17:43

Инфоблоки — это понятие из Битрикс.
Инфосистемы — это понятие из HostCMS, но по сути они очень схожи, поэтому и тут я буду называть инфосистемы инфоблоками.

$articleId = 176;
$IBLOCK_ID = 14;

$iblock = Core_Entity::factory('Informationsystem_Item', $IBLOCK_ID);
	$article = $iblock->find($articleId);
	dr($article->id);
	dr($article->text);

   $arProps =$article->getPropertyValues( false,array(65,64)); // получаем свойства элемента инфоблока
	foreach ($arProps as $prop){
		dr($prop->value);
	}

Bitrix: скрипт для выполнения в консоли или на кроне

13 июля 2015, 15:33

Вот это должно быть прописано в скрипте железно

set_time_limit(0);
define("NOT_CHECK_PERMISSIONS", true);

if (!isset($_SERVER['DOCUMENT_ROOT']) || empty($_SERVER['DOCUMENT_ROOT'])){
    $_SERVER["DOCUMENT_ROOT"] = '/var/www/'; // надо внимательно проверять что у вас в DOCUMENT_ROOT если вы запускаете скрипт из консоли
}

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

//..

XML: Читаем и пишем с namespaces

10 июля 2015, 10:32

Пишем XML

$xmlService = new Sabre\Xml\Service();
$xmlService->namespaceMap = ['http://example.org' => 'b'];

$xmlService->write('{http://example.org}book', [
    '{http://example.org}title' => 'Cryptonomicon',
    '{http://example.org}author' => 'Neil Stephenson',
]);

Результат

<?xml version="1.0"?>
<b:book xmlns:b="http://example.org">
 <b:title>Cryptonomicon</b:title>
 <b:author>Neil Stephenson</b:author>
</b:book>

Читаем XML

<?php

$input = <<<XML
<article xmlns="http://example.org/">
    <title>Hello world</title>
    <content>Fuzzy Pickles</content>
</article>
XML;

$service = new Sabre\Xml\Service();
$service->elementMap = [
    '{http://example.org/}article' => 'Sabre\Xml\Element\KeyValue',
];

print_r($service->parse($input));

Результат

Array
(
    [{http://example.org/}title] => Hello world
    [{http://example.org/}content] => Fuzzy Pickles
)

Ссылки по теме

Интересная библиотека

Новые слова

3 июля 2015, 12:41

услышано в сферах

В этот раздел я буду добавлять новые слова из сферы Web-Technology, поэтому этот пост будет многократно переписываться.

  • Vorlon.js — инструмент для отладки web приложений (Фронтовой части)
  • GitLab  — Web морда над гитом, аля bitbucket с поддержкой CI и многих других фич.

Cookie: Удалить

29 июня 2015, 16:01

Удаляем куку

/**
    * удаляем куку с именем $cookieName
    * @example 
    *   $this->clearCookie("DISCOUNT_NO");
    *         
    */
    protected function clearCookie($cookieName)
    {
        $negativeTime = 3600*24*10;
        setcookie($cookieName, '', time() - $negativeTime,"/");
    }

RegExp: Памятка для Web тематики

28 июня 2015, 16:38

Выдираем имя картинки из тега img

Html

<h3>вобла</h3>
бла бла бла
<img src="/dir/kiss.svg" class="chat_message__smile">
а потом ещё раз бла

Код

$tagImgRegExp = '/<img.*?src=["\']*\/dir\/([\S]+).svg["\'].*?>/usi';
 $out = preg_replace($tagImgRegExp,'::$1::',$inHtml);
 
 var_dump($out);

Out

<h3>вобла</h3>
бла бла бла
::kiss::
а потом ещё раз бла

Выдираем имя ссылки из тега a

Html

<a href="https://yandex.ru/maps/?text=00.000,00.000">Название локации 1</a>
<a href="https://yandex.ru/maps/?text=00.000,00.000">Название 
локации 2</a>

Код

$tagMapRegExp = '/<a.*?href=["\']https://yandex.ru/maps/?text=([\S]+)["\'].*?>([\S\, \s]+)<\/a>/musi';
        $replace = '[map $1]$2[/map]';
        $out = preg_replace($tagMapRegExp, $replace,$inHtml);

var_dump($out);

Ссылка по теме:
Регулярные выражения

Emerge

14 июня 2015, 11:45

Emerge — система управления загрузкой веб-страниц.

При открытии обычной страницы картинки появляются в случайном порядке, неряшливо мелькая. Продвинутые разработчики управляют загрузкой с помощью скриптов. Emerge упрощает задачу, снимая необходимость в программировании. В системе используется декларативный подход, то есть для каждого элемента прописывается желаемое поведение, а система сама обеспечивает его реализацию.

Emerge использует Jquery.

Статья об Emerge

массив уникальных знаений

25 апреля 2015, 1:19

создать массив заполненный случайными цифрами 0..10

var array:[Int] = []
for i in 1...20 {
    let randomValue:UInt32 = (arc4random_uniform(10))
    array.append(Int(randomValue))
}

оставить уникальные элементы

вариант 1

let unique = Array(Set(array))

вариант 2

var unique = [Int]()
for e in array {
    if !unique.contains(e){ unique.append(e) }
}

Swift: Обработка ошибок

18 апреля 2015, 12:41

Уровень 1

enum ErrorsE: Error {
    case System
    case User
    case Background
}

class Handle {
    func save() throws {
        for i in 1...3 {
            if i == 2 {
                throw ErrorsE.User
            }
        }
        
    }
}

class AppHandle {
    
    func run(){
        let e = Handle()
        do {
          try  e.save()
        }
        catch let error {
            print("error: \(error)")
        }
    }
}
AppHandle().run()

AngularJS: Service

4 марта 2015, 16:05

Я сервисы использую ка модели в которые помещаю методы получения данных от сервера

/**
 * Created by adeveloper on 04.03.17.
 */
app.service('NetApi',function($http){

    this.baseUrl = null;

    this.setBaseUrl = function ($base) {
        this.baseUrl = $base;
    };

    this.getByUrl = function ($url, $handler) {

        var $params = [];
        
        var req = {
            method: 'POST',
            url: this.baseUrl+$url,
            headers: {
                'Content-Type': undefined
            },
            data: $params
        };

        return $http(req).success($handler);
    }
});

Использование

NetApi.setBaseUrl("/api/v1/calc/");
            NetApi.getByUrl("?",function (answer, status) {
               console.info(answer);
            });

RFID и NFC в чём разница ?

8 декабря 2014, 13:48

Расшифровка
RFID — Radio-frequency identification
NFC — Near Field Communication

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

RFID NFC

Каковы различия между NFC и RFID, или они совершенно разные?

Короткий ответ:
RFID — это процесс, посредством которого элементы уникально идентифицируются с использованием радиоволн, а NFC является специализированным подмножеством семейства RFID. В частности, NFC является ветвью высокочастотной (High Frequency) RFID, и оба работают на частоте 13,56 МГц.
NFC разработан как безопасная форма обмена данными, а устройство NFC может быть как считывателем NFC, так и тегом NFC.
Эта уникальная функция позволяет устройствам NFC общаться друг с другом.

Подробный ответ:
По определению, RFID — это метод однозначной идентификации элементов с использованием радиоволн. Как минимум, система RFID содержит бирку, считыватель и антенну. Считыватель посылает сигнал тега через антенну, и тег отвечает своей уникальной информацией. Теги RFID являются активными или пассивными.

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

Пассивные метки RFID не имеют собственного источника питания. Вместо этого они питаются от электромагнитной энергии, передаваемой от считывателя RFID. Поскольку радиоволны должны быть достаточно сильными для питания тегов, пассивные метки RFID имеют диапазон считывания от прямого касания и до 25 метров.

Пассивные метки RFID работают в основном в трех частотных диапазонах:

  1. Низкая частота (LF) 125 -134 кГц
  2. Высокая частота (HF) 13,56 МГц
  3. Сверхвысокая частота (УВЧ) от 856 МГц до 960 МГц

Устройства NFC работают на одной частоте (13,56 МГц) в качестве считывателей и меток HF RFID. Стандарты и протоколы формата NFC основаны на стандартах RFID, изложенных в ISO / IEC 14443, FeliCa и на основе частей ISO / IEC 18092. Эти стандарты касаются использования RFID в бесконтактных картах.

В качестве точно отточенной версии высокочастотного RFID устройства ближнего поля используют преимущества коротких пределов диапазона считывания своей радиочастоты. Поскольку устройства NFC должны находиться в непосредственной близости друг от друга, как правило, не более нескольких сантиметров, он стал популярным выбором для безопасной связи между потребительскими устройствами, такими как смартфоны.

Одноранговая связь — это функция, которая отличает NFC от типичных RFID-устройств. Устройство NFC может действовать как читатель, так и как тег. Эта уникальная способность сделала NFC популярным выбором для бесконтактных платежей, ключевым драйвером в решении влиятельных игроков в мобильной индустрии включить NFC в новые смартфоны. Кроме того, смартфоны NFC передают информацию с одного смартфона на другой, связывая два устройства вместе, что превращает совместное использование данных, таких как контактная информация или фотографии, в простую задачу. В последнее время вы, возможно, видели рекламные кампании, которые использовали смарт-плакаты для передачи информации вместе с потребителями.

Источник

NFC   RFID

MAMP OSX

19 октября 2014, 15:13

CLI
чтобы в MAMP'e заработали консольные скрипты нужно пролинковать сокет MySQL

sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

Описание таблиц битрикса

19 октября 2014, 9:59
  1. b_catalog_group — типы цен
  2. b_catalog_price — цены товаров
  3. b_catalog_product — товар как сущность

ssh-add

11 октября 2014, 10:40

ssh-add

пробросить ключ через агента

ssh-add ~/.ssh/id_rsa

получить список подключенных ключей

ssh-add -l  // выведет список ключей подключённых в данный момент

Адаптивная версия сайта

27 августа 2014, 14:10

Для адаптивной версии сайта надо просто надо в head прописать следующую строчку

<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
#CSS   web

prolog

15 августа 2014, 22:59
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

Unix: Создаём архив

18 июля 2014, 14:49

Unix: Создаём архив

tar -zcvf archive-name.tar.gz directory-name

Ключи

-z: Compress archive using gzip program
-c: Create archive
-v: Verbose i.e display progress while creating archive
-f: Archive File name
Ctrl + ↓ Ранее