Обновить
28
Никита Гусаков@hell0w0rd

Пользователь

12
Подписчики
Отправить сообщение
А еще можно использовать для этого декораторы, которые предложили для ES7 и уже давно есть в babel.
Вот пример:
// create-mixin.js
function createMixin(obj) {
  return (SomeClass) => {
    Object.assign(SomeClass.prototype, obj);
  };
}

// mixins/say-hello.js
const SayHelloMixin = createMixin({
  sayHello() {
    console.log(this.name);
  }
});

// human.js
@SayHelloMixin
class Human {
  constructor(name) {
    this.name = name;
  }
}

const nkt = new Human('nkt');
nkt.sayHello();
Вот тут, кстати, интересный момент. Получается после этого jailbreak для установки программ, которые не пропускает apple уже не нужен (f.lux на пример)?
Я и сам не доволен, но разве бывает как-то по другому? Неужели кто-то умеет выпускать продукты быстро (в определенные сроки), сразу качественно и со всем набором «must have» фич? На мой взгляд это из области фантастики.
Потому что bolk не прав. Зависит от того, что значит «запроса к пхп». Изначально все зависит от реализации, может быть в статических полях константы — и мы всегда увидим одинаковые значения. Вероятно вопрос в том, сохраняются ли значения между разными запросами вида: запрос — php отработал — ответ, тогда нет, не сохранятся. А если php запущен, как демон, то сохранятся.
Так что вопрос идиотский и ответ на него тоже не понятный.
Так, а почему не наоборот? Почему у администрации нельзя просто отключить защиту, а во всех компьютерных классах оставить не тронутой, продукт же на школьников заточен, а не взрослых людей.
В том смысле, в котором я написал. Это не работало. Я сообщал о баге, было это около полугода назад. Не просто так же я пишу.
Я понимаю, как это сделать на DQL. Тут смысл в том, что эти два запроса не свяжут посты и пользователей, во всяком случае в 2.4.
А я, как человек, перешедший на query builder-ы c Doctrine ORM во многом согласен с доводами из статьи. Автор в целом прав, в том, что lazy-load данных из базы — ключевая концепция. Eager-load не проработан на столько же, возможно потому что это сложнее, или по другой причине, но нет возможности сгенерировать два запроса, вместо N вида:
SELECT * FROM users u WHERE u.foo = bar;
SELECT * FROM posts p JOIN users u ON u.id = p.user_id WHERE u.foo = bar; // или IN(id1, id2, ...)

Ладно, у нас есть мощный query builder, попробуем сами такое сделать. Ан нет, во всяком случае в версии 2.4. Сущности не свяжутся и Identity Map становится бессмысленной, тк она не работает.
Также с Identity Map был косяк, из-за которого пришлось форкать доктрину в одном из проектов — не работал DateTime в качестве primary key. Банально отсутствовал метод, который привел бы DateTime к строке и добавлять в ядро это не хотели, предложили заменить DateTime на свой, я честно старался сделать это, но через пару часов так ничего и не вышло.
Так зачем вы используете конструкцию await (await ...);?
На мой взгляд вашу проблему лучше решать с помощью готовых инструментов, обернув plumber, или аналог, в if. А использовать NODE_ENV, или ENABLE_PLUMBER — это уже вам решать.
таки нет, вы не правы.
Этот код вполне рабочий:
(async function start_thread() {
  const result = await getNextTask();
  console.log(`got ${result} from promise`);
})();

async function getNextTask(){
  return new Promise(resolve => resolve(5))
}

// этот код эквивалентен
log(await (await foo()));
// этому
foo().then(r => r).then(r => log(r));

И да, все async-функции возвращают промис, как результат работы, by design.
Интересно. Не является ли это специфичной для async/await «фичей», или багом regenerator?
function test() {
  return new Promise((resolve) => {
    resolve(Promise.resolve(5));
  });
}

test().then((val) => console.log(val)) // 5
Тем что правила описываются внутри объекта, который разработчик строит как угодно, на свое усмотрение.
совсем не согласен. У вас в арсенале есть еще npm-scripts.
{
  "scripts": {
    "start": "gulp",
    "build": "NODE_ENV=production gulp build"
  }
}

В итоге вы можете сколько угодно менять систему сборки, разработчики вашей команды, которым они чужды могут даже об этом не знать, запуская npm start каждый раз после git pull.
await (await getNextTask());

оО
await ожидает промис, а промис не может зарезолвить промис, таким образом что делает этот код?
Да, поэтому когда я использовал gulp, делал так:
var gulp = require('gulp');
var _if = require('gulp-if');

var env = process.env.NODE_ENV || 'development';
var production = env === 'production';

gulp.task('less', function () {
  gulp.src('less/*.less')
      .pipe(_if(!production, plumber()))
      .pipe(less())
});

Чего очень сильно не хватает в webpack.
Что-то не понял, а зачем watch при сборке на CI сервере?
А зачем вы в toogleFilter ищите control, если его можно было просто передать?
github.com/nkt/doctrine-columns — в тему. Трейты для популярных полей, при работе с ORM doctrine. Собственно либа демонстрирует подход, а не навязывает свое использование.
Статья о библиотеке на хабре
на счет .idea я бы поспорил. .idea/workspace.xml стоит игнорить, а все остальные настройки скорее всего понадобятся и остальным разработчикам.

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность