Pull to refresh
-18
0
Дмитрий Карловский @vintage

Адвокат Дьявола

Send message

Гит субмодули — это такие лок файлы с криптографической гарантией целостности :-)

Вообще говоря версии тут вам ничем не помогут. А поможет фиксация ревизий. Которая через git submodules реализуется куда лучше. Но это не про го вроде.

Это замечательно, что вам повезло с продавцом. Но может не повезти, как мне. И тут торговая площадка вам ничем не поможет.

Не так уж сильно оно и усложняет компилятор при правильном дизайне.


В D можно писать так:


struct xml_tag { string name }
struct json_field { string key }
struct omit_empty {}

struct Article
{
    @ xml_tag( "foo" )
    @ json_field( "text" )
    @ omit_empty()
    string text
}

Соответственно к полю можно прицепить любые типы значений, а потом в библиотеке получить их список и обработать.

было ограничение во времени

А как же:


получаются переиспользуемыми по умолчанию

?


Нормальный компонент просто принимает данные, рендерит их, дергает колбеки при смене фильтров и т.п., а уже загрузкой/сохранением и т.д. заведует сервисный слой.

Тут вы описали "шаблон". Только в реакте шалоны называют компонентами. Во всём остальном мире компонент — самодостаточный кусок приложения инкапсулирующий в себе данные и поведение, а не выпячивающий кишки наружу.


а уже загрузкой/сохранением и т.д. заведует сервисный слой.

Это похоже на заметание мусора под ковёр. Ребята сделали всё по канонам — кидаются экшены, дёргаются редьюсеры, меняется глобальное состояние. А когда пришла пора воспользоваться компонентом на другом экране вдруг произошёл когнитивный диссонанс от необходимости копипастить весь этот "сервисный слой", гвоздями прибитый к конкретным экшенам и конкретным полям стора.


Зачем вообще здесь редакс?

Зачем вообще редакс? :-)

Хотите сказать, что они специально постарались сделать грид не преиспользуемым?
Стандартный функционал: запрос данных из видимой области, редактирование, сохранение, ресайз колонок, изменение состава колонок, изменение фильтров, загрузка данных для вариантов фильтров по требованию. Вот это всё.

Как раз недавно рассказывал, почему мы отказались от версионирования на фронте.


unsafePtr у шарпа и явы дженерики — это не шаблоны, а полиморфные типы.


khim в C++ шаблоны сбоку прилепили, а потом внезапно обнаружили, что на них можно программировать. D уже проектировался с нормальной поддержкой шаблонов: сообщения об ошибках понятные, стектрейсы ведут в код шаблона, а не в генеренный код и тд.

void main(string[] args)
{
    try
    {
        auto source = args.length > 1 ? File(args[1], "r") : stdin;
        auto text   = source.byLine.join.to!(string);

        writeln(text);
    }
    catch (Exception ex)
    {
        writeln(ex.msg);
    }
}

Тут не нужно перехватывать исключения, ибо их поведение по умолчанию и так эквивалентно тому, что написано в го версии. Так что правильнее так:


void main(string[] args)
{
    auto source = args.length > 1 ? File(args[1], "r") : stdin;
    source.byLine.writeln;
}



void main(string[] args)
{
    [1, 2, 3, 4, 5].reduce!((a, b) => a + b).writeln;
}

Этот код можно ещё упростить:


void main(string[] args)
{
    [1, 2, 3, 4, 5].reduce!q{ a + b }.writeln;
}

Не говоря уж о том, что в стандартной библиотеке уже есть нужный алгоритм работающий с любыми числовыми типами:


void main(string[] args)
{
    [1, 2, 3, 4, 5].sum.writeln;
}

Ну так расскажите же как правильно проектировать стор, чтобы компоненты (а не только их шаблоны) получались переиспользуемыми.

58Кб — это, очевидно, после минификации и gzip сжатия.

А чего кроме говна могли туда навалить так много? :-) На поднятие вебсокет-соединения и приём-передачу сообщений много кода не надо.

У firebase разве нет рест апи, которое можно использовать напрямую, а не через говнолибу?

Свежий пример от соседей, где используется ngrx (это redux из мира angular): запилили грид для одного экрана со стором, экшенами, редьюсерами и вот этим всем. И всё бы хорошо, да потребовался такой же грид на другом экране, а весь код гвоздями прибит к конкретным экшенам и путям в сторе. Выхода два: копипастить кучу логики с тривиальными правками, либо рефакторить весь код добавляя инъектирование путей в сторе через параметры компонент и пробрасывать их через экшены в редьюсеры.


А, не проснулся ещё, вы же про Ангуляр, а не про Реакт… впрочем, я тоже про Ангуляр :-)

Ага, и девушки, будут клеиться как шарики пенопласта.

Мне, кстати, уже пришёл. На спине держится довольно удобно. Но вместимость у него для своих габаритов не очень большая, к сожалению. В основном ввиду того, что он держит форму, и всё, что не плоское, занимает объём не оптимально. Провод для зарядки телефона не дотягивается до ноута — дизайнеры не додумались, что ноут можно использовать в качестве зарядки, не таская с собой ещё одну батарею. Ещё неудобство — когда надо что-то достать из рюкзака — недостаточно приоткрыть и просунуть руку — нужно его почти полностью расстегнуть.

У нас нет шаблонизатора. Шаблонизатор — это такая вот жесть:


<ul class="heroes">
  <li *ngFor="let hero of heroes; let index = index; trackBy: trackHero"
    [class.selected]="hero === selectedHero"
    (click)="onSelect(hero)">
    {{index}} <span class="badge">{{hero.id}}</span> {{hero.name}}
  </li>
</ul>

Разработка треугольников Серпинского на заказ. Быстро, качественно, не дорого. Пожизненная гарантия 1 год. Бесплатная доставка самовывозом в любую точку мира и околоземной орбиты. До конца года действует 100% скидка. Спешите, предложение ограниченно. Другого такого не будет до начала следующего года.

Вы поставьте uBlock origin и проверьте.

alexyr у меня вообще не было покупок. И что с того?

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity