Pull to refresh
7
0

Разработчик c# asp.net

Send message

Так дело в трансляторе в sql, а не в спецификациях.

Класс! Буду следить. Тоже нужен такой девайс. Точнее несколько, в разных комнатах, как-то прикрутить все в один HA, хочу чтобы команда "выключи свет" работала в той комнате, где её произнес

У нас это называется:

"фича-инфраструктура" - временное окружение со своими временными репозиторями пакетов, бд и т.п., и "фича-стенд" - стенд для тестировщика/аналитика, развернутых на базе "ФИ". на нём происходит функциональная приема и тестирование, устранение выявленных багов. Когда всё проверено и готово - тогда код попадает в мастер затронутых пакетов.

Спасибо за статьи. Жду продолжения.

Вопрос про "Способы реализации общей функциональности" вариант "первый", добавление общего кода в выдачу генератора. Как-то можно проверить, что в контексте уже присутствует атрибут IncludeIntoList (который подтянулся через нугет пакет, тоже использующий этот генератор) и не добавлять его в общую выдачу?

Я не до конца понимаю в чем гениальность этих экспериментов… Если взять магнитофонную пленку и пропускать её через магниты, на ней тоже всё сотрется… Пленка теперь квантовая? Или вы просто магнитами своими всё там испортили? Или спин частицы, по теории, не должен поддаваться переориентированию в магнитном поле? Че-то тут не так… :-)
Моё мнение такое.
Про загрузку из Excel как раз хороший пример. Пример того, что в первый раз сразу надо было делать «универсальный» загрузчик, который предусматривает, по возможности, самые распространенные косяки в исходных данных. В Вашем же примере — берете решение, написанное для первого заказчика, и дорабатываете его до «универсального», предусматривающего все нюансы второго. Третьему заказчику, с большой долей вероятности, уже можно будет продать загрузчик почти без изменений.

Программисты 1С общаются с клиентами не по своей воле, а из-за того что так «криво» устроен этот бизнес. Никто не мешает нанять «аналитиков», которые будут общаться с клиентами и выдавать задания программистам. Но мало кто это делает потому что это доп.затраты, «а нам они нужны? вон пусть программист сам выясняет у клиента чего там надо сделать». Т.к. правильно в статье написано — надо урвать здесь и сейчас.
В мире .NET есть хороший образец нарушения принципа Interface Segregation.
Всем известный System.IO.Stream, он и Read и Write и Seek… хотя потоки бывают разные.
Они конечно добавили костыли в виде CanRead, CanSeek, CanWrite…
Я один раз такое только применил для заглушки против двойных кликов. Вот в таком случае очень удобно получилось ( у нас договоренность, что все кнопки только тэг a class=«btn»)

@Directive({
    selector: 'a.btn'
})
export class NoDblClick {

    constructor() { }

    @HostListener('click', ['$event'])
    clickEvent(event: MouseEvent) {

        let element: any = event.target;
        if (!element) {
            return;
        }

        element.classList.add('btn-freeze');

        setTimeout(function () {
            element.classList.remove('btn-freeze');
        }, 500);
    }
}
«dependencies»: {
"@angular/common": «4.4.6»,
"@angular/compiler": «4.4.6»,
"@angular/core": «4.4.6»,
"@angular/forms": «4.4.6»,
"@angular/http": «4.4.6»,
"@angular/platform-browser": «4.4.6»,
"@angular/platform-browser-dynamic": «4.4.6»,
"@angular/animations": «4.4.6»,
"@angular/router": «4.4.6»,
"@angular/compiler-cli": «4.4.6»,
«angular-in-memory-web-api»: «0.5.1»,
«bootstrap»: «3.3.7»,
«core-js»: «2.5.1»,
«eonasdan-bootstrap-datetimepicker»: «4.17.47»,
«font-awesome»: «4.7.0»,
«ie-shim»: «0.1.0»,
«moment»: «2.15.1»,
«reflect-metadata»: "^0.1.10",
«rxjs»: «5.5.2»,
«zone.js»: «0.8.18»,
«aspnet-prerendering»: «2.0.3»,
«aspnet-webpack»: «2.0.1»,
«file-saver»: «1.3.3»,
«d3»: «4.7.4»
},
А какие такие изменения, привнесенные в 6-ю версию, заставили вас на него перейти?
Мы вот до сих пор на 4.4 сидим и вроде всё устраивает…
Тоже натыкался на такое поведение. Решил довольно просто: OrderBy — должен быть последним в дереве IQueryable. Точнее даже не так — запрос собирается до первого встреченного OrderBy, остальное выполняется на клиенте.
Я имею ввиду вот такие случаи:
var list = dbContext.Persons.where(predicate).orderby(order);
if(filter.value.hasvalue)
{
list = list.where(f=>f.someField == filter.value);
}


