@dlangru

Страница 69 из 719
Макс
13.09.2016
09:43:20
Нууу... описание какое-то на гитхабе, кажется, было, работать работало...

Anatoly
13.09.2016
09:45:31
кстати, жаль, что на code.dlang.org ещё нет поддержки регистрации репозиториев на gitlab. Интересно, ишшуй есть?)

https://github.com/dlang/dub-registry/issues/117

Dmitry
13.09.2016
11:11:48
http://www.everfall.com/paste/id.php?dnwlslaiysin а вот тут блок try-catch тоже лишний?

Google
Pavel
13.09.2016
11:17:16
Если для тебя допустимо что запрос не сработает, то не лишний )

Dmitry
14.09.2016
10:20:40
Читаю про компилируемые шаблоны вайба. Вопрос. Как и в каких случаях их лучше совмещать с подгружаемыми JS шаблонами

Кстати, в ФФ пходу поддержка webp появится в течении полугода. В сорцах она уже мелькает

Pavel
14.09.2016
11:31:46
> подгружаемыми JS шаблонами это что?

Dmitry
14.09.2016
11:34:34
ну типа JS меняет шаблон на лету - SPA приложения

когда весь сайт загружается сразу. Все его вьюшки

Pavel
14.09.2016
11:35:47
Тогда сдается мне что комплируемые шаблоны вайба это немного другое

Они в результате дают некоторые статические html/js файлы

Dmitry
14.09.2016
11:37:12
ну да. вопрос в том в какой момент их имеет смысл комбинировать

Eto
14.09.2016
12:05:13
Разве не очевидно?

Dmitry
14.09.2016
12:06:23
неа...

Pavel
14.09.2016
12:11:47
Что касается js файлов, мне кажется что лучше их гнать через встроенные сборщики gulp/webpack

Dmitry
14.09.2016
12:13:55
тут просто вопрос в том, что я никак не могу понять какие части и на чем лучше делать. Когда вот реально хороши серверные шаблоны?

Google
Pavel
14.09.2016
12:16:33
Когда в команде мало фронтендеров ;)

Слишком жирный SPA будет тормозить на некоторых клиентах.

Dmitry
14.09.2016
12:17:04
а когда команды нет и все одному приходится делать?))

а кроме тормозов и плохой индексации поисковиками SPA какие еще минусы имеет?

Pavel
14.09.2016
12:17:51
Ну если ты плохо знаешь JS стек, то тебе будет трудно, и проще все собирать на сервере.

Dmitry
14.09.2016
14:22:11
Ребят, а если задача просчитывать данные на манер Excel, то Ди будет адекватным вариантом? Щас скрин покажу того, как оно щас в Excel выглядит

Pavel
14.09.2016
14:23:27
Если просчитывать то да, а вот если интерфейс делать то наверно нет

Dmitry
14.09.2016
14:23:51
подкраска не нужна — главное после ряда манипцляций получить результирущий столбец

Pavel
14.09.2016
14:24:36
Ну это можно получить в виде вычисления в памяти. А вот на экран выводить - это уже вопрос

Dmitry
14.09.2016
14:25:02
а как это на уровне кода то выглядело бы? Если на скрин глядеть. Вот B M H P это были бы структуры, а в них еще другие структуры или как?

Pavel
14.09.2016
14:26:44
ну видимо вся таблица это двумерный массив из каких-нибудь структур StructRow, который уже в себе содержат ссылки на данные и могут обладать логикой

Dmitry
14.09.2016
14:28:51
м... так а даты как к ней приплести?

получается она в себе для одного столбца должна содержать: int x1 [] int x2 [] int x3 [] int x4 [] так?

Pavel
14.09.2016
14:32:17
Ну динамический массив какой-то надо

qwe
14.09.2016
15:15:08
JS шаблоны рендерятся на клиенте, vibe.d шаблоны на сервере. Использовать JS шаблоны надо если много представлений должно происходить без перезагрузки страницы. JS шаблоны делаются обычно на Backbone, React, Angular.

Dmitry
14.09.2016
17:01:20
А можно кейс когда серверные шаблоны хорошо и когда нет

Вроде бы все рендить на клиенте звучит заманчиво.

Pavel
14.09.2016
17:02:34
Как я уже говорил, если ты гуру JS то рендерить на клиенте действительно крутое решение :)

А бэкенд только предоставляет REST API, не больше

Anatoly
14.09.2016
17:03:59
не гуру js, но делал обычно так. Не хотелось тянуть в сервер вебню)

Google
Anatoly
14.09.2016
17:04:08
обошёлся сервисом и nginx

Dmitry
15.09.2016
06:47:56
Правильно ли я понимаю что enforce это просто замена if для проверки условия бросания исключений и в следующем коде if и enforce эквивалентны

void main() { foo(5); bar(5); } void foo(int x) { enforce(x>5, "x should be greater than 5"); writeln(x); } void bar(int y) { if(y<5) throw new Exception("y should be greater than 5"); writeln(y); }

и разница лишь в том, что в случае с enforce я пишу условие при котором условие должно удовлетворяться, а с if обратное — при не соответствии с которым исключение должно бросаться

И еще вопрос: class Foo { int x; long y; } void test(Foo foo) Тут что делается? Разве экземпляр класса создается? Тогда почему без слова new?

Dmitry
15.09.2016
07:17:24
ну и как мы в него принимаем Foo foo ? онb в данном случае это что?

Макс
15.09.2016
07:19:47
Его создал кто-то другой. А мы принимаем.

Eto
15.09.2016
07:19:50
auto a = new Foo(); test(a);

