kurkumakomar 08.02.2013 10:25 Gajim

расскажи про пгокамл макаку, а то оп того треда пидор и сосал

1. ojab 08.02.2013 10:35 YGG!

лол

2. kurkumaojab /1 08.02.2013 10:36 Gajim

чо лол?

3. ojabkurkuma /2 08.02.2013 10:37 YGG!

норм ава

4. kurkumaojab /3 08.02.2013 10:37 Gajim

спасяб)

5. komar 08.02.2013 10:47 thinkpad

Ну еба.
Есть OCaml — компилируемый язык.
Есть camlp4, который парсер, претти-принтер и еще целая куча недокументированных костылей. Что охуенно — умеет работать с окамловым AST. То есть ты не как лох программный код изменяешь, как с обычным препроцессором, а уже абстрактное синтаксическое дерево дергаешь.
На этой хуйне, значит, пытаются делать всякие расширения. Вот PGOcaml — одно из них.
Суть такова: при компиляции ты пихаешь в env координаты postgresql-сервера, и он ходит и смотрит в базе данных, правильно ли ты запросы написал. Если ты вызываешь не те колонки, или с типами проебался — ошибка в компайл-тайме.
Очень полезно при рефакторинге и при миграциях, например.
В PGOcaml есть, правда, один ебанизм, из-за которого его использовать чрезвычайно хуево: он выдает кортежи. А мне пропатчить некогда. Макака вроде выдает объекты, но я в нее не тыкал.

6. kurkumakomar /5 08.02.2013 10:49 Gajim

короч, хуйня какая-то, в пхп таких проблем нет

7. komarkurkuma /6 08.02.2013 10:49 thinkpad

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

8. kbkomar /7 08.02.2013 10:51 3b662f5e

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

Но более сложные штуки вроде неправильного GROUP BY — это мощь.

9. komarkb /8 08.02.2013 10:54 thinkpad

> подобные ошибки при инициализации можно проверить за нехуй
orly?

10. kurkumakomar /7 08.02.2013 10:55 Gajim

у меня валится только в процессе девелопмента, что не так?

11. kbkomar /9 08.02.2013 10:55 3b662f5e

да. sqlalchemy вообще умеет команду "построй мне модели из БД по такому-то адресу". думаю, дальше тебе фантазии хватит, как сравнить эти модели с моделями в файликах.

12. komarkb /11 08.02.2013 10:55 thinkpad

Блять, ты схему БД еще и в коде дублируешь?

13. kbkomar /9 08.02.2013 10:55 3b662f5e

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

14. kbkomar /12 08.02.2013 10:57 3b662f5e

я описываю модели, да. Что в этом плохого?

15. komarkb /13 08.02.2013 10:57 thinkpad

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

16. komarkb /14 08.02.2013 10:57 thinkpad

Модели или схему?

17. kbkomar /16 08.02.2013 10:58 3b662f5e

модели, из которых в том числе схема генерируется.

18. komarkb /17 08.02.2013 10:59 thinkpad

Можно тебя спросить: какое отношение твой ORM имеет к SQL’у?

19. komarkomar /18 08.02.2013 11:01 thinkpad

> SQLAlchemy is the Python SQL toolkit and Object Relational Mapper
Е-е-ебаный в рот.

20. kbkomar /18 08.02.2013 11:02 3b662f5e

ну, я тебе ответил на вопрос, что делаю я. Я описываю модели, а по ним генерируется схема и объекты бизнес-логики всякие, и привязываются друг к другу. Но если бы я не хотел использовать ORM, то описывал бы схему как-то так http://docs.sqlalchemy.org/en/rel_0_8/co... (user = Table...) явно, и по ней можно делать интроспекцию и проверять правильность колонок и так далее за нехуй шо.

21. komarkb /20 08.02.2013 11:02 thinkpad

Бля-я-ять.

22. kbkomar /19 08.02.2013 11:03

Что не так, собственно?

23. kurkumakb /22 08.02.2013 11:04 Gajim

объекты — это сложно!
объекты тормозят!

24. komarkb /22 08.02.2013 11:04 thinkpad

Меня интересует, какого мы говорим об ORM’е.

25. kbkomar /24 08.02.2013 11:06 3b662f5e

блять. Еще раз. SQLAlchemy состоит из двух частей: SQL Toolkit, способного без ORM всякого работать. В него входят описание и интроспекция схемы, построение схемы из реальной БД, очень гибкое собирание SQL-запросов и так далее (без строк и прочего говна). И есть слой ORM, который связывает описание схемы с обыкновенными питоньими объектами.

Короче ты тупой, там же всё написано.

26. kbkomar /19 08.02.2013 11:07

Python SQL toolkit *and* Object Relational Mapper. По отдельности, понимаешь?

27. kbkomar /24 08.02.2013 11:10 3b662f5e

даже на главной странице для тупых сделали две большие половины, в одной для ORM, в другой для SQL Toolkit.

28. komarkb /25 08.02.2013 11:12 thinkpad

Явно задаваемая в коде схема — это половина ORM’а.
Объясни теперь, с какого перепугу я должен дублировать схему еще и в коде, либо — упаси Боже — генерировать ее из петонового описания.

29. kbkomar /28 08.02.2013 11:21

