@dlangru

Страница 18 из 719
Dmitry
13.06.2016
17:43:46
уф... для меня это на грани понимания

Oleg
13.06.2016
17:44:31
а если нужно "меньше букав", то, по соглашению, alias имени шаблона возвращается без обращения к подпространству имён шаблона

Pavel
13.06.2016
17:44:54
Dmitry
13.06.2016
17:45:18
там все на столько дуболомно?

Google
Oleg
13.06.2016
17:46:46
template sqr( size_t K ) { enum sqr = K * K; } auto a = sqr!5; // a == 25

Pavel
13.06.2016
17:46:52
Почему же, просто там нет такой магии трудной для понимания

Oleg
13.06.2016
17:46:56
вот пример простенький

Dmitry
13.06.2016
17:47:05
пасибо постараюсь разобраться

Oleg
13.06.2016
17:47:37
ребят, а кто чем пользуется для (де)сериализации json?

https://github.com/rcorre/jsonizer я вот этим

но я немного не понял автора

https://github.com/rcorre/jsonizer/pull/25

обсудили момент, он вроде согласен, но не принимает pullrequest

а этот функционал нужен в некоторых ситуациях

Oleg
13.06.2016
17:50:42
может кто подскажет библиотечку, где это сделанно уже?

@sigod но это же просто std.json на другой лад

Google
Oleg
13.06.2016
17:51:32
я чуточку про другое

https://github.com/rcorre/jsonizer/blob/master/README.md#jsonize-and-jsonizeme

Eto
13.06.2016
17:53:15
Вообще, я имел ввиду, что используется код доступный в vibe.d А вот именно такое в проекте не требовалось.

обсудили момент, он вроде согласен, но не принимает pullrequest
Это Open Source. Иногда месяцы между комментариями проходят.

Oleg
13.06.2016
17:54:29
отвечал он достаточно оперативно

Eto
13.06.2016
17:55:05
Тогда пингани его.

Вообще, он не получает оповещения о новых коммитах в PR.

Pavel
13.06.2016
17:55:25
Он ждет еще подтверждений что ПР ок

Если написать парочку ? то он смержит думаю =)

Oleg
13.06.2016
17:58:06
ну ладно

Dmitry
14.06.2016
07:59:21
@deviator я перечитал все что ты писал еще раз. А шаблоны и лямбды это же немного разные понятия. Получается я в шаблон лямбду передаю через map! тот же

Eto
14.06.2016
08:24:06
`map` — это шаблонная функция. Т.е. шаблон, по сути.

Dmitry
14.06.2016
08:25:38
Шаблоны обычно нужны для всеядности? Чтобы аргументы разного типа можно было передавать?

Eto
14.06.2016
08:35:57
Вроде того. Шаблоны принимают аргументы времени компиляции.

Dmitry
14.06.2016
10:02:19
а о чем может быть ошибка: "Writing past end of output stream."

Судя по всему ошибка где-то тут, только никак не могу понять в чем она:

Походу оно с исключением даже падает http://img.ctrlv.in/img/16/06/14/575fd92fb459e.png

Eto
14.06.2016
10:55:50
Похоже, что ты дважды writeJsonBody вызываешь.

Dmitry
14.06.2016
10:57:03
а может причиной быть не вызыванный где то response?

Eto
14.06.2016
10:58:47
Если он невызванный, то почему кидает ошибку, что output stream уже закрыт?

Google
Eto
14.06.2016
10:58:56
Удали лишний writeJsonBody.

Dmitry
14.06.2016
11:01:38
так, ошибка вроде ушла. Осталось разобраться с тем, почему он после рефреша страницы юзера как админа перелогинивает. Ну это я уже сам постараюсь.

Но по идее при выходе же я правильно сессию пользователя сбрасываю?

просто мне непонятно почему рефреш страницы тогда админскую сессию возвращает у юзера, если до юзера был залогинен админ

м... кажется понял в чем причина. У меня структура отвечающая за сессию глобально объявлена

А если у меня набор вложенных структур, могу я следующим образом до второй дотянуться?

struct AuthInfo { User user; } struct User { int id; string login; } AuthInfo _auth; Вот так: _auth.user.login

Eto
14.06.2016
11:22:44
Да

Oleg
14.06.2016
11:28:54
эх

Dmitry
14.06.2016
11:30:00
@deviator я просто кучу времени про те же диапазоны читал в попытке понять где их можно применять и как не говоря уже о шаблонах