Макс
15.09.2016
07:20:16
Или не создал, т.к. он мог передать null :-)

Dmitry
15.09.2016
07:21:48
тоесть в примере просто этот момент опустили?

что он уже создан

Dmitry
15.09.2016
07:21:56
https://dlang.org/spec/class.html#class_properties

Eto
15.09.2016
07:23:07
Естественно. Это подразумевается.

Dmitry
15.09.2016
07:48:33
ctor - это сокращение от слова Сonstructor? Просто в ошибках про Конструктор оно часто вылезает

Anatoly
15.09.2016
07:54:18
да

Dmitry
15.09.2016
07:55:16
@ttldtor а не подскажешь что ему тут не нравится http://img.ctrlv.in/img/16/09/15/57da53d1c885a.png

Anatoly
15.09.2016
07:58:19
когда наследуешься, то в конструкторе потомка надо явно вызывать конструктор предка, если у предка явно задан конструктор с параметрами и нет без параметров

это очевидно

тебе прям так и пишут

Google
Anatoly
15.09.2016
07:59:16
если бы у предка был конструткор this(), то он бы неявно вызвался и всё было ок

а так тебе надо писать что-то вроде super(y)

прочитал бы ты книжку по ди

Dmitry
15.09.2016
08:00:39
а смысл конструктор предка вызывать? Где это полезно? Ведь этими данными же что-то инициализируется

Anatoly
15.09.2016
08:00:40
не было бы таких вопросов

тебе надо инициализировать данные предка

это делается конструткором

Admin
ERROR: S client not available

Anatoly
15.09.2016
08:01:11
что значит "полезно"?

Dmitry
15.09.2016
08:01:19
да я ее периодически читаю, но вопросы все равно вылезают

Anatoly
15.09.2016
08:02:10
во всех языках с ООП при наследовании явно или неявно вызывают конструкторы предка

Dmitry
15.09.2016
08:02:42
это связано с тем, что класс — ссылочный тип? Просто по идеи мы в конструктор передаем какие-то значения которые нам в данном классе нужны. А тут получается мы еще и родителя (базовый класс) инициализируем, хотя в данном случае он нам не нужен

Anatoly
15.09.2016
08:03:10
нужен

Dmitry
15.09.2016
08:03:18
Как я понимаю потребность в явном вызове это все же ошибка? https://issues.dlang.org/show_bug.cgi?id=5450

Anatoly
15.09.2016
08:03:24
нет, не ошибка

у тебя у родителя один конструктор

он с параметром

будь любезен его вызови при конструтировании потомка

Dmitry
15.09.2016
08:05:11
а какое значение тогда туда передавать? Тоесть надо как-то так: super(int y) { } this(int y) { } ?

Anatoly
15.09.2016
08:06:48
почитай

Google
Anatoly
15.09.2016
08:28:17
как-то странно, ты спрашивал про исключения и только сейчас про классы. Обычно в литературе по ООП языкам классы идут до исключений.

Dmitry
15.09.2016
08:28:43
Да я вот только что перечитал книжку

я просто сижу и разбираю те моменты которые плохо понимаю, но встречаю в коде

как я понял super нужено внутри this вызывать

и все равно я не понимаю какое значение мне в super надо передавать. Я хочу работать с производной класса и класс родитель не трогать и у меня нет идей что в родитель нужно передавать

Вот второй коммент вроде бы про это https://issues.dlang.org/show_bug.cgi?id=12737

как я понимаю на этот случай и нужен множественный this() чтобы я мог в классе А объявить пустой конструктор

верно?

Grigirii
15.09.2016
08:45:04
Попробую вмешаться и объяснить. Класс потомок "является" предком. То есть это то же самое + дополнительные свойства. Даже в памяти это объект базового, после которог лежат поля потомка. Как коструировать базовый знает только он сам, поэтому всегда нужно звать его конструктор. Чтобы это не сильно надоедало компилятор нам помогает, и, если в предке есть конструктор по умолчанию, то он сам может вставить этот вызов. Когда его нет (как здесь) его надо вызвать руками. Что туда передать на такой абстрактной задаче не понять. Обычно есть два варианта: потомок умеет вычислять аргументы предка, либо он сам принимает те же самы аргументы и пробрасывает вызов в предка.

и ещё, совершенно бессмысленно задавать значения по умолчанию в объявлении и при этом безусловно перетирать их в конструкторе. Можно добавить конструктор по умолчанию this(), либо убрать init значение int x

Dmitry
15.09.2016
08:48:39
пасибо)

Anatoly
15.09.2016
09:37:13
хм, я не знал, что это надо объяснять. Я думал, что смысл наследования понятен и так...интуитивно

тогда на полиморфизме мы вообще встрянем)

Grigirii
15.09.2016
09:40:27
да, но без практики и таких вот банальных вопросов прогресса не будет. книги книгами, а понимание приходит только с написанными строками кода

Dmitry
15.09.2016
09:42:59
ну кстати да, скольк не читал пока не столкнулся и руками не попробовал сделать ничего толком не помогало

Anatoly
15.09.2016
09:43:02
Хе) Если бы Брюс Эккель заинтересовался ди, то он написал бы неплохую книжку с примерами и задачами с названием типа "Thinking in D" =))

у меня один из первых языков - C++, поэтому мне как-то проще. Литературы было вылом и задачки я себе находил.

Dmitry
15.09.2016
09:44:14
У меня все проще. Я сразу с Ди начал)

Ну и на Питоне чутка в процедурном стиле)

Страница 69 из 719