Страницы

Поиск по вопросам

понедельник, 18 марта 2019 г.

Подтверждение обработки персональных данных

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


Ответ

В таком случае нужно составить текст в котором будет написано чтото типа: " Вы принимаете политику сайта , согласны с тем что: "бла-бла-бла" и тд. Тп. Если согласны- То нажмите галку и перейдите. Или вообще " Переходя по данной ссылке вы соглашаетесь с "бла-бла-бла".

Суть наследования в php

Добрый день. Прошу помощи разобраться в сути наследования языка php.
В мануале есть такой пример: http://php.net/manual/ru/language.oop5.late-static-bindings.php
class A { private function foo() { echo "success!
"; } public function test() { $this->foo(); static::foo(); } }
class B extends A { /* foo() будет скопирован в В, следовательно его область действия по прежнему А, и вызов будет успешен*/ }
class C extends A { private function foo() { /* исходный метод заменен; область действия нового метода С */ } }
$b = new B(); $b->test(); $c = new C(); $c->test(); //не верно ?>
Меня смущает комментарий
/* foo() будет скопирован в В, следовательно его область действия по прежнему А, и вызов будет успешен*/
Что значит скопирован? Скопирован всмысле отнаследован? Но ведь невозможно наследовать приватные методы и свойства. И правильно ли я понимаю что вызвать $b->foo() нельзя как раз потому, что метод приватный? Но почему тогда из метода test доступно this->foo(), ведь this указывает нам на экземпляр текущего обьекта, а не класса? А объект у нас b. Спасибо.


Ответ

При наследовании - унаследуются метод test() и метод foo(), у каждого будет область видимости А, хоть и класс В, следовательно когда вы обращаетесь к методу test() в классе В - он может обратиться к foo() т.к. у них одна область видимости. Но в случае с классом С - у вас переобъявляется метод foo() а следовательно у него область видимости уже становится С и метод с областью видимости А не может к нему обращаться, так как это приватный метод. А значит чтоб вы могли использовать метод test() - его тоже нужно переопределить в классе С

Экранирование псевдонимов в bash для запуска реальной программы

В .bashrc у меня есть комментарий перед примерами алиасов:
# Some example alias instructions # If these are enabled they will be used instead of any instructions # they may mask. For example, alias rm='rm -i' will mask the rm # application. To override the alias instruction use a \ before, ie #
m will call the real rm not the alias.
В "bash Cookbook" тоже говорится о таком способе запуска реальных программ, а не псевдонимов.
Но в man bash про такое внятно (конкретно) не говориться. Всё, что нашел: "A non-quoted backslash ‘\’ is the Bash escape character. It preserves the literal value of the next character that follows, with the exception of newline."
Каким образом сохранение буквального значения одного символа отключает использование псевдонима?


Ответ

Вот ключевое предложение:
The first word of each simple command, if unquoted, is checked to see if it has an alias.

m, также как "rm" или "r"m, частично экранированы. Поэтому поиск среди alias'ов не происходит. См. также:
https://stackoverflow.com/a/16506263/1892060 http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_03_01

Express + Node. js partial

проблема не выводит виджет (partial) в шаблон houme
houme

Добро пожаловать на сайт турфирмы

{{>weather}}
server
function getWeatherData(){ return { locations: [{ name:'Protland', forecatUrl: 'http://www.wunderground.com/US/OR/Portland.html', iconUrl: 'http://..icons-ak.wxug.com/i/c/k/cloudy.gif', weather:'Cloudy', temp: '54.1 F (12.3 C)' }, { name: 'Band', forecatUrl: 'http://www.wunderground.com/US/OR/Band.html', iconUrl: 'http://..icons-ak.wxug.com/i/c/k/rain.gif', weather:'Rain', temp: '55.0 F (12.8 C)' },
{ name: 'Minsanita', forecatUrl: 'http://www.wunderground.com/US/OR/Minzanita.html', iconUrl: 'http://..icons-ak.wxug.com/i/c/k/rain.gif', weather:'Rain', temp: '55.0 F (12.8 C)' }] }; } //Виджет app.use(function(req, res, next){ if (!res.locals.partials) res.locals.partials = {}; res.locals.partials.weatherContext = getWeatherData(); next(); });
views/partial/weather
{{#each partials.weatherContext.locations}} {{/each}}
Источник: Weather Ground

**Это пример с учебника. Почему не работает не пойму. Шаблон с ссылкой выводит нормально все что находиться в блоке each вообще не выводит.


Ответ

Уххх, как весело:) Вы используете шаблонный менеджер handlebars Обычный пакет handlebars у Вас уже 99% стоит, но сверху еще надо сделать вот так
npm i hbs
Добавляем в какую-нибудь корневую для рэндэров middleware следующий код
const hbs = require('hbs'); // лучше вне middleware // папка с partials!! hbs.registerPartial('weather', fs.readFileSync(__dirname + '/../views/partials/weather.hbs', 'utf8'));
Обратите внимание на строку с путем - начинается со слеша, задается относительно файла, в котором находится.
После указанных выше манипуляций у меня Ваш пример, хоть чуть и упрощенный стартанул. Если Вам не удастся воспроизвести по этому ответу, выложу код на гит, или дополню ответ где надо.

Сравнение нуля и строки с помощью == в PHP

Почему условие if ((int)0 == 'string') возвращает true?


Ответ

'string' приводится к (int), т.к. в сравнении участвует число. А т.к. в 'string' нет цифр, она приварнивается к 0.
тут и тут читайте.

Пример по generics из Философии Java

Приветствую всех! Читаю у Брюса Эккеля про дженерики, попался в качестве примера такой код:
package net.mindview.util; import java.util.*; public class New {
public static Map map() { return new HashMap(); } }
public class LimitsOfInference { static void f(Map> petPeople) {}
public static void main(String[] args) { // f(New.map()); // Does not compile } }
И объяснение:
Type inference doesn’t work for anything other than assignment. If you pass the result of a method call such as New.map( ) as an argument to another method, the compiler will not try to perform type inference. Instead it will treat the method call as though the return value is assigned to a variable of type Object.
И тем не менее я воспроизвел этот код в IDE, он успешно скомпилировался и запустился. Это ошибка или информация в книге устарела? У меня jdk 8.


Ответ

Вся проблема в том, что у вас Java 8.
Укажите среде разработки, что нужно собрать это для Java 6, и вы увидите, что проект действительно не компилируется.
Все дело в даймонд операторах, которых в Java 6 еще не было, соответсвенно, создавая f(New.map()) считается, что это map с двумя objecт, а ожидается параметризованный другими типами Map.
Чтобы понять проблему, давайте возьмем пример попроще.
List = new ArrayList <>();
Здесь после листа дженерик со стрингом, почему-то не отображается правильно... Это вполне допустимо для Java 8, поскольку Java 8 видит в левой части параметризованный стрингами лист и сама дописывает в дженерик левой части тот же стринг в качестве параметра.
Однако, если запустить это на Java 6, то будет ошибка компиляции, потребуются явные параметры дженериков
`List = new ArrayList ();`
То-же самое происходит в Вашем примере

Перевод фокуса на элемент управления

У меня есть форма с двумя кнопками, называющимися aButton и bButton. Хочу, чтоб по нажатию мышкой на aButton выполнялась функция myFunctionMouseClickA, а по нажатию мышкой на bButton выполнялась функция myFun2. При этом, если (в том числе, сразу после нажатия мышкой на aButton) нажать энтер, должна выполняться функция myFunctionEnterPressed. Как можно это сделать?
То есть, как я понимаю, мне надо добиться того, чтоб после нажатия мышкой на aButton срабатывала функция myFunctionMouseClickA (для этого я её свяжу с событием mouseClick), а в фокусе после этого оказывалась bButton. Последнее и представляет для меня трудность.


Ответ

Может помочь
this.ActiveControl = null;
Но лучше вариант, предложенный в комментарии Alexander Petrov:
Используйте метод Focus. В обработчике клика пишем:
bButton.Focus();