это вообще к ORMу не имеет никакого отношения. Ты можешь эту схему сгенерировать на лету, да, и SQLAlchemy умеет это делать.

Почему считаю описание схемы в коде более хорошей вещью опишу позже. Заодно пока попредставляю, как вообще возможно подобным образом (хранить и лелеять "канонические БД, из которых схема читается", да еще и для каждой ветви разработки?) так можно работать.

30. komarkb /29 08.02.2013 11:23 thinkpad

> Ты можешь эту схему сгенерировать на лету, да, и SQLAlchemy умеет это делать.
> сгенерировать схему, взяв ее из базы данных
> проверить базу на соответствие с этой схемой

31. kbkomar /30 08.02.2013 11:25 3b662f5e

то, о чем я тебе говорю как раз о сравнении ручного описания. А фраза "ты можешь сгенерировать базу на лету" — попытка объяснить тебе тупому, что SQL Toolkit не требует описания схемы, и можно таким же извращенным образом как ты работать (хотя я до сих пор не понимаю нахуя).

32. komarkb /31 08.02.2013 11:35 thinkpad

> то, о чем я тебе говорю как раз о сравнении ручного описания.
Бля-я-ять.

33. kbkomar /32 08.02.2013 11:37 3b662f5e

о сравнении описания схемы БД в коде с состоянием самой БД для проверки соответствия полей и прочей хуйни. Что тебе, блять, снова неясно?

34. komarkb /33 08.02.2013 12:23 thinkpad

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

35. kbkomar /34 08.02.2013 12:34 3b662f5e

я не понимаю как это может быть удобно. У тебя ведь наличие БД с актуальной схемой (для каждой ветки) будет стаёт требованием. Ты БД с правильной схемой тоже в репозиторий кладёшь, или что? Или у тебя есть канонический дамп в секретной директории? (и при разработке в ветке с другой схемой ни дай бог потерять).

В общем, мне сложно представить как это может быть удобным (кроме случаев "быстренько написать относительно БД, в которой непонятно что толком"). Тут да, считал из БД её схему и поехал.

Ну и не понимаю претензии "дублировать". Если ты пишешь и правишь код только в одном месте, а уже из него происходят другие вещи (не ограничивающиеся генерацией схемы) — что в этом плохого? Ты же руками в двух местах схему не правишь.

36. kbkb /35 08.02.2013 12:35 3b662f5e

// будет стаёт — норм

37. 238328kurkuma /10 08.02.2013 15:34

не используешь кресты или лишп

38. rtsomekomar /5 09.02.2013 14:13

>конпелируется или нет в зависимости от от того что лежит пэже
охуенная задумка, чо

39. rtsomekomar /15 09.02.2013 14:13

хуйню сказал, при чём здесь интерпретация вообще?

40. komarrtsome /39 09.02.2013 14:17 thinkpad

При том, что пейтончеги с рубями исполняются построчно.
Ни AST, ни хуя не строится. Разве что классы кешируются.
В общем случае нет возможности узнать, что за запросы пойдут в БД.

41. komarkomar /40 09.02.2013 14:19 thinkpad

Собственно, вопрос #tishen был как раз на тему «а возможно ли по-человечески в интерпретируемом языке».

42. rtsomekomar /40 09.02.2013 14:28

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

43. komarrtsome /42 09.02.2013 14:32 thinkpad

> я тебе секрет открою: в общем случае нет возможности узнать, что за запросы пойдут в бд в любом тьюринг-полном языке.
В рамках использования под честное слово только специальных костылей для петушения SQL’а — можно в случае верблюдов и невозможно в случае петонорубёв.
> ссаном оверблде нихуя нет других средств метапогромированния
Да.
> ну и конечно же ничего не мешает петушить аст в интерпретируемых языках
Мешает.

44. komarkomar /43 09.02.2013 14:39 thinkpad

Расскажи, какими средствами петушона можно узнать на этапе инициализации, что какой-нибудь SQL’овый костыль будет вызываться и просить ложные колонки, вроде db.select('hui', pizda').from('djigurda')

45. rtsomekomar /44 09.02.2013 14:50

против такой постановки задачи ни один яп не устоит
с чего ты взял что колонки — ложные?

46. komarrtsome /45 09.02.2013 14:51 thinkpad

Еб твою мать. Мне проверить нужно, что все мои запросы — корректны. Желательно ДО того, как на них спотыкнется юзверь в продакшне. Как это сделать?

47. rtsomekomar /46 09.02.2013 15:01

не знаю, но знаю что у тебя — ложное ощущение жопной целостности
любое твое определение корректности имеет кучу шансов обосраться
но твоя sick obscession with practice of defencive programming through static compilation даёт тебе уютную иллюзию
не говоря уже о том что для неё сущётсвует куча альтернатив классических динамических языках

48. komarrtsome /47 09.02.2013 15:03 thinkpad

С таким уровнем дискуссии мне хочется тупо послать тебя нахуй. Объяснить, почему?

49. rtsomekomar /48 09.02.2013 15:05

лучше просто пошли

50. komarrtsome /49 09.02.2013 15:05 thinkpad

Я у плиты стою и занят, поэтому да, сходи нахуй.

51. rtsomekomar /50 09.02.2013 15:09

во-во, лучше борши вари
гормошки ещё начни упарывать, может что годное получится, я тебя в жены возьму тогда

Do you really want to delete ?