[00:18:40] <_valexey_> Так и знал что в SQL это можно :-)
[00:18:54] <_valexey_> Декларативненько.
[00:21:47] <_valexey_> Язык четвертого поколения
[00:59:13] <vlad2> Насыпал еще клевет про SQL :)
[00:59:49] <vlad2> Ждем alexus'а :)
[01:04:39] <_valexey_> :-)
[01:05:03] <_valexey_> А про гуглову базу даже клеветать не интересно
[01:05:32] <_valexey_> В доке сразу пишут что она ничего не может кроме хранения данных :-)
[01:05:59] <_valexey_> Ну и простеньких селектов.
[01:06:56] <_valexey_> Собственно там даже схемы нет
[01:07:38] <_valexey_> За консистентностью следит чисто внешний код сервера на каком нибудь питоне жабе или го
[01:07:54] <vlad2> Вот и я к тому иду - нефиг схему держать в базе.
[01:08:14] <vlad2> Все равно она толком с этой схемой ничего делать не может.
[01:08:21] <_valexey_> Гы
[01:08:52] <_valexey_> Но народ жестко критикует за это гугл
[01:09:17] <_valexey_> Типо дайте нам полноценную реляционку
[01:10:23] <_valexey_> А то с непривычки ломка :-)
[01:12:11] <vlad2> Возможно кому-то оно действительно надо. Я понял, что мне на надо :)
[01:13:26] <_valexey_> Просто когда начинаешь погружаться в SQL и строить свою базу с нуля, то хочется на SQL делать все больше и больше
[01:13:42] <_valexey_> Я сегодня на себе это испытал :-)
[01:14:32] <_valexey_> А потом декларативности уже не хватает и переходишь на расширизмы. Вроде pl/sql
[01:15:08] <_valexey_> Которые добавляют императивности чуть ли не до полноты по тьюрингу
[01:15:38] <_valexey_> И уже резко бросить не получится - будет ломка
[01:15:55] <_valexey_> На чем ораклы и живут :-)
[01:19:02] <vlad2> Угу :)
[01:22:08] <_valexey_> Да, pl/SQL тьюринг полный язык
[01:22:11] <_valexey_> Жесть
[13:47:36] <valexey > .
[16:09:16] <valexey > Структура для Google App Engine с одним полем counter:
[16:09:19] <valexey > java:
[16:09:28] <valexey > @PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Counter {
  @PrimaryKey
  @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
  private Long id;

  @Persistent
  private Integer count;

  public Long getId() {
    return id;
  }

  public Integer getCount() {
    return count;
  }

  // ...
}

[16:09:31] <valexey > python:
[16:09:37] <valexey > class Counter(db.Model):
  count = db.IntegerProperty()

[16:09:41] <valexey > Go:
[16:09:46] <valexey > type Counter struct {
    Count int
}

[18:02:33] <vlad2> Жаба, как всегда, на высоте ;)
[18:02:41] <valexey > э?
[18:02:57] <vlad2> По количеству кода :)
[18:02:59] <valexey > А, ты про джаву
[18:03:06] <vlad2> Ненужного :)
[18:03:10] <valexey > А то я на бота смотрю и пытаюсь понять что опять не так :-)
[18:03:35] <vlad2> Кстати, а почему жаба? На жабе писано?
[18:03:41] <valexey > По моему, самый чистый код у Go получается
[18:03:44] <ilovb> :)
[18:03:50] <valexey > Жаба писана на Аде
[18:04:05] <valexey > хез почему оно жаба. видимо от слова жаббер :-) (jabber)
[18:10:08] <shaggie> geniepro на вас нет
[18:10:26] <shaggie> он рассказал бы, на каком языке код чище
[18:11:37] <vlad2> Подозреваю, что хитрые атрибуты, которые привешены в жабовском варианте - дефолтовые для Go.
[18:16:50] <valexey > vlad2: не. они не дефолтовые. просто когда скармливаешь переменную данного типа какой-нибудь функции из состава GAE, то оно через рефлекшн смотрит что там унутре и трактует обычные Гошные типы так как ей нужно.
[18:17:23] <valexey > Соответственно если там есть какой-то тип с которым оно работать не может, то будет ошибка времени исполнения
[18:17:36] <valexey > А в жабе будет ошибка компиляции (скорее всего)
[18:18:21] <valexey > На самом деле в Go тоже можно аннотации прилеплять к полям структуры.
[18:18:41] <valexey > type TaggedStructExample struct {
    A int `datastore:"a,noindex"`
    B int `datastore:"b"`
    C int `datastore:",noindex"`
    D int `datastore:""`
    E int
    I int `datastore:"-"`
    J int `datastore:",noindex" json:"j"`
}

[18:18:46] <valexey > вот пример
[18:19:03] <valexey > это не расширизм gae'вский, это свойство языка
[18:19:18] <valexey > через rtti это все потом можно вытащить взад
[20:11:31] <valexey > ага. все же в других пакетах нельзя методы определять. то есть для не локальных типов