Oleg
14.06.2016
11:31:28
диапазоны это ленивые массивы =)

зачастую

но не суть

скажи откуда ты берёшь информацию

где ты читаешь, что тратишь кучу времени

просто книжка от Александреску очень годная

Dmitry
14.06.2016
11:32:42
я ее много раз читал...

Oleg
14.06.2016
11:33:21
хм...

Dmitry
14.06.2016
11:33:30
только для меня это как математика... ее я вообще не понимаю) тут понимаю с огромным трудом)

Oleg
14.06.2016
11:33:56
ну не знаю

Google
Oleg
14.06.2016
11:34:03
математика сложнее в разы

там намного более сложные абстракции

вообще способность понимать математику это способность мыслить абстракциями

с программированием в этом они похожи

Dmitry
14.06.2016
11:35:28
ну вот у меня с этим косяк...

Oleg
14.06.2016
11:35:37
а к программированию нужно относиться как к составлению рецептов в повареной книге, например)

это просто последовательность действий

Dmitry
14.06.2016
11:49:12
Так. Вот допустим я ставлю сессию (пример из доки): req.session.set("loginUser", req.form["user"]); Как мне теперь получить то что я туда записал? http://vibed.org/api/vibe.http.session/Session.get Ругается что не с теми аргументами вызываю:responseBody["username"] = req.session.get("login");

Dmitry
14.06.2016
11:50:15
такой вариант тоже не катит: Session.get("login");

Oleg
14.06.2016
11:50:26
ох...

Session это тип

Dmitry
14.06.2016
11:50:37
`C:\Users\bubenkov_di\AppData\Roaming\dub\packages\vibe-d-0.7.30-alpha.1\vibe-d\source\vibe\http\session.d(81,49): Error: undefined identifier 'T' source\app.d(186,51): Error: template vibe.http.session.Session.get cannot deduce function from argument types !()(string), candidates are: C:\Users\bubenkov_di\AppData\Roaming\dub\packages\vibe-d-0.7.30-alpha.1\vibe-d\source\vibe\http\session.d(81,11): vibe.http.session.Session.get(T)(string key, lazy T def_value = T.init)`

Oleg
14.06.2016
11:50:41
а get нет статическая функция

не*

ты должен указать тип

функция get — шаблонная

либо ты указываешь параметр по умолчанию (его тип используется), либо ты явно указываешь тип

Dmitry
14.06.2016
11:52:09
req.session.get!string("login"); ?

Oleg
14.06.2016
11:52:14
да

Google
Oleg
14.06.2016
11:52:28
либо вторым аргументом указываешь

req.session.get("login","");

Dmitry
14.06.2016
11:53:34
а что значит: lazy T def_value = T.init

Oleg
14.06.2016
11:54:09
когда ты передаёшь параметры в функцию они вычисляются сначала, а потом передаются

lazy позволяет вычислить только при необходимости

сейчас пример скину

Dmitry
14.06.2016
11:57:03
правильно ли я понимаю, что кроме имени юзера в параметры сессии я могу еще записать админ он или нет. Юзера я пишу вот так: req.session.set!string("login", _auth.user.login); Праивльно ли будет админа записать как-то так: req.session.set!string("isAdmin", true); ?

Oleg
14.06.2016
11:57:08
import std.stdio; int func() { writeln( "call func" ); return 42; } void foo( bool print, lazy int val ) { writeln( "start foo" ); if( print ) writeln( val ); writeln( "end foo" ); } void bar( bool print, int val ) { writeln( "start bar" ); if( print ) writeln( val ); writeln( "end bar" ); } void main() { foo( true, func() ); writeln(); foo( false, func() ); writeln(); bar( true, func() ); writeln(); bar( false, func() ); }

нет, не правильно

потому что ты выставляешь` bool` значение, а параметризируешь функцию string

Dmitry
14.06.2016
11:58:37
req.session.set!bool("isAdmin", true); так?

Oleg
14.06.2016
11:59:07
так, но опять же...

компилятор может сам вычислить T

req.session.set( "isAdmin", true );

второй параметр имеет тип bool, он сам вычислится

тебе нужно явно указывать его, если есть непонятки

req.session.set!float( "timeout", 2 );

потому что литерал 2 это int

Dmitry
14.06.2016
12:01:29
а.... ок понял

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

Oleg
14.06.2016
12:02:57
ты запусти пример и посмотри что и когда выводится на экран

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