Пришлось от такого избавиться и переставить сортировку в конце.
var list = dbContext.Persons.where(predicate);
if(filter.value.hasvalue)
{
list = list.where(f=>f.someField == filter.value);
}
list = list.orderby(order);

Для своего приложения на Angular 4 использую схожую библиотеку ts-helpers. В tsconfig только noEmitHelpers, а в polyfills.ts: import 'ts-helpers';
Сравнил объемы после компиляции, с tslib получается на 50 Кб больше. Оставил у себя ts-helpers
На самом деле можно.
Надо правильно прописать в systemjs.config.js вот примерно таким образом:
(function(global) {

  var ngVer     = '@2.0.0-rc.4'; // lock in the angular package version; do not let it float to current!
  var routerVer = '@3.0.0-beta.1'; // lock router version
  var formsVer = '@0.2.0'; // lock form version

  //map tells the System loader where to look for things
  var  map = {
    'app':                        'app',

    '@angular':                   'https://npmcdn.com/@angular', // sufficient if we didn't pin the version
    '@angular/router':            'https://npmcdn.com/@angular/router' + routerVer,
    '@angular/forms':               'https://npmcdn.com/@angular/forms' + formsVer,
    'angular2-in-memory-web-api': 'https://npmcdn.com/angular2-in-memory-web-api', // get latest
    'rxjs':                       'https://npmcdn.com/rxjs@5.0.0-beta.6',
    'ts':                         'https://npmcdn.com/plugin-typescript@4.0.10/lib/plugin.js',
    'typescript':                 'https://npmcdn.com/typescript@1.9.0-dev.20160409/lib/typescript.js',
 };

  //packages tells the System loader how to load when no filename and/or no extension
  var packages = {
    'app':                        { main: 'main.js',  defaultExtension: 'js' },
    'rxjs':                       { defaultExtension: 'js' },
    'angular2-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' },
  };

  var ngPackageNames = [
    'common',
    'compiler',
    'core',
    'http',
    'platform-browser',
    'platform-browser-dynamic',
    'router-deprecated',
    'upgrade',
  ];

  // Add map entries for each angular package
  // only because we're pinning the version with `ngVer`.
  ngPackageNames.forEach(function(pkgName) {
    map['@angular/'+pkgName] = 'https://npmcdn.com/@angular/' + pkgName + ngVer;
  });

  // Add package entries for angular packages
  ngPackageNames.forEach(function(pkgName) {

    // Bundled (~40 requests):
    packages['@angular/'+pkgName] = { main: 'bundles/' + pkgName + '.umd.js', defaultExtension: 'js' };

    // Individual files (~300 requests):
    //packages['@angular/'+pkgName] = { main: 'index.js', defaultExtension: 'js' };
  });

  // No umd for router yet
  packages['@angular/router'] = { main: 'index.js', defaultExtension: 'js' };

  var config = {
    map: map,
    packages: packages
  }

  System.config(config);

})(this);
Мы потихоньку начинаем внедрять… Основная грабля — это IE. Корпоративная политика велит использовать IE, приходится использовать.
Пришел к выводу, что для меня лучше, когда транспиляция идет на клиенте, гораздо удобней отлаживать. Первоначальное отлаживание делаю в хроме, потом перепроверяю всё в IE (в режиме 10 версии, потом в 11 версии).
например вот так не работает в IE10, но работает в 11:
<div [hidden]="!showThisBlock">
   содержимое
</div>

Пришлось переделать на *ngIf и покрутить стили, чтобы при показе блок был «правильной» ширины…
Вот, теперь я врубился, что Вы имели ввиду. Спасибо. Все понял, постараюсь соблюдать.
Я думал, что компонент — это и есть вьюха+контроллер, оно как-бы единое целое и использовать одно без другого не получится. По этому и не вижу разницы где писать логику. Или Вы что-то другое имели в виду и я не понял.
Спасибо за ответ, в целом согласен. Хотел только уточнить про:

А не управлять данными на основе верстки

Это Вы в рамках теоретических рассуждений или в моем примере что-то такое заметили?
А вообще, что-бы построить дерево — не обязательно писать компоненты или директивы, достаточно рекурсивного вызова шаблона.

Можно, но тогда очень страдает переиспользование. Компонент же я для того и пишу, чтобы переиспользовать его на любых страницах, где он понадобится, а дополнять/фиксить функционал только в компоненте.
Не добавил isExpanded в модель по таким соображениям — это поле нужно только для UI, на сервере хранить состояние дерева пока не собирался. По этому этого поля нет в модели и я решил обойтись тем, что уже есть — проверкой наличия соответствующего класса.
Задачи сохранять состояние дерева пока не ставил, возможно при решении такой задачи всё перекочует на сервер в какой нибудь asp.net Session...

Information

Rating
5,065-th
Location
Нижний Новгород, Нижегородская обл., Россия
Date of birth
Registered
Activity