0xd34df00d 13.07.2012 05:29 Azoth_primary

Как выглядит расчет размера пиксмапа на плюсцах?
px.depth () * px.width () * px.height ();
А на сишечке?
fz_pixmap_components (MuCtx_, px) * fz_pixmap_width (MuCtx_, px) * fz_pixmap_height (MuCtx_, px);

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

Recommended by:

@pooq: моча съела говно

and @magog
1. m4n71k0r 13.07.2012 05:34

о, б-же, почему не

d * w * h;

ну или

px.d * px.w * px.h

???)

2. 0xd34df00dm4n71k0r /1 13.07.2012 05:35 Azoth_primary

Потому что так устроена кококо инкапсуляция в сишечке. Олсо, авторы mupdf так решили.

3. m4n71k0r0xd34df00d /2 13.07.2012 05:49

инкапсуляция ... в сишечке ...
объекты ... в сишечке ...
фабрики ... в сишечке ...

да они ёб-лись

4. 0xd34df00dm4n71k0r /3 13.07.2012 05:56 Azoth_primary

Да.

5. DZhonm4n71k0r /1 13.07.2012 06:31

А в C# бы так и выглядело, ибо есть properties, а вот плюсобоги соснули.

6. DZhonm4n71k0r /3 13.07.2012 06:33

В гейдеве модно придумывать свое ООП для C :)

7. 0xd34df00dDZhon /5 13.07.2012 06:33 Azoth_primary

В плюсах пропертиз пишутся на коленке за минуту.
А как бы это в хаскеле выглядело с Control.Arrow... Ох.

8. DZhon0xd34df00d /7 13.07.2012 06:35

И что, будет без макросов и с нормальным синтаксисом аля "доступ к полю" ?

9. magogDZhon /5 13.07.2012 06:37 Azoth@Work

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

10. DZhon 13.07.2012 06:37

Т.е. Q_PROPERTY я юзаю и сам, ага.

11. DZhonmagog /9 13.07.2012 06:39

Под проперти спрятаны геттеры и сеттеры, очевидно же. Которые вызываются неявно. Акромя того, проперти позволяют семантически выделить настраиваемую часть класса. Посмотри, как устроены те же плагины для QtDesigner.

12. 0xd34df00dDZhon /8 13.07.2012 06:41 Azoth_primary

Да. Вызов геттера при доступе на чтение (const) и сеттера на запись.

13. 0xd34df00dDZhon /10 13.07.2012 06:41 Azoth_primary

Уебищно.

14. magogDZhon /11 13.07.2012 06:42 Azoth@Work

все равно не понимаю, почему вы так писаетесь от них

15. DZhon0xd34df00d /12 13.07.2012 06:48

А ну-ка запали :)

16. DZhon0xd34df00d /13 13.07.2012 06:49

Кто спорит ?

17. DZhonmagog /14 13.07.2012 06:50

Никто не писается, здесь это онтопик.

18. 0xd34df00dDZhon /15 13.07.2012 06:51 Azoth_primary

Щя, нагуглю статеечку на кывте.

19. 0xd34df00dDZhon /16 13.07.2012 06:52 Azoth_primary

Я вообще не понимаю, нахуй они их так сделали.

21. magog0xd34df00d /20 13.07.2012 07:00 Azoth@Work

как-то оверхедно получается

22. 0xd34df00dmagog /21 13.07.2012 07:02 Azoth_primary

Што.

23. DZhon0xd34df00d /20 13.07.2012 07:02

Оверхэдненько, но мне нравится.

24. 0xd34df00dDZhon /23 13.07.2012 07:07 Azoth_primary

Не уверен насчет оверхеда. Компилеры нынче умные и заинлайнят тривиальные вещи.

25. DZhon0xd34df00d /24 13.07.2012 07:16

Указатели на функции заинлайнят ? 12 байт оверхэда памяти съедят ? Пруф или не было.

26. 0xd34df00dDZhon /25 13.07.2012 07:17 Azoth_primary

Память хуита. Указатели на функции иногда инлайнятся, по крайней мере, гцц. Пруфы сам гугли.

27. magog0xd34df00d /26 13.07.2012 07:18 Azoth@Work

