понедельник, 4 ноября 2019 г.

Залогинивание вручную

Принимаем запрос по /login?u=username&p=password
Затем загружаем юзера по логину и сравниваем запрошенный и установленный пароли с помощью хешера. Если все совпало, то логиним юзера и возвращаем все его параметры.

   public function login() {
        $data = $this->request->query;

        $this->loadModel('User');
        $user = $this->User->find('first', array('conditions' => array('login' => $data['u'])));
       
        $passwordHasher = new BlowfishPasswordHasher();
        $confirm = $passwordHasher->check($data['p'], $user['User']['password']);
        if ($confirm) { // пароль поравильный
            $this->Auth->login($user['User']);
            $data = $this->Session->read('Auth');
        } else {
            $data = array('Error' => 'Bad password');
        }

        $this->set(compact('data'));
       
    }

вторник, 29 октября 2019 г.

Проект УЗГ HCPL6

В разработке вот такая модификация УЗГ.
На основной (красной) плате (10х10см) собирается полномостовой УМ. На нее припаиваются дочерние (зеленые) платы (5х10см): процессорный модуль, DC часть с развязанными датчиками тока и напряжения, низковольтный блок питания (FlyBack, условно не показан)
Основная плата крепится к радиатору (условно не показан) через силовые ключи и дополнительные стоечки.
Расчетная мощность - чуть более киловатта.

понедельник, 28 октября 2019 г.

Выборка записи по ID с установкой условия в подчиненной таблице

Зависимость  Execution.task_id == Task.id

        $this->loadModel('Task');

        $this->Task->hasMany['Execution']['conditions'] = array(
            'Execution.user_id' => $current_user_id
        );

        $task = $this->Task->findById($task_id);

Как видим, принудительной подгрузки подчиненной таблицы нет. Только установление ограничения в настройке связки мастер-таблицы.

воскресенье, 27 октября 2019 г.

Cookie для локального хранения данных

function setCookie(c_name, value, exdays) {
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
    document.cookie = c_name + "=" + c_value;
}

function getCookie(c_name) {
    var i, x, y, ARRcookies = document.cookie.split(";");
    for (i = 0; i < ARRcookies.length; i++) {
        x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
        y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
        x = x.replace(/^\s+|\s+$/g, "");
        if (x == c_name) {
            return unescape(y);
        }
    }
}

Время жизни сессии в CakePhp 2


Установить большое время жизни сессии (например 3 дня):

В файле core.php 

Configure::write('Session', array( 
  'defaults' => 'php',
   'timeout' => 259200, 
   'ini' => array( 
          'session.gc_maxlifetime' => 259200 // 3 day )
 ));

пятница, 12 июля 2019 г.

printf() в SW4STM32

Стандартная библиотека stdio.h содержит процедуры и функции, помогающие организовать общение с юзером в консольном стиле. То есть, описывает стандартный ввод-вывод. Особенно полезна printf() как способ форматированного вывода.
Для доступа к эти возможностям нам всего-то нужно рассказать компилятору как нужно вывести в консоль один символ и как получить из консоли символ. Для этого уже есть "слабые" заглушки, которые мы перекроем своей реализацией.

суббота, 8 июня 2019 г.

О снабберах

Заставила жизнь более плотно разобраться с демпфирующими цепями в переключающих схемах. Покопался в литературе и вот что узнал об RCD диссипативном снаббере.