>Память хуита
типичный личкрафтописатель (

28. kb0xd34df00d /24 13.07.2012 08:35

Компиляторы нанче умеют инлайнить вещи из других модулей? Например, если я в цикле 100000 раз сделаю printf, он у меня заинлайнится?

29. 0xd34df00dkb /28 13.07.2012 08:35 Azoth_primary

LTO. Могут и синлайнить.
Хотя, я не уверен, что принтф сам по себе инлайнится, varargs и хуе-мое все же.

30. kbmagog /14 13.07.2012 08:35

Особенно писаемся адовой злостью, когда что-то, являющееся property, начинает по сети делать запросы в БД.

31. 0xd34df00dkb /30 13.07.2012 08:36 Azoth_primary

Как будто простой геттер не может.
Олсо, а вот в функциональных языках такой проблемы нет по определению ;3

32. kb0xd34df00d /31 13.07.2012 08:36 c8541125

геттер — хотя бы видно, что это функция. короче считаю дурным тоном если property лезет за пределы объекта.

33. kb0xd34df00d /31 13.07.2012 08:37 c8541125

функциональные языки не умеют работать с базами данных?

34. 0xd34df00dkb /33 13.07.2012 08:37 Azoth_primary

Ваганыч, залогиньтесь.

35. kb0xd34df00d /34 13.07.2012 08:38 c8541125

ну объясни же, какой проблемы нету и почему

36. magogkb /33 13.07.2012 08:38 Azoth@Work

лол — в самую точку

37. 0xd34df00dkb /35 13.07.2012 08:39 Azoth_primary

Что геттер или свойство или еще что куда-то там полезет.
Все, что куда-то лезет во внешний мир и не является referetially transparent, по построению системы типов языка должно быть упихано в IO-монаду, а это ваще сразу видно.

38. kb0xd34df00d /37 13.07.2012 08:41 c8541125

при чем здесь вообще функциональные языки? это к типизации скорее отношение имеет. ну и, собственно, да, еще можно в исходники посмотреть и убедиться что оно куда-то лезет. вопрос-то в том, что это в любом случае сделать можно и это уёбищно (даже если написать большими буквами про IO-монаду).

39. 0xd34df00dkb /38 13.07.2012 08:43 Azoth_primary

Ты что ли вообще не понимаешь, что IO — unescapable?
А функциональщина притом, что я бы посмотрел на императивный чистый язык без сайдэффектов и с явно выделенным IO-подобием. Покажешь?

40. bormanDZhon /5 13.07.2012 08:43

В C# бы выглядело как px.Depth*px.Width*px.Height, что отличалось бы от плюсцов только отсутствием скобочек.

41. 0xd34df00d0xd34df00d /39 13.07.2012 08:43 Azoth_primary

В первой фразе имеется ввиду IO monad, а не ввод-вывод, есличо.

42. kb0xd34df00d /39 13.07.2012 08:47

Могу показать функциональный без IO-монад. Показать?

Ну и, собственно, от того, что я явно буду знать, что property будет куда-то лезть по сети — какая разница, узнаю я об этом из прочтения исходников, или из IO-монады? Какая разница, создавать костыли скрыто или явно?

43. 0xd34df00dkb /42 13.07.2012 08:48 Azoth_primary

Можно и лисп функциональным назвать, и что?

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

44. kb0xd34df00d /43 13.07.2012 08:52 c8541125

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

ну и, собственно, юнит-тесты всё равно писать придётся, когда вокруг тебя сплошные IO-монады (код, который я пишу, реально имел бы IO-монады практически везде, потому на мой взгляд выигрыш был бы минимальным, а вот в не-веб проектах с удовольствием ощутил бы преимущества от явного указания наличия сайд-эффектов)

45. 0xd34df00dkb /44 13.07.2012 08:55 Azoth_primary

Естественно. Я имел ввиду нормальную функциональщину с хорошей системой типов, позволяющей делать такие вещи.

Почти всегда можно инкапсулировать всю логику в чистую часть, а с внешним миром общаться из main, условно.

46. DZhonborman /40 13.07.2012 08:55

ReadOnly пропертя с геттером такого содержимого не ?

47. DZhonDZhon /46 13.07.2012 08:56

Конечно, смысла в ней мало, но сам подход.

48. kb0xd34df00d /45 13.07.2012 09:00 c8541125

> Почти всегда можно инкапсулировать всю логику в чистую часть, а с внешним миром общаться из main, условно.

вот нихуюшечки! конечно, каждый из нас хотел бы построить систему в виде "выбрал все необходимые входящие данные — запустил систему — на выходе получил набор сигналов для изменения БД и прочего IO", это было бы легче как юнит-тестировать, так и монадами обкладывать, абсолютно похуй, выигрыш и там и там был бы. но, по крайней мере для веба, это совершенно нереально (или сверх-дорого и ненужно).

49. 0xd34df00dkb /48 13.07.2012 09:00 Azoth_primary

Посмотри в сторону happstack, что ли.

50. kb0xd34df00d /49 13.07.2012 09:01

Зачем? Я говорю о вещах, не зависящих от языка или платформы.

51. 0xd34df00dkb /50 13.07.2012 09:01 Azoth_primary

А там интересный подход к этому всему. Правда, слишком много монад, я ниасилил.

52. kb0xd34df00d /51 13.07.2012 09:03

Подход, который я описал, описывали на каком-то переписывании какой-то биржи очень детально. Собственно, отсутствие IO у них там привело не только к тому, что охуенно всё тестируется, но и к тому, что вся эта система (биржи) работает в одном потоке! При этом в состоянии обслужить всю биржу за нехуй делать.

Но это биржи, умные дядьки, большие ресурсы на разработку и всё такое, а не веб-бомжи :)

54. kb0xd34df00d /51 13.07.2012 09:06 c8541125

как хаскель выучу — посмотрю обязательно

55. DJm00nDZhon /15 13.07.2012 10:02

у нас на проекте макрос есть
class Ololo
{
DEFINE_SIMPLE_STATE(SomeType, type, Type);
private:
SomeType type;
}

Вот сам макрос:

#define DEFINE_SIMPLE_STATE(type, vname, fname) \
public: \
inline type fname() const { return (type)vname; }; \
inline void fname(type _state) { vname = _state; }; \
private:

56. m4n71k0rmagog /9 13.07.2012 10:15

Property обычно не нужен. Обычно бывает нужна интроспекция и динамическое добавление публичных членов/методов (хотя это тоже можно посчитать за плохой дизайн), но так как это в плюсах невозможно просто, то и делают это через чёртовы Property

57. DZhonDJm00n /55 13.07.2012 11:09

Я просил без макросов, так и ежу понятно же.

Do you really want to delete ?