JPA EclipseLink oneToMany Derived Ids Fail

Question: Hello I'm trying to make an example of persistence of a OneToMany relationship in which I get the following error:
Exception Description: Invalid composite primary key specification. The names of the primary key fields or properties in the primary key class [entitys.OrderItemPK] and those of the entity bean class [class entitys.OrderItem] must correspond and their types must be the same. Also, ensure that you have specified ID elements for the corresponding attributes in XML and/or an @Id on the corresponding fields or properties of the entity class.

Note: I'm using EclipseLink and MySQL DB

The entities:
@Entity
public class CustomerOrder implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idOrder")
    private Integer idOrder;

    @Basic(optional = false)
    @Column(name = "orderText")
    private String orderText;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "customerOrder")
    private Collection<OrderItem> orderItemCollection;

    public CustomerOrder() {
    }
}

@Entity
@IdClass(OrderItemPK.class)
public class OrderItem implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected OrderItemPK orderItemPK;

    @Basic(optional = false)
    @Column(name = "itemDesc")
    private String itemDesc;

@Id
@ManyToOne(optional = false)
@JoinColumns({
    @JoinColumn(name="idOrder", referencedColumnName="idOrder"),
    @JoinColumn(name="ItemNumber", referencedColumnName="ItemNumber")
})
//@JoinColumn(name = "idOrder", referencedColumnName = "idOrder", insertable = false, updatable = false)
private CustomerOrder customerOrder;
    private CustomerOrder customerOrder;

    public OrderItem() {
        this.orderItemPK = new OrderItemPK();
   }
}

@Embeddable
public class OrderItemPK implements Serializable {
    @Basic(optional = false)
    @Column(name = "idOrder")
    private int idOrder;

    @Basic(optional = false)
    @Column(name = "itemNumber")
    private int itemNumber;

    public OrderItemPK() {
    }
}

The test Source:
public static void main(String[] args) {
    factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
    EntityManager em = factory.createEntityManager();

    em.getTransaction().begin();

    // Fill the items fileds
    OrderItem item = new OrderItem();
    item.setItemDesc("Item Text");

    // Fill the orders fields
    CustomerOrder order = new CustomerOrder();
    order.setOrderText("Order text");

    // Fill the relationship fields
    order.getOrderItemCollection().add(item);
    item.setCustomerOrder(order);

    em.persist(order);
    em.getTransaction().commit();
}

I have no idea what I'm doing wrong, any suggestions are welcome.
Comment: How are you setting the values within the OrderItem's OrderItemPK?  With these mappings, the idOrder needs to be set using the value from the referenced CustomerOrder manually, which I'm guessing you aren't doing.  You might want to look into JPA 2.0's derrived Ids, which allow you to specify the OrderItem.customerOrder relationship MapsId("idOrder") so that JPA handles setting the value for you.  Otherwise you need to persist your CustomerOrder and flush, obtain the idOrder value and set it in the OrderItem before it can be persisted.
Comment: Thanks, i'll check it. I was able to persist the object by setting the id in PK object, but i want to persist the object collection in one step.

I'll let you know how it was .-
Comment: Try IdClass but I did not succeed, I got another error, edit the post with the current state
Comment: Well. manged to solve the problem by using the annotation:     @OneToMany(mappedBy = "customerOrder", cascade = CascadeType.ALL)
    private Collection orderItemCollection;
Comment: What you posted is a mash up of a few things that are not meant to work together.  You use a PK class OR an embeddedId, not both, and if you have an EmbeddedId, you cannot mark other mappings as the ID - these should give you exceptions/warnings when the persistence unit loads.  If you are going to use an EmbeddedId class/mapping within your entity, use the mapsId annotation on your relationship - it tells JPA that your relationship will control one or more of the values within the embedded instance, so you do not need to manually set it.
Comment: Could you please show me how to set the entities to work with PK CLass?
Answer: Use MapsId in OrderItem:
@Entity
public class OrderItem implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected OrderItemPK orderItemPK;

    @Basic(optional = false)
    @Column(name = "itemDesc")
    private String itemDesc;

    @MapsId("idOrder")
    @ManyToOne(optional = false)
    @JoinColumn(name = "idOrder", referencedColumnName = "idOrder")
    private CustomerOrder customerOrder;
}

An alternative is to remove the embedded id and use an ID class:
@Entity
@IdClass(OrderItemPK.class)
public class OrderItem implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "itemNumber")
    private int itemNumber;

    @Basic(optional = false)
    @Column(name = "itemDesc")
    private String itemDesc;

    @Id
    @ManyToOne(optional = false)
    @JoinColumn(name = "idOrder", referencedColumnName = "idOrder")
    private CustomerOrder customerOrder;
}

public class OrderItemPK implements Serializable {
    //name of the relation in the entity, but same type as the CustomerOrder PK.
    int customerOrder;

    int itemNumber;

    public OrderItemPK() {
    }
}

Comment: Forgot that for the PKClass example, the OrderItemPK needs to replace the "private Integer idOrder;" with "private Integer customerOrder;".
Answer: Well i managed to solve the problem by removing idClass annotation and adding the @MapId
heres the final code:
@Entity
@Table(name = "Orders")
public class CustomerOrder implements Serializable {
  private static final long serialVersionUID = 1L;
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Basic(optional = false)
  @Column(name = "idOrder")
  private Integer idOrder;
  @Basic(optional = false)
  @Column(name = "orderText")
  private String orderText;

 @OneToMany(mappedBy = "customerOrder", cascade = CascadeType.ALL)
 private Collection<OrderItem> orderItemCollection;

 public CustomerOrder() {
 }

@Entity
@Table(name = "OrdersItems")
public class OrderItem implements Serializable {

  private static final long serialVersionUID = 1L;
  @EmbeddedId
  protected OrderItemPK orderItemPK;
  @Basic(optional = false)

  @Column(name = "itemDesc")
  private String itemDesc;

  @MapsId("idOrder")
  @ManyToOne(optional = false)
  @JoinColumn(name = "idOrder", referencedColumnName = "idOrder", nullable = false)
  private CustomerOrder customerOrder;

  public OrderItem() {
    this.orderItemPK = new OrderItemPK();
  }

@Embeddable
public class OrderItemPK implements Serializable {
  @Basic(optional = false)
  @Column(name = "idOrder")
  private int idOrder;
  @Basic(optional = false)
  @Column(name = "itemNumber")
  private int itemNumber;

  public OrderItemPK() {
  }

public static void main(String[] args) {

    factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
    EntityManager em = factory.createEntityManager();

    em.getTransaction().begin();

    // Fill the order item
    OrderItem item = new OrderItem();
    item.getOrderItemPK().setItemNumber(1);
    item.setItemDesc("Product Name");

    // Fill the order
    CustomerOrder order = new CustomerOrder();
    order.setOrderText("Testing");

    // Create relationship
    order.getOrderItemCollection().add(item);
    item.setCustomerOrder(order);

    // Persist
    em.persist(order);
    em.getTransaction().commit();
}

But i can't get it work with IdClass, here's the source
@Embeddable
public class OrderItemPK implements Serializable {

  @Basic(optional = false)
  @Column(name = "idOrder")
  private Integer idOrder;

  @Basic(optional = false)
  @Column(name = "ItemNumber")
  private Integer itemNumber;

  public OrderItemPK() {
  }

@Entity
@IdClass(OrderItemPK.class)
public class OrderItem implements Serializable {
   private static final long serialVersionUID = 1L;

   @Id
   @Column(name = "itemNumber")
   private Integer itemNumber;

   @Basic(optional = false)
   @Column(name = "itemDesc")
   private String itemDesc;

   @MapsId("idOrder")
   @ManyToOne(optional = false)
   @JoinColumn(name = "idOrder", referencedColumnName = "idOrder", nullable = false)
   private CustomerOrder customerOrder;

   public OrderItem() {
   }

  @Entity
  public class CustomerOrder implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idOrder")
    private Integer idOrder;

    @Basic(optional = false)
    @Column(name = "OrderText")
    private String orderText;

    @OneToMany(mappedBy = "customerOrder", cascade = CascadeType.ALL)
    private Collection<OrderItem> orderItemCollection;

    public CustomerOrder() {
        this.orderItemCollection = new ArrayList();
    }

Comment: the approved answer is probably not the best spot to post code that isn't working.  You are using MapsId which is used to point to an Id mapping rather then just marking the relationship as an ID.  You also need to change the OrderItemPK's idOrder to be called customerOrder.
Comment: @Chris Thank you very much for your help, I was finally able to run the example with the advice you gave me.
I have still a question ...
I find it much easier to use the MapsId annotations, but this type of annotation, seems not to work in a web environment (using GlassFish 4.1 and JTA) I get a null pointer exception
Comment: MapsId is not the problem and should work anywhere.  That said, I can't say what the root cause of the NPE (other then it should have nothing to do with mapsId) without more information.
Comment: I could find the fix to my problem. The problem was in the PK class, change the data type int to Integer and then the error appeared on the method hashCode(). Thank you very much for your help again


Click linha de uma Datatable jQuery e carregar uma página com informações do id

Question: Estou listando informações do meu banco de dados em uma Datatable com jQuery e até aí está tudo ok.
O que eu quero fazer é ao clicar na 'row' da Datatable carregar naquela div todas as informações daquele ID que foi apresentado na tabela. Um exemplo do que quero fazer é tipo o gmail que aparece os emails na forma de lista e quando a pessoa clica carrega ele.
Como consigo fazer isso com uma Datatable?
Estou exibindo 10 itens na primeira página da tabela e, quando clico na linha, exibe a linha que eu quero. O problema é quando eu vou para a segunda ou terceira página e clico na linha o alert do JavaScript não funciona.
$(function() {
     var oTable = $("#tabelaaberto").dataTable({

        "oLanguage": {

            "sEmptyTable": "Nenhum registro encontrado",
            "sInfo": "Exibindo de _START_ até _END_ no total de _TOTAL_ registros.",
            "sInfoEmpty": "",
            "sInfoFiltered": "(Filtrados de _MAX_ registros)",
            "sInfoPostFix": "",
            "sInfoThousands": ".",
            "sLengthMenu": "_MENU_ resultados por página",
            "sLoadingRecords": "Carregando...",
            "sProcessing": "Processando...",
            "sZeroRecords": "Nenhum registro encontrado.",
            "sSearch": "Pesquisar: ",
            "oPaginate": {
                "sNext": "Próximo",
                "sPrevious": "Anterior",
                "sFirst": "Primeiro",
                "sLast": "Último"
            },
            "oAria": {
                "sSortAscending": ": Ordenar colunas de forma ascendente",
                "sSortDescending": ": Ordenar colunas de forma descendente"
            }
        }
    });

    $(document).ready(function(e) {

        $("#tabelaaberto tbody td").on('click',function(){
            var nTr = $(this).parents('tr')[0];
            var aData = oTable.fnGetData(nTr);
            alert(aData[0]);

        });
    });
});

Comment: @brasofilo Não é duplicata, pois esta pergunta é especificamente sobre o plugin DataTables
Comment: Decerto você terá que escrever algum `JavaScript` para detectar o clique e usar `Ajax` para carregar novos dados sob demanda. Você está familiarizado com isso? Na sua pergunta, faltou colar o link de exemplo.
Comment: Por favor, inclua o código do que você conseguiu fazer até aqui. Você está montando toda a `` e depois inicializando o plugin? Ou está usando a opção de puxar os dados por AJAX?
Answer: Amigo, você está utilizando o JQuery DataTables OK?? DataTables
Como não tem muitos detalhes na sua pergunta, presumo que seja apenas para exibir as informações, mas caso não seja é fácil de alterar. Já terá o caminho das pedras.
Irei exibir as informações em uma Dialog sobre o DataTable.
Você terá que fazer o seguinte, no DataTables existe a função de fnDrawCallback. Dentro dele teremos o código que você quer executar.
Que será algo semelhante a isto:
oTable é como declarei minha dataTable, basta alterar para a sua.
"fnDrawCallback" : function() {
    $('td.readonly').on('click', function (e) {

        var INFO_01 = oTable.fnGetData($(this).parents('tr')[0])[0];
        var INFO_02 = oTable.fnGetData($(this).parents('tr')[0])[1];
        var INFO_03 = oTable.fnGetData($(this).parents('tr')[0])[2];
        var INFO_04 = oTable.fnGetData($(this).parents('tr')[0])[3];

          dialog = $( "#users-contain" ).dialog({
          autoOpen: false,
          height: 500,
          width: 'auto',
          title: "Infos",
          modal: true,
          open: function( event, ui ) {

              $("#users tbody").empty();

             $( "#users tbody" ).append( "
" +
                  "" + INFO_01 + "	" +
                  "" + INFO_02 + "	" +
                  "" + INFO_03 + "	" +
                  "" + INFO_04 + "	" +
                  "
" );

          },
          close: function( event, ui ) {
              $("#users tbody").empty();
           },
          buttons: {
            "OK": function(){
                dialog.dialog( "close" );
            },
            Cancel: function() {
                dialog.dialog( "close" );
            }
          }
        });

          dialog.dialog("open");
  } );
}

Além de que precisamos de um HTML para criar a DIV a ser exibida.

Dados:

                INFO_01
                INFO_02
                INFO_03
                INFO_04

Espero ter ajudado, qualquer coisa posta aí.
--------------- Novo fonte -----------------
$(function() {
     var oTable = $("#tabelaaberto").dataTable({

        "oLanguage": {

            "sEmptyTable": "Nenhum registro encontrado",
            "sInfo": "Exibindo de _START_ até _END_ no total de _TOTAL_ registros.",
            "sInfoEmpty": "",
            "sInfoFiltered": "(Filtrados de _MAX_ registros)",
            "sInfoPostFix": "",
            "sInfoThousands": ".",
            "sLengthMenu": "_MENU_ resultados por página",
            "sLoadingRecords": "Carregando...",
            "sProcessing": "Processando...",
            "sZeroRecords": "Nenhum registro encontrado.",
            "sSearch": "Pesquisar: ",
            "oPaginate": {
                "sNext": "Próximo",
                "sPrevious": "Anterior",
                "sFirst": "Primeiro",
                "sLast": "Último"
            },
            "oAria": {
                "sSortAscending": ": Ordenar colunas de forma ascendente",
                "sSortDescending": ": Ordenar colunas de forma descendente"
            }
        },
        "fnDrawCallback" : function() {
            $('#tabelaaberto tbody td').on('click', function (e) {

                var INFO_01 = oTable.fnGetData($(this).parents('tr')[0])[0];
                var INFO_02 = oTable.fnGetData($(this).parents('tr')[0])[1];
                var INFO_03 = oTable.fnGetData($(this).parents('tr')[0])[2];
                var INFO_04 = oTable.fnGetData($(this).parents('tr')[0])[3];

                alert("INFO 1: " + INFO_01 + "INFO 2: " + INFO_02 + "INFO 3: " + INFO_03 + "INFO 4: " + INFO_04);

          } );
        }
    });
});

Comment: Poderia me ajudar com a pergunta que fiz abaixo ?
Comment: @PedroA. Adiciona o `"fnDrawCallback"` a seu exemplo... Logo abaixo do `"oAria"`, que ira funcionar perfeitamente.
Comment: @PedroA. Adicionei o novo fonte a resposta... direto ao seu método. De uma olhada. Qualquer coisa grita aí.
Comment: Fernando, não da certo da sua forma. Estou usando essa template aqui http://almsaeedstudio.com/AdminLTE/ e para comunicar com o banco JSP.
Comment: @PedroA. Aqui funciona, mas no CLICK utilizo `$('td.readonly').on('click', function (e) {` Adiciono Classes as colunas usando o `"aoColumns" : [            {              "sClass" : "readonly",              "sTitle": "ID",              "aTargets": [0]             } ]`. Tentou debugar? Aparece algum erro?
Comment: Entao eu tenho uma página home.jsp que contém todo o menu do sistema (link que te passei acima). Ai quando mando carregar com ajax na div do centro ocorre perfeitamente, ou seja, busca na tabela, paginação tudo funcionando.
Quando tendo seleciona uma linha na primeira pagina funciona tudo certo, o problema acontece quando cliclo em uma linha da segunda ou superior página da tabela não exibindo o alert. Não sei se entendeu o meu problema ?
Comment: Sim sim. Entendi. Estranho, se dispara na primeira deveria funcionar nas demais... Pois é só uma referencia. No exemplo que montei aqui para teste funciona perfeitamente. Nas minhas DataTables só faço assim, abrindo as infos em uma Dialog.
Comment: Fernando, se você puder me dar uma força hora que tiver com tempo nesse link aqui tem o exemplo que estou utilizando a tabela. http://www.almsaeedstudio.com/. Tente colocar o modo que você faz e ve se funcionar e rapidinho. No menu do exemplo e a "Data tables". Valeu desde já pela força.
Comment: @PedroA. Está funcionando da maneira que te mostrei. Baixei aqui o exemplo do site que você passou, e implementei rapidamente. Segue o link: http://jsfiddle.net/xsy2vh9t/
Comment: A.W, consegui vou resolver eu estava esquecendo de passar o nome da tabela correto. Obrigado pela ajuda!
Comment: Por nada. Qualquer coisa posta aí.


Find difference (recent value - value prior to the most recent datetime) in SQL

Question: For the table t1 given in picture below,
how to find the PurchaseAmount Diffenrece for each UserID, ProductID pair in sql?
difference = most recent value - value prior to the most recent datetime
This is just a part of the larger data and the PurchaseTime contains more datetime for the UserID, ProductID pair

The end result would be something like the following:
Comment: Edit your question and show the results you expect.  Also, tag with the database you are really using.
Comment: Please [edit] your question to clarify your question including: tagging the question with the name of the RDBMS you are using; and an explanation of how you calculate the delta (is it `MAX - MIN` or is it `LATEST - EARLIEST` or something else?)
Answer: You can use LEAD and ROW_NUMBER analytic functions:
SELECT userid,
       productid,
       purchasetime,
       DeltaPurchaseAmount
FROM   (
  SELECT userid,
         productid,
         purchasetime,
         productamount
           - LEAD( productamount, 1, 0 ) OVER (
               PARTITION BY userid, productid
               ORDER BY purchasetime DESC
             )
           AS DeltaPurchaseAmount,
         ROW_NUMBER() OVER (
           PARTITION BY userid, productid
           ORDER BY purchasetime DESC
         )
           As rn
  FROM   table_name
)
WHERE rn = 1;

Which, for the sample data in Oracle:
CREATE TABLE table_name ( userid, productid, purchasetime, productamount ) AS
SELECT 1001, 901, DATE '2021-01-12', 100 FROM DUAL UNION ALL
SELECT 1001, 901, DATE '2021-01-11',  75 FROM DUAL UNION ALL
SELECT 1001, 905, DATE '2021-01-12', 150 FROM DUAL UNION ALL
SELECT 1001, 905, DATE '2021-01-11', 100 FROM DUAL UNION ALL
SELECT 1001, 999, DATE '2021-01-12', 100 FROM DUAL UNION ALL
SELECT 1002, 901, DATE '2021-01-12', 220 FROM DUAL UNION ALL
SELECT 1002, 905, DATE '2021-01-12', 215 FROM DUAL UNION ALL
SELECT 1002, 905, DATE '2021-01-11', 200 FROM DUAL UNION ALL
SELECT 1002, 999, DATE '2021-01-12', 250 FROM DUAL UNION ALL
SELECT 1002, 999, DATE '2021-01-11', 100 FROM DUAL;

(Dates at midnight were used for simplicity, however it will still work when the times are not midnight.)
Gives:

USERID | PRODUCTID | PURCHASETIME        | DELTAPURCHASEAMOUNT
-----: | --------: | :------------------ | ------------------:
  1001 |       901 | 2021-01-12 00:00:00 |                  25
  1001 |       905 | 2021-01-12 00:00:00 |                  50
  1001 |       999 | 2021-01-12 00:00:00 |                 100
  1002 |       901 | 2021-01-12 00:00:00 |                 220
  1002 |       905 | 2021-01-12 00:00:00 |                  15
  1002 |       999 | 2021-01-12 00:00:00 |                 150

db<>fiddle here
Answer: I think this should work:
Select UserId, ProductID, Max(PurchaseAmount) - Min(PurchaseAmount) AS Delta
From t1
Group By UserId, ProductID

Comment: I forgot to mention there are more dates involded in the real data..


Redundâncias no banco de dados são sempre indesejáveis?

Question: Estou desenvolvendo um sistema que mantém um registro de todas as movimentações financeiras ocorridas em uma conta bancária (partidas simples). Há uma redundância no meu modelo de dados: uma tabela saldo_conta mantém uma lista de datas e saldos para uma determinada conta, e outra tabela movimentacao_financeira mantém uma lista de entradas e saídas para uma determinada conta. Essas tabelas são redundantes, pois as informações de uma poderiam ser computadas a partir dos dados da outra (na realidade, existe uma pequena diferença, como será explicado adiante).
Entretanto, essa redundância já se mostrou útil no passado: devido a um bug na interface de usuário, vários lançamentos foram registrados com o valor errado. Porém o bug não afetou a outra tabela, de modo que fiquei com duas tabelas com históricos discrepantes. Uma vez determinado qual deles estava correto (e após ter corrigido o bug, naturalmente), foi uma simples questão de executar um script para recalcular os valores da tabela incorreta com base nos da outra.
Apesar disso, não estou 100% convencido que manter essa redundância é a maneira mais correta de se fazer a modelagem. Quero que meu sistema seja robusto, e não sei como faria essa recuperação de erro se não fosse pela redundância (os logs não guardam informações detalhadas sobre os lançamentos), acho que teria de conferir manualmente cada um deles com os relatórios bancários anexados [em formato de imagem]. Mesmo assim, tenho essa "noção pré-concebida" de que é uma má prática, só que me faltam argumentos objetivos para orientar minha decisão.
É sempre ruim manter redundâncias num modelo de dados relacional? E se a resposta for "sim", haveria uma maneira alternativa de se prevenir quanto a bugs que possam afetar os dados mais importantes? (i.e. simplificar a recuperação em caso de erros)

Atualização: um pouco mais de background no meu caso específico - a tabela movimentacao_financeira contém uma lista de transações iniciadas mas não necessariamente confirmadas. Um exemplo seria a emissão de um cheque: o dinheiro já foi "gasto" (no sentido que já está provisionado, não pode ser usado para mais nada), mas enquanto o cheque não for descontado ele ainda não consta dos registros bancários. Já a tabela saldo_conta registra os saldos já conciliados, ou seja, aquilo que aparece no extrato. Há uma relação N x 1 entre essas tabelas - pois várias transações individuais podem ser confirmadas por uma única conciliação bancária.
A redundância está em se armazenar o saldo nessa segunta tabela - uma vez que ele poderia ser computado como a soma de todas as transações já confirmadas até então. Entretanto, há uma diferença semântica: o saldo registrado nessa tabela deve ser exatamente o saldo registrado no extrato bancário - pois se o valor computado (i.e. soma das transações anteriores) for diferente daquilo que consta no extrato, alguma coisa está errada, e é preciso chamar a atenção para o fato (essa verificação é feita durante a conciliação, mas se no futuro forem registrados novos lançamentos no passado podem ser introduzidas discrepâncias - e sem meios de detectá-las [se o valor redundante não estiver presente]).
Answer: Redundância de dados é admissível em dois casos:
Performance
É comum em um banco de dados projetado para grandes cargas terem alguns dados redundantes, para que sejam evitados alguns JOIN's em SELECT's, veja um exemplo:
Imagine que estamos montando um clone do StackOverflow, uma tabela resposta poderia conter também os dados do usuário que respondeu, como por exemplo seu nome e username então quando formos montar a interface do usuário. não precisaríamos fazer um select adicional na tabela de usuários para mostrar as respostas, apenas uma tabela base, a tabela respostas.
Claro esse é um exemplo ilustrativo, não é muito viável no mundo real. mas a idéia é basicamente essa.
Escalabilidade
Em cenários de dados volumosos, é comum quebrarmos a normalização padrão dos bancos de dados para que possamos tornar o sistema viável, basicamente, o exemplo acima de encaixa nesse contexto, mas vamos ver outro.
Imagine que devemos mostrar o histórico de movimentação bancária, a mesma se chama historico e os dados das contas são armazenados em uma tabela chama contas, seguindo as regras de normalização desenharíamos algo do tipo
Tabela conta
id - inteiro / auto incremento
numero_conta - inteiro
dv - inteiro
nome_correntista - varchar
sobrenome_correntista - varchar
cpf = varchar

Tabela historico
id - inteiro
debito_credito - booleano
valor - double
conta_id - inteiro

Para exibir as transações, exibindo número da conta e movimentação, faríamos a seguinte query:
SELECT historico.id,
       historico.debito_credito,
       historico.valor,
       contas.numero,
       contas.dv
FROM historico JOIN contas on contas.id = historico.conta_id

Veja que utilizamos duas tabelas, e em um sistema distribuido isso seria um pouco demorado pra carregar, se tivermos a redundância dos dados conta.numero e conta.dv poderíamos fazer essa SELECT em apenas uma tabela:
Estrutura de historico
id - inteiro
debito_credito - boolean
valor - double
conta_id - inteiro - chave estrangeira
conta_numero - inteiro
conta_dv - inteiro

Então poderíamos fazer a query da seguinte forma:
SELECT
    id,
    debito_credito,
    valor,
    conta_id,
    conta_numero,
    conta_dv
FROM
    historico

E então teríamos um ganho significativo de performance.
Segurança dos dados
Não, fazer redundância dos dados em tabelas não é uma forma de manter seus dados seguros, o caso descrito foi uma exceção, em uma base de dados em produção você deve ter técnicas e ferramentas que façam backups consistentes, versionados e de fácil recuperação em caso de falhas.

Nota 1: Apenas dados imutáveis devem ser redundantes, pois se os dados mudarem na tabela principal, no nosso caso contas os dados ficariam inconsistentes na tabela historico.
Dados Como número da conta e dígito verificador não sofrem alterações, porem o sobrenome pode ser alterado digamos por um casamento.
Não é regra, mas o esforço de sincronizar depois vai ser maior que o ganho de performance.

Nota 2: Os exemplos dados foram para fins didáticos, não desenhe seu banco com movimentações financeiras da forma descrita nessa resposta.
Comment: +1 Gostei da observação sobre segurança.
Comment: @mgibsonbr a questão é que os dados não seguem uma tabela mestre, as tabelas tem aparentemente o mesmo nível hierarquico, existe uma tabela mestre que possa servir de referência?
Comment: exatamente @mgibsonbr, como citei na resposta, dados que sofrem mutação devem preferencialmente não ser redundantes, para evitar problemas de consistência, porem não é regra geral, existem exceções
Comment: Muito boa a resposta, mas acho que você me interpretou mal em relação à "segurança dos dados". O problema não é "restaurar o banco para um estado anterior", para isso de fato a solução são backups periódicos (e rotineiramente **verificados**, é claro). O que aconteceu foi que os dados entrados em uma das tabelas ficaram incorretos, e isso só foi detectado dias depois (pois demorou pra discrepância entre os saldos ficarem aparentes). Nesse cenário, permanece a questão - como fazer a recuperação desse erro, além de manualmente verificar cada transação.
Comment: @hernandes Não, o propósito original era que uma armazenasse transações iniciadas (ex.: passar um cheque) e outra armazenasse transações confirmadas (ex.: o cheque compensou). De certo modo, a segunda pode ser considerada "mestre" - pois após a conciliação bancária todos (`N`) os lançamentos que apareceram no extrato são associados com o (`1`) novo saldo da conta na data do extrato. Agora que li sua indagação, percebi que de fato não é a **tabela** que é redundante, apenas uma única coluna (`saldo`). Vou editar a pergunta para tornar isso mais claro.
Answer: TL;DR
Participando do desenvolvimento de um sistema financeiro usado por várias instituições, dentre elas um banco de uma montadora de carros muito famosa mundialmente, minha equipe decidiu eliminar a tabela de saldos em detrimento de queries de alto desempenho usando a função de agregação SUM para calcular sempre o saldo em tempo real.
Background
Na ocasião, fomos "presenteados" com um sistema legado que iríamos migrar para a plataforma Java. O sistema gerava movimentações diárias e armazenava os saldos anteriores (D-1) para tentar melhorar o desempenho.
Porém, como todo sistema legado, ele era cheio de bugs que a equipe original simplesmente não conseguia corrigir. Um dos piores era a geração, em dias aparentemente aleatórios, de saldos incorretos para algumas contas. Como o sistema confiava no saldo anterior para realizar os cálculos futuros, o erro persistia e se acumulava nos dias subsequentes. Corrigir o problema era sempre complicado pois era necessário rastrear todo o histórico para verificar onde estava a causa inicial.
Além disso, a tabela de saldos continha registros somente nos dias em que houvesse alguma movimentação, então fazer o join agregava sempre certa complexidade nas consultas, pois era necessária recuperar o saldo cuja data era a máxima e menor que a atual. O saldo final era calculado somando-se o último saldo com a movimentação do dia corrente no sistema.
Veja um exemplo em SQL Server:
select
    isnull((
        select sum(m.valor_movimento * CASE WHEN m.debcred = 'CREDITO' THEN 1 ELSE -1 END)
        from movimentacao m
        join composicao c
            on c.tipo_movimento = m.tipo_movimento
            and c.cod_saldo = ?
        where m.data_contabil = ?
          and m.status = 1 -- ativa, isto é, não estornada
    ), 0)
    +
    isnull((
        select valor_saldo
        from saldo
        where cod_saldo = ?
          and data_saldo = (
              select max(data_saldo)
              from saldo s2
              where s2.data_saldo < ?
                and s2.cod_saldo = saldo.cod_saldo
          )
    ), 0)

Um dos desafios que tínhamos pela frente é que novos clientes estavam adquirindo esse sistema e as operações financeiras atualmente gerenciadas por concorrentes seriam migradas para o nosso sistema. A estimativa inicial do maior cliente era a migração de 20 mil operações, com 48 a 120 parcelas cada uma, sendo que cada parcela gera movimentação diária de apropriação, só para citar um dos casos.
A solução que adotamos
Fizemos vários testes no SQL Server (2005+) e Oracle (9i+) e chegamos à conclusão que, se tivéssemos os índices necessários, executar um SUM na tabela de movimentação e simplesmente ignorar a tabela de saldos não afetava negativamente o desempenho. Pelo contrário, isto facilitou a criação de queries mais robustas e  comandos INSERT INTO () SELECT que nos permitiam atuar nas milhares de operações de uma só vez.
Só para se ter uma ideia, havia ainda várias rotinas batch que confiavam em "caches" de informação de vários tipos (juros, dias úteis, etc.), pois em tese isso seria mais rápido que fazer o cálculo online. Procuro não criticar muito a equipe anterior, afinal foi o que ensinaram para mim também. Porém, quando executamos o batch de migração, verificamos que migrar as 20 mil operações do cliente iria levar aproximadamente duas semanas num servidor top de linha. Após realizarmos otimizações com queries robustas e índices adequados ao invés de confiar em "tabelas de cache", o tempo caiu para 20 minutos, aproximadamente. Obviamente isso demandou vários dias de trabalho reescrevendo dezenas de procedures e functions, mas valeu muito a pena.
Além dos índices, criamos uma coluna numérica na tabela de movimentação cujo valor seria 1 para crédito e -1 para débito. Na verdade, não foi exatamente na tabela de movimentação, pois o sistema possuía uma outra tabela de composição de saldos, que nos permitia criar diferentes tipos de saldos contábeis sem alterar o sistema, de acordo com o tipo das movimentações.
A forma mais robusta que usamos para, finalmente, calcular o saldo ficou mais ou menos assim:
select isnull(sum(m.valor_movimento * c.debcred_int), 0)
from movimentacao m
join composicao c
    on c.tipo_movimento = m.tipo_movimento
    and c.cod_saldo = ?
where m.data_contabil <= ?
and m.status = 1 -- ativa, isto é, não estornada

Gostaria de postar mais exemplos, mas não tenho essas queries à mão e a resposta já está meio longa.
Conclusão
Dentro do nosso contexto, fazer o cálculo através de soma foi mais eficiente, aumentou a flexibilidade para realizar operações em massa e simplificou o desenvolvimento.
Uma das principais desvantagens dessa abordagem seria em sistemas onde o foco maior é em preservar dados históricos. Contadores em geral gostam de tabelas onde eles possam enxergar os dados "crus" e eles não gostam da possibilidade de uma movimentação afetar dados "no passado". Na verdade, eles preferem que o sistema continue calculando valores incorretos no passado e somente o presente seja corrigido. Algumas ocorrências que tivemos nesse sentido foram em relatórios e, nesses casos, criamos tabelas históricas, mas sem afetar o núcleo do sistema.
Além disso, para volumes de dados muito maiores, imaginando agora a movimentação de uma grande instituição como Itaú, Bradesco, Banco do Brasil, essa solução seria inviável.
Mas a questão aqui é se vale ou não a pena adicionar tal complexidade em sistemas que não tem tal escala. Um dos argumentos é que devemos pensar no futuro, com o qual eu concordo em parte. Mas será que se uma grande instituição financeira adquirisse um sistema desses isso não demandaria uma série de alterações? Vale a pena gastar esforço otimizando e criando funcionalidades para, talvez, um dia, quem sabe, usarmos esses recursos?
Comment: Note que minha resposta tem foco no caso específico citado na pergunta. É lógico que a quebra da normalização é importante em alguns casos, como bem explicado pelo @hernantes na outra resposta.
Comment: Concordo, a existência de dois tipos de registros tem trazido problemas semelhantes no meu projeto também. Bom saber que é possível calcular o saldo através de um `SUM` com performance boa, isso era uma preocupação minha também (além da questão da recuperação de erro, que infelizmente não foi abordada em nenhuma das respostas...).
Answer: Manter o seu banco de dados com todos os dados não repetidos, etc., é chamado de normalização, e existem "5 formas normais"
O processo inverso, que você descreve, é a desnormalização: tentar otimizar um banco de dados em relação à sua performance, em regra.
Sobre desnormalização, a Oracle comenta (fonte em ingles):

Considere a desnormalização como último recurso para melhorar o desempenho do sistema
Para melhorar o desempenho, a desnormalização deve ser feita durante o design do banco de dados
a desnormalização sempre implica em aumento de código

Sobre a última, pense que sempre será necessário manter uma integridade no código, se ela não é mantida no Banco de Dados ou por triggers.
As formas mais comuns de desnormalizar os dados são (para a mesma fonte acima):

armazenar valores derivados: guardar o saldo final, guardar saldos diários, guardar saldos anuais, etc.
manter detalhes com a tabela mestre: quando há um esquema de tabelas mestre-filha, sendo que apenas um valor é armazenado na filha. Você poderia armazenar o valor direto na tabela mestre, desde que cuide que os updates sejam feitos sempre em todos os registros
valores codificados: ou valores hard-coded: ao invés de armazenar valores no banco, você coloca alguns valores na aplicação. Sim, isto é desnormalizar :)
chaves para tabelas "netas" : se o seu banco de dados possui muitos níveis de mestre -detalhes - detalhes dos detalhes, pode ser interessante manter uma chave fazendo um curto-circuito entre a mestre e a tabela de detalhes que for mais consultada, evitando um join na pesquisa
datas derivadas: quando você quer fazer uma pesquisa por datas que esteja entre um intervalo início - fim, e a data de fim é calculada a partir da data de início, pode ser mais rápido você já deixar a data fim calculada e fazer uma pesquisa usando um between

Conclusão: a normalização de banco de dados existe para garantir que os dados são consistentes, relacionados, etc. Isto é feito a um custo de performance. Em determinados casos poderá valer a pena você deslocar este tempo para a inserção (ou seja, o seu insert é mais complexo, ou a aplicação tem que ter mais código no inserção dos dados), fazendo com que a recuperação dos dados depois seja mais rápida. E a chave para mensurar isto é a quantidade de vezes que um dado é inserido e a quantidade de vezes que o mesmo dado é recuperado depois.
Comment: Obrigado pelas informações, vou estudá-las. Quanto à "complexidade na inserção", felizmente no meu caso particular isso não é problema - a tabela das "entradas e saídas" é populada à medida que as transações são feitas (ex.: passei um cheque), enquanto a tabela dos "saldos" é populada no momento da conciliação bancária (ex.: o cheque foi descontado, tá aqui no extrato). Porém, tenho consciência que mesmo isso poderia ser feito de forma normalizada (como outros sistemas semelhantes ao meu o fazem).


Is there a way to disable cache only for a single template file?

Question: For my view I need to update my fields dynamically, for this reason I need to disable cache for views-view-field.html.twig, as it takes the parameter from a contextual filter.
I send an argument from template_preprocess_views_view_field() to the template file.
I know how to disable the caching of template files for developers, but I cannot use it on the production system, as it may affect the performance. So the issue for me is disabling the cache only for a single template.
Answer: I believe you can use the value of your field to set a custom cache tag in your view, that should invalidate the cache whenever your field value changes.
template_preprocess_views_view_field(&$variables) {
  $view = $variables['view'];
  $parameter = 'my_custom_field_that_is_sent_as_argument_to_twig';
  $view->element['#cache']['tags']['custom_parameter:' . $parameter];
}


Failure [INSTALL_FAILED_VERSION_DOWNGRADE] on real device

Question: I'm trying to run my custom launcher3 apk from my android studio to onePlus mobile phone.Its API level is 23. this app works fine Up to level 22 but always getting error Failure [INSTALL_FAILED_VERSION_DOWNGRADE] on API level 23 and shows popup that uninstall the existing app. and infect this apk is not already installed. and when i tried with pressing OK button the it shows DELETE FAILED INTERNAL ERROR . I'm not getting the any solution. please help me. I tried to change the versionCode, VersionName API Level etc. but no solution. here is my gradle file

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    defaultConfig {
        applicationId "com.android.launcher3"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName '1.0'
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile project(':wallpaperpick')
    compile 'com.github.yukuku:ambilwarna:2.0.1'
    compile 'com.android.support:support-v4:24.0.0-alpha1'
}
Comment: do you have multiple accounts on this device? May be there is already installed app on one of them
Comment: Try to uninstall App manually in your real device and try to run again.
Comment: no sir
not any other account or installation
Comment: In your manifest increase the versionCode of new app, its not the issue of api level
Comment: not worked for me. or tell me what should enter new code ?
Answer: Try adb install -r -d ${YOUR_APK_FILE_PATH} to install.
Answer: Uninstall app from all the users before installing it again.
for Example:
Normal mode,
Guest user mode,
And also from work profile if it is in your phone.
After this app will install successfully.
I hope this will help.


How to create dynamic query for inner join on same table?

Question: I want a dynamic query to do inner join on same table.
My query is:
SELECT t1.table1 FROM table1 t1 INNER JOIN table2 t2 ON t1.id = t2.id AND t1.name = t2.name"

I want to join table1 and table2 based on id and name present in table2.
What is the equivalent dynamic query in Drupal for this?
How this can be achieved?
Answer: $query = db_select('table1','t1');
$query->join('table2','t2','t1.id1=t2.id2');
$query->fields('t1', array('some fields'))
      ->fields('t2', array('some fields'));
$result = $query->execute()->fetchAll();

Then you can do print_r stuff into $result like
echo "
";print_r($result);echo "
";

If you have devel module installed and enabled, then you can also use:-
dsm($result);

This will give the whole result in form of array.
If you need in form of object, then you need to modify few lines of code like this:-
$data = $result->execute();
while($result = $data->fetchObject()){
  //Do your related stuff
}

I think it will help a lot. Thanks.
Comment: Thanks @DeepakKumar. I want to join with name also. how to do the join with both of id and name in dynamic query?
Comment: Please clear the question, I dont understand the dynamic query and both of id and name?
I have some kind of foreign key present in both table
right?
then u need to apply join on it, that's it :)
Comment: I want something like this.
$query = db_select('table1','t1');
$query->join('table2','t2','t1.id1=t2.id2');
$query->join('table2', 't2, 't1.name=t2.name'); is it possible to join like this?
Comment: @GanesanGopal yes, but every `alias` must be unique. You cannot have two `t2` like do you now. `db_select('table1', 't1'); $query->join('table2', 't2', '%alias.id2= t1.id1'); $query->join('table2', 't3', 't1.name=t2.name');`
Comment: @tenken yes every alias must be unique. I am referring the name field which is present in table2. So I think this query is right. Can u confirm?
Comment: you can add any number of conditions to a `JOIN` statement -- as long as they make sense to your database structure you're fine.
Comment: k. thanks for your info @tenken. what is that %alias meant in 4th comment?
Comment: `JOIN`s return a join expression, not a `SelectQuery`. You cannot chain Joins together. In `$query->join('table2', 't2', '%alias.id2 = t1.id1');` the placeholder `%alias` is converted by Drupal to `t2` (the table alias you define for the join). If you have many similar joins -- this lets you re-use a string join statement.


CBLite Android - Get values in second level

Question: Using CBLite Android, and storing docs (similar to Android Grocery Sync example) like this:
<code>{
     "check" : true,
     "created_at" : "2014-02-25T10:16:46.026Z",
     "text" : "Soap",
     "prices":[  { "date" : "2014-02-25" , "value" : 12 }  ]
}
</code>
I get value in "text" field as shown in the documentation:
<code>...
Document document = row.getDocument();
String text = ((String)document.getCurrentRevision().getProperty("text"));
...
</code>
But, How should I do to get the value in, for example, "value" field?
Thanks.

Edit:
Getting documents
 API reference
Comment: Can you link the library? Search in the doc to something which allow you to get an array, then read the array to get value
Comment: Thank you very much!

Thanks to your comment I have done. I created an ArrayList variable, and I got the objects with .getProperty("prices")

I'm a newbie in Stackoverflow. How I can rate your comment?
Comment: I posted an answer, accept it. You cannot rate comments (except upvotes)..
Answer: Search in the doc to something which allow you to get an array, then read the array to get value.


Como criar e escrever arquivo txt em java?

Question: Gostaria de saber como criar e escrever em arquivo txt. O objetivo é escrever em padrão CSV, tentei com BufferedWriter e não deu certo...
import java.io.*;

public class PersistenciaComArquivoDeString
{

    public void salvaPessoas(ListaComArray<Pessoa> lista)
    {
        try
        {
            BufferedWriter saida = new BufferedWriter(new FileWriter("pessoa.txt"));
            Pessoa aux ;
            for(int i=0 ; i<lista.tamanho() ; i++)
            {
                aux = lista.get(i);
                saida.write(aux.getNome());
                saida.newLine();
                saida.write(aux.getEndereco());
                saida.newLine();
                // saida.write(String.valueOf(aux.getIdade()));
                // saida.newLine();

                saida.close();

            }

        }
        catch(IOException e)
        {
        }
    }

}

Provavelmente o problema está sendo na criação do arquivo, alguém pode me ajudar?
Comment: O `close` está dentro do `for`, então na primeira iteração já fechará o arquivo. Além disso, não deveria ter vírgula entre as informações, em vez de `newLine`?
Answer: No pacote java.io temos tudo que precisamos para trabalhar com leitura e escrita de arquivos.
Exemplo 01 de escrita de arquivo:
public class TesteEscritaDeArquivo_1 {
    public static void main(String[] args) throws IOException {

        //Fluxo de saida de um arquivo
        OutputStream os = new FileOutputStream("file1.txt"); // nome do arquivo que será escrito
        Writer wr = new OutputStreamWriter(os); // criação de um escritor
        BufferedWriter br = new BufferedWriter(wr); // adiciono a um escritor de buffer

        br.write("Vamos escrever nesse novo arquivo em Java! que legal hahaha!!!");
        br.newLine();
        br.newLine();
        br.write("Vamos escrever outra linha aqui embaixo hahaha!!!");
        br.close();
    }
}

Os passos foram:
1: instanciamos nosso arquivo de dados através do FileOutputStream
2: instanciamos nosso escritor que recebe em seu construtor a referencia do OutputStream
3: Instanciamos nosso Buffer que será capaz de escrever no arquivo
4: os comportamentos são descritos no próprio nome do método, mas chamo a atenção para que sempre é preciso fechar o recurso que abrimos e fazemos isso com o close();
As próximas formas são simples e mais comuns de serem vistas no java.
public class TesteEscritaDeArquivo_2 {
    public static void main(String[] args) throws IOException {

        BufferedWriter br = new BufferedWriter(new FileWriter("file2"));

        br.write("Vamos escrever nesse novo arquivo em Java! que legal hahaha!!!");
        br.newLine();
        br.newLine();
        br.write("Vamos escrever outra linha aqui embaixo hahaha!!!");
        br.close();
    }
}

Nessa implementação utilizamos a classe BufferedWriter que está no java desde a versão 1.1 para escrever o arquivo.
no seu construtor passamos diretamente o FileWriter, você está utilizando essa opção como não mostrou os demais detalhes sobre sua implementação como por exemplo outros comportamentos classes fica complicado.
public class TesteEscritaDeArquivo_3 {
    public static void main(String[] args) throws IOException {

        PrintStream ps = new PrintStream("file3.txt");

        ps.print("Vamos escrever nesse novo arquivo em Java! que legal hahaha!!!");
        ps.println();
        ps.println();
        ps.print("Vamos escrever outra linha aqui embaixo hahaha!!!");
        ps.close();
    }
}

Nesse caso utilizamos o PrintStream que surgiu no java 1.5 e nesse caso passamos diretamente o nome do arquivo em seu construtor.
public class TesteEscritaDeArquivo_4 {
    public static void main(String[] args) throws IOException {

        PrintWriter ps = new PrintWriter("file3.txt");

        ps.print("Vamos escrever nesse novo arquivo em Java! que legal hahaha!!!");
        ps.println();
        ps.println();
        ps.print("Vamos escrever outra linha aqui embaixo hahaha!!!!!!!!");
        ps.close();
    }
}

Nesse caso utilizamos a classe PrintWriter.
Ainda para leitura de arquivos temos diversas opções também,você pode dentre outros utilizar a classe Scanner passando o arquivo dentro do construtor.
Scanner scanner = new Scanner(new File("contas.csv"));

As classes de escritas e leitura de arquivos no java tem exceções do tipo Checked ou seja você é obrigado a tratá-las de alguma forma, eu coloquei essas exceções no main apenas como teste, em um cenário real seria mais indicado colocar dentro do comportamento da classe que está o implementando.
Aproveite ao máximo os recursos de java.io vale a pena.


Linear transformation of SD and mean

Question: If one uses the following: $$(5-x)/5 = y $$
For 5 values (n=5)
And I have the mean of y. To get the mean of x I understand that I just move it around so I have:
$$\bar x = 5 - (5 \times \bar y)$$
If I also have the SD of mean y; do I just get the mean of x by multiplying it by 5?
Example:
n = 5,
mean y = 0.8,
SD y = 0.09
so will mean x = 1, and SD x = 0.45?
Comment: I'm a little confused by your notation @SPro
Comment: does this help? (edited above)
Comment: @Taylor (first time using this sorry)
Comment: It's all good. Still a little confused though--should the first equation involve $\bar{x}$ or $x_i$ for $i=1,2,3,4,5$?
Comment: The first equation is xi correct
Answer: Here are two rules that you might find useful. If you have a random variable $W$, and a constant $c$, then

$\operatorname{Var}(cW) = c^2 \operatorname{Var}(W)$
$\operatorname{Var}(W + c) = \operatorname{Var}(W)$

If $(5-X_i)/5 = Y_i$ for $i=1,\ldots,5$, then summing both sides over $i$ gives you what you have written:
$$
\bar{X} = 5 - 5  \bar{Y}.
$$
So take the variance of both sides of that. You should get, using the two rules above, that
$$
\operatorname{Var}(\bar{X}) = 25 \operatorname{Var}(\bar{Y}).
$$
And if you take the square root of both sides of this, you should get
$$
\operatorname{SD}(\bar{X}) = 5 \operatorname{SD}(\bar{Y}).
$$

Linear transformation of SD and mean


Prime Model and countable saturated model proof and types of a theory

Question: I know that for the complete theory $Th((\mathbb{Q},+,0))$ we have the prime model $(\mathbb{Q},+,0)$ and the countable saturated model $(\mathbb{Q}^{\infty},+,0)$, but what should I do when I try to prove this claim? Do I have to use the Ehrenfeuch-Fraisse Method?
Look up to the complete theory $Th((\mathbb{Q},<,0,1))$. I have to prove that there exists five 1-types of this theory, but that proves only that there are at least five 1-types, but how I have to prove that there exists precisly five 1-types?! I think I have to pick a arbitrary model of the theory and have to embed this into $(\mathbb{Q},<,0,1)$. Is this true?
Can someone help me?
Thank you :)
Answer: Note that any model of the theory is a $\bf Q$-vector space, as well as the other way around. Vector spaces are rather tame animals, you can just apply some basic linear algebra, or prove quantifier elimination. Ehrenfeucht-Fraisse method would not work too well here (at least not in its basic form), as the language is not a relational language.
As for your second question, it has already been asked here.


Validação de dados por meio da varredura de um dict em python

Question: Olá, pessoal!
Estou com um problema para montar um código e gostaria de uma certa ajuda.
O problema em questão é: Para cada elemento da minha string, eu preciso varrer o meu dict, especificamente o item na posição [1], comparar este item com o slice da string e retornar a chave correspondente deste dict
#Sequência a ser convertida
_seq1 = 'QVQLKESGPGLVAPSQSLSITCTVSGFPLTAYGVNWVRQPPGKGLEWLGMIWGDGNTDYNSALKSRLSISKDNSKSQVFLKMNSLQTDDTARYYCARDPYGSKPMDYWGQGTSVTVSSAKTTPPSVYPLAPGSAAQTNSMVTLGCLVKGYFPEPVTVTWNSGSLSSGVHTFPAVLQSDLYTLSSSVTVPSSTWPSETVTCNVAHPASSTKVDKKIVPRD'
#Dict onde a busca será realizada
CODONS = {
'UUU': ['FENILALANINA','F','codify'],
'UUC': ['FENILALANINA','F', 'codify'],
'UUG': ['LEUCINA','L','codify'],
'CUU': ['LEUCINA','L','codify'],
'CUC': ['LEUCINA','L','codify'],
'CUA': ['LEUCINA','L','codify'],
'CUG': ['LEUCINA','L','codify'],
'UUA': ['LEUCINA','L','codify'],
'AUU': ['ISOLEUCINA','I','codify'],
'AUC': ['ISOLEUCINA','I','codify'],
'AUA': ['ISOLEUCINA','I','codify'],
'AUG': ['METIONINA','M', 'start_codify'],
'GUU': ['VALINA','V', 'codify'],
'GUC': ['VALINA','V', 'codify'],
'GUA': ['VALINA','V', 'codify'],
'GUG': ['VALINA','V', 'codify'],
'UCU': ['SERINA','S', 'codify'],
'UCC': ['SERINA','S', 'codify'],
'UCA': ['SERINA','S', 'codify'],
'UCG': ['SERINA','S', 'codify'],
'CCU': ['PROLINA','P', 'codify'],
'CCC': ['PROLINA','P', 'codify'],
'CCA': ['PROLINA','P', 'codify'],
'CCG': ['PROLINA','P', 'codify'],
'ACU': ['TREONINA','T', 'codify'],
'ACC': ['TREONINA','T', 'codify'],
'ACA': ['TREONINA','T', 'codify'],
'ACG': ['TREONINA','T', 'codify'],
'GCU': ['ALANINA','A', 'codify'],
'GCC': ['ALANINA','A', 'codify'],
'GCA': ['ALANINA','A', 'codify'],
'GCG': ['ALANINA','A', 'codify'],
'UAU': ['TIROSINA','Y','codify'],
'UAC': ['TIROSINA','Y','codify'],
'UAA' : ['STOP-CODON', 'NON-codify'],
'UAG' : ['STOP-CODON', 'NON-codify'],
'UGA' : ['STOP-CODON', 'NON-codify'],
'CAU': ['HISTIDINA','H', 'codify'],
'CAC': ['HISTIDINA','H', 'codify'],
'CAA': ['GLUTAMINA','Q', 'codify'],
'CAG': ['GLUTAMINA','Q', 'codify'],
'AAU': ['ASPARAGINA','N', 'codify'],
'AAC': ['ASPARAGINA','N', 'codify'],
'AAA': ['LISINA','K', 'codify'],
'AAG': ['LISINA', 'K', 'codify'],
'GAU': ['ÁCIDO ASPÁRTICO','D', 'codify'],
'GAC': ['ÁCIDO ASPÁRTICO','D', 'codify'],
'GAA': ['ÁCIDO GLUTÂMICO','E', 'codify'],
'GAG': ['ÁCIDO GLUTÂMICO','E', 'codify'],
'UGU': ['CISTEÍNA','C', 'codify'],
'UGC': ['CISTEÍNA','C', 'codify'],
'CGU': ['ARGININA','R', 'codify'],
'CGC': ['ARGININA','R', 'codify'],
'CGA': ['ARGININA','R', 'codify'],
'CGG': ['ARGININA','R', 'codify'],
'AGU': ['SERINA','S', 'codify'],
'AGC': ['SERINA','S', 'codify'],
'AGA': ['ARGININA','R', 'codify'],
'AGG': ['ARGININA','R', 'codify'],
'GGU': ['GLICINA','G', 'codify'],
'GGC': ['GLICINA','G', 'codify'],
'GGA': ['GLICINA','G', 'codify'],
'GGG': ['GLICINA','G', 'codify'],
'UGG': ['TRIPTOFANO', 'W', 'codify']
}
#funções construídas
Tentativa 1
def convert(sequencia) -> list:
elementos = []
for i in sequencia:
for chave, item in CODONS.items():
if i == item:
elementos.append(chave)
print(elementos)
Tentativa 2
def convert2(sequencia) -> list:
elementos = []
for i in sequencia:
for p in CODONS.keys():
if i == p:
yield elementos.append(p)
Retorno
Em nenhuma das funções eu recebo qualquer retorno, seja de erro ou qualquer resultado.
Obs: Peço desculpas, caso tenha postado a pergunta de forma incorreta na plataforma, esta é a minha primeira vez. Desde já agradeço toda a ajuda fornecida.
Comment: Seria isso mesmo Kaique! Para todos os elementos da string
Comment: Só para entender, você quer percorrer os elementos da sua string e comparar com o item[1] da lista das chaves e retornar a chave? Por exemplo: digamos que rode o sistema e pego a primeira letra da sequência que seria o  Q e com isso percorro o dict e retorno CAA' e 'CAG', já que eles possuem o Q no item[1] da lista
Answer: Motivo das suas funções não funcionarem
As suas funções construídas não retornam as chaves (keys) por conta que você não está pegando o valor do index [1] da lista (que seria o carácter que vai ser associado com a sua variável de strings) sendo assim, não está entrando devidamente na condição do if.
Solução
Para percorrer o dicionário e obter o index 1 da lista e fazer a comparação, utilizarei o v[1] que seria valor do carácter e com isso fazer a comparação com a variável de string _seq1 e após isso exibir a key que corresponde.
Código
_seq1 = 'QVQLKESGPGLVAPSQSLSITCTVSGFPLTAYGVNWVRQPPGKGLEWLGMIWGDGNTDYNSALKSRLSISKDNSKSQVFLKMNSLQTDDTARYYCARDPYGSKPMDYWGQGTSVTVSSAKTTPPSVYPLAPGSAAQTNSMVTLGCLVKGYFPEPVTVTWNSGSLSSGVHTFPAVLQSDLYTLSSSVTVPSSTWPSETVTCNVAHPASSTKVDKKIVPRD'

CODONS = {
    "UUU": ["FENILALANINA", "F", "codify"],
    "UUC": ["FENILALANINA", "F", "codify"],
    "UUG": ["LEUCINA", "L", "codify"],
    "CUU": ["LEUCINA", "L", "codify"],
    "CUC": ["LEUCINA", "L", "codify"],
    "CUA": ["LEUCINA", "L", "codify"],
    "CUG": ["LEUCINA", "L", "codify"],
    "UUA": ["LEUCINA", "L", "codify"],
    "AUU": ["ISOLEUCINA", "I", "codify"],
    "AUC": ["ISOLEUCINA", "I", "codify"],
    "AUA": ["ISOLEUCINA", "I", "codify"],
    "AUG": ["METIONINA", "M", "start_codify"],
    "GUU": ["VALINA", "V", "codify"],
    "GUC": ["VALINA", "V", "codify"],
    "GUA": ["VALINA", "V", "codify"],
    "GUG": ["VALINA", "V", "codify"],
    "UCU": ["SERINA", "S", "codify"],
    "UCC": ["SERINA", "S", "codify"],
    "UCA": ["SERINA", "S", "codify"],
    "UCG": ["SERINA", "S", "codify"],
    "CCU": ["PROLINA", "P", "codify"],
    "CCC": ["PROLINA", "P", "codify"],
    "CCA": ["PROLINA", "P", "codify"],
    "CCG": ["PROLINA", "P", "codify"],
    "ACU": ["TREONINA", "T", "codify"],
    "ACC": ["TREONINA", "T", "codify"],
    "ACA": ["TREONINA", "T", "codify"],
    "ACG": ["TREONINA", "T", "codify"],
    "GCU": ["ALANINA", "A", "codify"],
    "GCC": ["ALANINA", "A", "codify"],
    "GCA": ["ALANINA", "A", "codify"],
    "GCG": ["ALANINA", "A", "codify"],
    "UAU": ["TIROSINA", "Y", "codify"],
    "UAC": ["TIROSINA", "Y", "codify"],
    "UAA": ["STOP-CODON", "NON-codify"],
    "UAG": ["STOP-CODON", "NON-codify"],
    "UGA": ["STOP-CODON", "NON-codify"],
    "CAU": ["HISTIDINA", "H", "codify"],
    "CAC": ["HISTIDINA", "H", "codify"],
    "CAA": ["GLUTAMINA", "Q", "codify"],
    "CAG": ["GLUTAMINA", "Q", "codify"],
    "AAU": ["ASPARAGINA", "N", "codify"],
    "AAC": ["ASPARAGINA", "N", "codify"],
    "AAA": ["LISINA", "K", "codify"],
    "AAG": ["LISINA", "K", "codify"],
    "GAU": ["ÁCIDO ASPÁRTICO", "D", "codify"],
    "GAC": ["ÁCIDO ASPÁRTICO", "D", "codify"],
    "GAA": ["ÁCIDO GLUTÂMICO", "E", "codify"],
    "GAG": ["ÁCIDO GLUTÂMICO", "E", "codify"],
    "UGU": ["CISTEÍNA", "C", "codify"],
    "UGC": ["CISTEÍNA", "C", "codify"],
    "CGU": ["ARGININA", "R", "codify"],
    "CGC": ["ARGININA", "R", "codify"],
    "CGA": ["ARGININA", "R", "codify"],
    "CGG": ["ARGININA", "R", "codify"],
    "AGU": ["SERINA", "S", "codify"],
    "AGC": ["SERINA", "S", "codify"],
    "AGA": ["ARGININA", "R", "codify"],
    "AGG": ["ARGININA", "R", "codify"],
    "GGU": ["GLICINA", "G", "codify"],
    "GGC": ["GLICINA", "G", "codify"],
    "GGA": ["GLICINA", "G", "codify"],
    "GGG": ["GLICINA", "G", "codify"],
    "UGG": ["TRIPTOFANO", "W", "codify"],
}

for i in _seq1:
    for k, v in CODONS.items():
        if v[1] == i:
            print(k)

Output:
CAA
CAG
GUU
GUC
GUA
GUG
CAA
CAG
UUG
CUU
CUC
CUA
CUG
UUA
AAA
AAG
GAA
GAG
...

Comment: Massa, valeu Kaique!! Eu realmente estava me enrolando pra acertar a condição!! Ajudou muito


tkinter How I can set position of label using pack()

Question: how I can set position of label using .pack()?
I want make something such this:
Label(root, text ="Text").pack(x=100, y=100)

Answer: .pack() method does not set position for any tkinter object , use .grid() with the arguments bieng (row=,column=).
this will help you set the position of an object
Answer: pack() is only designed to organize geometry vertically. It looks like you're looking for grid() and/or setting object sizes carefully when making the objects. If you're dead-set on using pack(), you can pack a frame and grid objects within it.
Comment: _"pack() is only designed to organize geometry vertically."_ - that's not exactly true. It's also very good at organizing widgets horizontally.
Comment: `pack()` is certainly not designed for only organizing geometry vertically, it is very possible to pack widgets left to right and right to left and it very easy to center stuff and other things, so that part of the answer I would consider not correct
Answer: you can it with side=left/right/bottom/top but in some situation you need to change your widets positon or you can use before or after in the pack-manager. in some situations, the place-manager is maybe better, if you want specific postions
from tkinter import *

root = Tk()
root.geometry("700x700")

frame1 = Frame(root, bg="blue")
frame1.pack(fill="x", pady=20, ipady=20)        # fill = x, y or "both" // pady = down from the titlebar // ipady or ipadx =
                                                #  = the height of a widget

frame2 = Frame(root, bg="red")
frame2.pack(side="left", fill="y", ipadx=20)   # side = left, top, bottom, right // there also an expand function, that you can
                                               # use it with expand=true/false, expand="yes"/"no" etc....

mainloop()


Magnitude of standardized coefficients (beta) in multiple linear regression

Question: Being aware of that article, I am curious about the question how big standardized coefficients can get. I had a discussion with my professor about that issue and she was arguing standardized coefficients (beta) in multiple linear regressions can not become greater than |1|. I have also heard that predictors with standardized coefficients greater than 1 should not be be included/appear in multiple linear regression. When I recently estimated a multiple linear regression in R using lm(), I estimated the standardized coefficients with lm.beta() function from the package 'lm.beta'. In the results I could observe a standardized coefficient greater than one. Right now I am just not sure about what is the truth.
Can standardized coefficients become greater than |1|?
If yes, what does that mean and should they be excluded from the model?
If yes, why?
I would be very thankful, if somebody could make this issue clear for me.
Comment: I don't understand why this was flagged for closing.  It's a perfectly good question.
Answer: It's never easy telling your professor that they are wrong.
Standardized coefficients can be greater than 1.00, as that article explains and as is easy to demonstrate. Whether they should be excluded depends on why they happened - but probably not.
They are a sign that you have some pretty serious collinearity. One case where they often occur is when you have non-linear effects, such as when $x$ and $x^2$ are included as predictors in a model.
Here's a quick demonstration:
data(cars)
cars$speed2 <- cars$speed^2
cars$speed3 <- cars$speed^3
fit1 <- lm(dist ~ speed, data=cars)
fit2 <- lm(dist ~ speed + cars$speed2, data=cars)
    fit3 <- lm(dist ~ speed + cars$speed2 + speed3, data=cars)
summary(fit1)
summary(fit2)
summary(fit3)
lm.beta(fit1)
lm.beta(fit2)
lm.beta(fit3)

Final bit of output:
> lm.beta(fit3)
   speed    speed2    speed3
  1.395526 -2.212406  1.681041

Or if you prefer you can standardize the variables first:
 zcars <- as.data.frame(rapply(cars, scale, how="list"))
 fit3 <- lm(dist ~ speed + speed2 + speed3, data=zcars)

 summary(fit3)

Call:
lm(formula = dist ~ speed + speed2 + speed3, data = zcars)

Residuals:
     Min       1Q   Median       3Q      Max
-1.03496 -0.37258 -0.08659  0.27456  1.73426

Coefficients:
              Estimate Std. Error t value Pr(>|t|)
(Intercept)  7.440e-16  8.344e-02   0.000    1.000
speed        1.396e+00  1.396e+00   1.000    0.323
speed2      -2.212e+00  3.163e+00  -0.699    0.488
speed3       1.681e+00  1.853e+00   0.907    0.369

Residual standard error: 0.59 on 46 degrees of freedom
Multiple R-squared:  0.6732,    Adjusted R-squared:  0.6519
F-statistic: 31.58 on 3 and 46 DF,  p-value: 3.074e-11

You don't need to do it with lm(), you can do it with matrix algebra if you prefer:
Rxx <- cor(cars)[c(1, 3, 4), c(1, 3, 4)]
Rxy <- cor(cars)[2, c(1, 3, 4)]
B <- (ginv(Rxx)) %*% Rxy
B

         [,1]
[1,]  1.395526
[2,] -2.212406
[3,]  1.681041

Comment: Thank you Jeremy for your answer! See a new question here: http://stats.stackexchange.com/questions/120892/standardized-coefficients-for-linear-models-with-numeric-and-factor-variables-in Best regards, Magnus
Answer: This is probably a matter of definitions.  Does a standardized coefficient refer to standardizing only the predictor variables? or standardizing the response variable as well?   I have seen both used to compute "standardized coefficients".  Even then, there is more than one way to standardize.
If you divide both the predictor and response variable by their standard deviations (common way to standardize) and fit the regression (with only a single predictor/a single slope coefficient) then it is mathematically impossible to see a coefficient outside of the -1 to 1 range (since the slope will be the same as the correlation).  But if you don't standardize the response variable then it would be easy to see an estimated coefficient outside of -1 to 1 depending on the scale of the response variable.
With multiple predictors, an unusually large standardized coefficient could be a sign of multi-colinearity and is probably why some sources suggest dropping those variables.
I expect that the differences between what some sources say are possible and what you observe from others is due to the difference in definitions.
Comment: @MagnusMetz, you can standardize the variables yourself.  The `scale` function in R will do this for you.  With multiple linear regression and high colinearity among predictors (even standardized) you can still see standardized coefficients outside of -1 to 1 (see Jeremy's answer).  You can orthogonalize the predictors (use `poly` instead of manually creating polynomial terms, use residuals of `x2~x1` in place of `x2`, ...) to overcome the colinearity issues.
Comment: @whuber, my statement about the slope equaling the correlation is only when there is a single predictor, and by that I meant a single linear term, or transformation, polynomial or spline transforms of a single x-variable would be multiple predictors as far as the computations go.  Once there are multiple predictors then the standardized slope will not necessarily equal the correlation.  Thanks for seeing the possible confusion and helping clarify.
Comment: So am I right, if I conclude that standardized coefficients get values between -1 and 1 only in simple linear regressions, whereas in multiple linear regressions standardized coefficients can become greater than 1, but only, if the response variable is not standardized but the predictors are? I also assume that lm.beta() does not standardize the response variable as I estimated standardized coefficients > 1. Which function in R should be used then to receive standardized coefficients between -1 and 1 as expected from my professor?
Comment: Greg, the correctness of this answer appears to depend on an implicit assumption that all regressors (apart from a constant) are orthogonal.  That is the only way to justify that "the slope will be the same as the correlation."
Comment: @Greg Since you have indicated that subtle point only indirectly (by referring to "the" predictor), I would only like to suggest it would help to include it explicitly in your answer itself.
Comment: @whuber, does the edit I made make it clear enough? or would you suggest something more?
Comment: It works for me.  +1
Answer: A standardized beta weight greater than one is a sign of suppression, especially cooperative suppression.  Such suppression increases the predictive value of the predictors and thus is of potentially great value.  See http://core.ecu.edu/psyc/wuenschk/MV/multReg/Suppress.docx


Detect finger touches movement on AppleWatch

Question: I want to detect touches on AppleWatch to get touch location. As we can achieve this behaviour on iPhone app by using following delegate methods:
<code>- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    //Any Logic
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    //Any Logic
}
</code>
So, i just used these methods on WatchKit but not working;
Any way to achieve this behaviour?
I want to make some logic on the basis of touch location on WatchKit.
Any direction of work will be appreciated.
Answer: At the moment (I don't know if things change in the future), there are no touch recognisers like that for WatchKit. You can just respond on taps on buttons or a menu with a selector.
Comment: Alright; It should be available; May be in future Apple with expose it.
So, is it possible to get frame of any component? like WKInterfaceButton, WKInterfaceImage, etc? As we not have frame property like self.btn.frame;
Any way to get it?
Comment: I don't think that you can.
Comment: Unfortunately there are no getters for any WK UI objects.


Need help to understand the equation

Question: Here is a small equation, which says
$$E[min\{{D, Q}\}] = \int_{0}^{Q}{xf(x)dx} + \int_{Q}^{\infty}{Qf(x)dx}$$, where D is a continuous random variable denoting the demand on a specific day and f(x) is the representative density function of demand D. Q represents the Quantity to be ordered.
Which is said to be equivalent of $$min(Q, D) = D − (D − Q)^+$$
Can someone tell me how is the integral representation is an equivalent of the avove representation?
Thanks
-Kamal.
Comment: There is no relation between the integral form of E(min(D,Q)) and the formula for min(D,Q). Why do you think these are "equivalent"?
Answer: We have
$$\mathbb E[\min(D,Q)] = \int_0^\infty \min(x,Q)f(x)\mathsf dx. $$
For $x<Q$, $\min(x,Q)=x$, and for $x>Q$, $\min(x,Q)=Q$. So the above is equal to
$$\int_0^Q xf(x)\mathsf dx + \int_Q^\infty Qf(x)\mathsf dx. $$
Recall that $(D-Q)^+=\max(D-Q,0)$, and $\max(x-Q,0)=x-Q$ for $x>Q$. So
$$
\begin{align*}
\mathbb E[D]-\mathbb E[\max(D-Q,0)] &= \int_0^\infty xf(x)\mathsf dx-\int_0^\infty\max(x-Q,0)f(x)\mathsf dx\\
&= \int_0^Q xf(x)\mathsf dx + \int_Q^\infty xf(x)\mathsf dx - \int_Q^\infty (x-Q)f(x)\mathsf dx\\
&= \int_0^Q xf(x)\mathsf dx +\int_Q^\infty Qf(x)\mathsf dx.
\end{align*}  $$
Comment: Thanks that helped a lot :-).

Need help to understand the equation


XML retornando caracteres estranhos

Question: Eu gerencio um código em Php que solicita dados do servidor como um "changelog" de um servidor de um jogo. Porém no changelog o XML retorna valores estranhos. Como por exemplo nas palavras "criação" o resultado é "criação" ou "você" o resultado é "vocĂŞs!"
O XML completo ele retorna isso:
<?xml version="1.0" encoding="Windows-1250" ?>
<SauronGamer>
<Count>2</Count>
    <Content>
        <News>
            <title>[22/04] Preparando tudo para o OpenBETA</title>
            <description>Galera com todos os nosso projetos estamos felizes em anunciar que depois de tanto tempo sim! O OpenBETA será aberto ao público! Como muitos minigames e muita diversăo.</description>
        </News>
        <News>
            <title>[NA] Criamos o servidor SauronServer.</title>
            <description>Foi iniciado o projeto de criação do servidor sauron server de mingames para vocês!</description>
        </News>
    </Content>
</SauronGamer>

O Objetivo principal seria o "changelog" estar no banco de dados e retornar em json, porém não consegui fazer com que quando esteja utilizando o fetch_row ele adicionasse um item no array();
Código PHP:
<?php
error_reporting(0);
header("content-type: text/xml");

$comando1 = "SELECT * FROM  `saurongamer_news` ORDER BY  `ID` DESC LIMIT 0,10 ";

mysql_connect('localhost', 'root', 'usbw');
mysql_select_db('test');

$consulta1 = mysql_query($comando1) or die(mysql_error());

if($consulta1 == TRUE){
    line('<?xml version="1.0" encoding="Windows-1250" ?>');
    line('<SauronGamer>');
        line('<Count>' . mysql_num_rows($consulta1) . '</Count>');
            line('<Content>');

                while($row = mysql_fetch_array($consulta1)){
                    line('<News>');
                        line('<title>' . $row[1] . '</title>');
                        line('<description>' . $row[2] . '</description>');
                    line('</News>');
                }

            line('</Content>');
    line('</SauronGamer>');
}

else{

}

function line($text){
    echo $text . "\n";
}
?>

Já tentei todas as combinações possíveis como ISO-5859-1, ISO-5859-2, ISO-5859-15, ANSI, UTF-8, Windows-1250 e os caracteres continuam estranhos.

E em C# um código simples que lê isso:
 private const string UpdateNovidadesServer = "http://localhost:8080/minecraft/novidades.php";

    public Dictionary<string, string> UpdateNovidades()
    {
        var dicionario = new Dictionary<string, string>();

        XmlTextReader xtr = new XmlTextReader(UpdateNovidadesServer);
        xtr.ReadStartElement("SauronGamer");

        xtr.ReadStartElement("Count");
        int size = xtr.ReadContentAsInt();
        xtr.ReadEndElement();

        xtr.ReadStartElement("Content");

        for (int i = 0; i < size; i++)
        {
            xtr.ReadStartElement("News");

            xtr.ReadStartElement("title");
            string k = xtr.ReadContentAsString();
            xtr.ReadEndElement();

            xtr.ReadStartElement("description");
            string v = xtr.ReadContentAsString();
            xtr.ReadEndElement();

            dicionario.Add(k, v);

            xtr.ReadEndElement();

        }

        xtr.ReadEndElement();

        xtr.ReadEndElement();

        return dicionario;
    }

Comment: Um detalhe insignificante: parece-me que onde escreveste `ISO-5859-1` seria `ISO-8859-1`; idem para os outros.
Comment: Da no mesmo! A codificação continua com caracteres estranhos!
Comment: @sysWOW32-- este comentário era apenas acerca gralha existente no teu texto: o ISo-5859 corresponde a  "Aerospace series -- Graphic symbols for schematic drawings of hydraulic and pneumatic systems and components".   Vê a minha resposta: enquanto as fontes estiverem corrompidas, não ha nada a fazer.
Comment: Eu já fiz um script que resolve!
Answer: ...isto não é bem uma resposta, é mais um comentário de difícil formatação:
O teu ficheiro XML está corrompido: denota duas codificações diferentes misturadas:

o primeiro paragrafo de despription está em UTF8 (provavelmente vindo de um original Latin1=iso_8859-1=CP1252)

converte( CP1252->UTF8, "texto em CP1252")

o segundo parágrafo description estava em formato CP1250 e foi
convertido para UFT8 como se estivesse em latin1=CP1252  ou seja ficou em formato corrompido:

converte( CP1252->UTF8, "texto em CP1250")

Portanto : o teu problema é que tens "fontes" em encodings diferentes,
a ser processadas com o mesmo processo de conversão.
Comment: @DiegoF, obrigado! (o tratamento de encodings vindos legados e de fontes heterogeneos, às vezes é uma dor de cabeça)
Comment: como indicado no texto (na sua parte relevante) o CP1252= latin1 = iso_8859-1. Pode tambem ser deignado por "Windows 1252". O problema é teres doiss encodings diferentes misturados.
Comment: Pra mim, isso foi uma resposta, e excelente, por sinal, apontou problemas que impedem um devido tratamento no arquivo. :) +1
Comment: De acordo com o php aqui CP1252 não existe como codificação válida!
Comment: não exite duas encodings!

XML retornando caracteres estranhos


How does one input positive and negative infinities into MIT Scheme?

Question: Section 4.7.2 of the MIT/GNU Scheme Reference Manual states that

The IEEE floating-point number specification supports three special 'numbers': positive infinity (+inf), negative infinity (-inf), and not-a-number (NaN).

These constants, in addition to being well-defined IEEE floating-point values, are also useful for range arithmetic.  However, I'm unable to use them in my programs:
1 ]=> +inf

;Unbound variable: +inf

Generating these values isn't easy, either: expressions which seem like they ought to evaluate to floating-point infinities simply don't:
1 ]=> (flo:/ 1. 0.)

;Floating-point division by zero

How can I input or generate infinite floating-point constants in MIT Scheme?
Answer: tests/runtime/test-arith.scm suggests using flo:with-exceptions-untrapped:
;;; XXX The nonsense about IDENTITY-PROCEDURE here serves to fake
;;; out bogus constant-folding which needs to be fixed in SF (and
;;; probably LIAR too).

(define (zero)
  (identity-procedure 0.))

(define (nan)
  (flo:with-exceptions-untrapped (flo:exception:invalid-operation)
    (lambda ()
      (flo:/ (zero) (zero)))))

(define (inf+)
  (flo:with-exceptions-untrapped (flo:exception:divide-by-zero)
    (lambda ()
      (flo:/ +1. (zero)))))

(define (inf-)
  (flo:with-exceptions-untrapped (flo:exception:divide-by-zero)
    (lambda ()
      (flo:/ -1. (zero)))))

The results display as #[NaN], #[+inf], #[-inf] but cannot be input that way.


How binding big array to small name?

Question: I have class:
EmployeeListViewModel with property List<Int32> EmployeeIDs.
I need transfer with get request.
I do not want to see a request like EmployeeIDs[]=1&EmployeeIDs[]=2 ...
I want to specify a tag which has a short name of this parameter
example:
empl[]=1&empl[]=2

Comment: There is a `Bind Attribute` on asp.net mvc. Maybe it can help you: http://stackoverflow.com/questions/4316301/asp-net-mvc-2-bind-a-models-property-to-a-different-named-value
Answer: You could decorate the controller action argument with the [Bind] attribute and specify a prefix:
public ActionResult Index([Bind(Prefix = "empl[]")] int[] employeeIDs)
{
    ...
}

Now the following request will be correctly bound:
empl[]=1&empl[]=2

Comment: This way I know, and if it is in the class?
Comment: That's not supported by the default model binder. If you need to support such scenario you will have to write a custom model binder. But usually I wouldn't bother with that. I would simply match my view model property name with the expected query string name. It's much easier and one of the uses of a view model.
Answer: Sounds like you're using Model Binding and want to customize the way binding happens. Unfortunately, on a Model class, I don't know of a way to use attributes to accomplish this, but you can accomplish what you want using a custom binder.
You'll need to implement the IModelBinder interface, and then use a [ModelBinder] attribute on your Controller's action method.
More details here: http://dotnetslackers.com/articles/aspnet/Understanding-ASP-NET-MVC-Model-Binding.aspx

How binding big array to small name?


Show that graph of a $\mathcal{C}^k$ function is a $\mathcal{C}^k$-equivalence.

Question: $\textbf{The question is as follows:}$

Let $f: \mathbb{R}^d \to \mathbb{R}^m$ be a map of class $\mathcal{C}^k$, $k=0, \ldots, \omega.$ Show that $\varphi : \mathbb{R}^d \to {\rm Graph}(f)$, $x \mapsto (x,f(x)),$ is a $\mathcal{C}^k$-equivalence.

Can someone please let me know what does $\mathcal{C}^k$-equivalence means here?
I think it can be an equivalence relation iff $f$ is the identity map, because we need to have $ x \to (x,x)$?
Thanks!
Answer: In this context I can only think that "equivalence" means "diffeomorphism", as in $\varphi$ being a $C^k$-diffeomorphism.
Since ${\rm id}_{\Bbb R^d}$ is $C^\infty$ (hence $C^k$) and $f$ is $C^k$, then $\varphi = {\rm id}_{\Bbb R^d}\times f$ is $C^k$. The inverse is the restriction of the projection $(x,y)\mapsto x$ to ${\rm Graph}(f)$, which is $C^\infty$ (hence $C^k$).
Comment: Many thanks for your nice answer!
Comment: You're welcome! :-)


Not able to resolve the error in PL/SQL function

Question: I'm writing a stored function called MAKE_EMAIL that will accept input arguments for first name and lastname and will return a varchar2 value containing the email address in the form of first initial of the firstname followed by the full last name followed by @hpu.edu.
Ex: Calling:
select make_email('Edward','Souza')
from dual

... would return the single value:
'firstname.lastname@example.com'

Please consider the following code for a function:
Code:
create or replace function MAKE_EMAIL(lastname varchar2(10),firstname varchar2(10))
 return VARCHAR
IS

  email VARCHAR2;

 BEGIN

 email := substr(lastname ,1,1)|| firstname || '@hpu.edu';
RETURN email;

END;
  /

After running above function, I'm getting some errors. Please find the errors below. Please let me know how can I remove these errors or anything wrong with above code?
Warning: Function created with compilation errors.

SQL> show errors
Errors for FUNCTION MAKE_EMAIL:

LINE/COL ERROR
-----------------------------------------------------------------
1/38     PLS-00103: Encountered the symbol "(" when expecting one of the
     following:
     := . ) , @ % default character
     The symbol ":=" was substituted for "(" to continue.

1/61     PLS-00103: Encountered the symbol "(" when expecting one of the
     following:
     := . ) , @ % default character
     The symbol ":=" was substituted for "(" to continue.

Here is the link for error:
https://www.dropbox.com/s/gmjhbvie1c7dbcx/Error.png
Comment: @Mat I'm working on SQL Plus. Do you know how to copy and paste from there? Is there anything wrong with the dropbox link ?
Comment: Apart from what Mat points out, this question will be useless for everyone when you remove the picture from your Dropbox account.
Comment: @Mat: Updated the Question with text error message.
Comment: you'd probably want to apply a lower() function to the names, i think.
Answer: You cannot specify the size of a varchar2 parameter to a stored procedure or function. Just remove the two size specifications in your function's declaration and it should compile (assuming no other syntax errors).
On the other hand, the email variable does need a size constraint. So specify one when you declare that.
The max. size for varchar2 in PL/SQL is 32k, so should be more than enough for your use case. If you need to restrict that, do it in your function body.
Comment: You need to replace `varchar2(10)` with just `varchar2` for the two parameters, and add a size spec for the `email` variable. I don't know what you did, but doing these two things does make a compilable procedure.
Comment: Not really. I would like you to follow the answer I posted, and add a reasonable size constraint on the email variable. Something like `email varchar2(256);`.
Comment: Aak, _reasonable_ size constraint. 10 is too short for your use-case.
Comment: Thanks for your quick reply but it didn't work. I'm getting the same error except the column number changed from 38 to 37 in first error and 61 to 59 in second.
Comment: Replacing varchar2(10) with varchar2 did remove the first two errors but I'm still getting the following error:

Warning: Function created with compilation errors.

SQL> show errors
Errors for FUNCTION MAKE_EMAIL:

LINE/COL ERROR
-------- -----------------------------------------------------------------
5/9      PLS-00215: String length constraints must be in range (1 ..
         32767)
Comment: What did you change the line `email varchar2` to?
Comment: It did work. Just now I changed email varchar2 to email varchar2(10).

Thanks a lot !!
Answer: create or replace function MAKE_EMAIL(lastname varchar2,firstname varchar2)
return VARCHAR2
IS email VARCHAR2(28);
BEGIN
 email := substr(lastname ,1,1)|| firstname || '@hpu.edu';
RETURN email;
END;
/


Finding the constants in a linear equation without knowing the constant they sum to

Question: I am trying to find the constants $a,b,c,d$ in the equation $ax+by+cz=d$ but only know the values of $x,y,z$.
I tried to write it as using matrices as $Ax = B$ where the matrix $A$ is the known values of $x,y,z$, the constants matrix $x=[a, b, c]^T$, and $B$ is a matrix with only values of $d$ equal in rows to $A$.
$A = [2, 0, 1; 1, -1, 1; 1, -2, 2; 2, -1, 2]$
Please let me know if this can be done in general so I can use it to solve given other values of $x,y,z$.
Comment: Sounds like you're trying to do something like [this](https://math.stackexchange.com/a/2687168/265466).
Comment: If you're working with real-world noisy data, once you have more than three points you run the risk of the problem becoming overconstrained—the system of equations will become inconsistent. In that case you'll need to resort to some sort of best-fit solution.
Comment: @amd that's just what I was looking for! Thanks so much!
Answer: It seems that you have a few points that satisfies the equation and you are trying to find $a,b,c,d$.
Note that if $ax+by+cz=d$ then we have $ax+by+cz-d=0$
That is for each data point, we have $(x_i, y_i, z_i, -1)^T(a,b,c,d)=0$.
$A = \begin{bmatrix}2 & 0 & 1 & -1 \\ 1& -1& 1 & -1 \\ 1& -2& 2 & -1 \\  2 & -1& 2 & -1\end{bmatrix}, x=(a,b,c,d)^T$ and $B$ is the zero vector.
Comment: Yes, thank you! And then I can just use row reduction.


If I have two drawings without replacement but add a new name to the second drawing, how do I ensure everyone has equal odds?

Question: I have seven names and two raffles. One person is unable to make the first drawing how do I ensure they get equal odds without lowering everyone else?
For instance of on the first drawing the following names are put in along with their probability. Jack has stars since he won the drawing.
*Jack = 1/6*
Craig =1/6
Dillon = 1/6
Billy = 1/6
Gordon = 1/6
Kate= 1/6

And Zoe is left out the first round but we want her to have an equal probability. Since Jack won he is pulled out and obviously his probability will stay at 1/6.
If we put Zoe's name in twice she still has lower odds
Zoe = 1/7
Zoe = 1/7
Craig= 1/7
Dillon = 1/7
Billy = 1/7
Gordon = 1/7
Kate= 1/7

The people who were drawn twice probability
Gordon = 1/6 + 1/7 =>
6/42 + 7/42= 13/42= 0.31

Zoe and Jack
Zoe = 1/7 +1/7 = 2/7 = .29
Jack = 1/6 = .17

Craig = .31
Dillon = .31
Billy = .31
Gordon = .31
Kate= .31
Zoe = .29
Jack = .17

So adding Zoe's name twice won't do the trick. The solution will be to add everyones name multiple times with Zoe's name being the most in the second raffle. How do I figure out the total number of names and how many raffles Zoe gets for the second raffle.
Answer: Your approach is reasonable: to have Zoe to have the same chances of possible outcomes as the others, you need to exclude the winner of the first draw from the second (so nobody can win both draws), and you need to give Zoe a higher probability in the second draw to make up for not being in the first. But one of your calculations does not take that into account.
You might start by finding the probability Zoe needs to have of winning in the second draw.  Since there are $7$ people and $2$ prizes, this will have to be $\frac27$.
The easiest way to do this is your suggestion of giving Zoe $2$ tickets in the second draw, which would then have $7$ tickets since you exclude the winner of the first draw. So her probability of winning is indeed $\frac27$.
Everybody else's individual probability of a win is (since they might win the first draw, or they might lose the first and win the second) $\frac16+ \frac56 \times \frac17 =\frac27$, which is the same as Zoe's.
Answer: I am going to assume that you want a process where no-one can win more than once and everyone has the same probability of winning once.  You do this by removing the winner in the first round from the second draw and adding the new person.  Suppose we have $n>1$ people initially and we set the win-probability for the new person (in the second draw) to $\theta$.  For a person included in the initial round, the probability of winning is:
$$p = \frac{1}{n} + \frac{n-1}{n} \cdot \frac{1-\theta}{n-1} = \frac{1}{n} + \frac{1-\theta}{n} = \frac{2-\theta}{n}.$$
You want to set these to be equal, so your constraint is $\theta = p$.  Solving this equation yields:
$$\theta = \frac{2}{n+1}.$$
In the present instance you have $n=6$ people in people in your initial round so you would set the probability for Zoe winning the second round to $\theta = 2/7$.


Error: A partials dir must be a string or config object in handlebars

Question: I am sending templated email using nodemailer with nodemailer-express-handlebars, but whenever I am trying to send a mail, I am getting the
Error: A partials dir must be a string or config object.
I don't know what is the problem.
const express = require('express');
const hbs = require('nodemailer-express-handlebars');
const nodemailer = require('nodemailer');
const app = express();

const user_name     = 'firstname.lastname@example.com';
const refresh_token = 'xxxxxxxxxxxxxxxxxxxxxxxx';
const client_id     = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
const client_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
const email_to = 'firstname.lastname@example.com';

let transporter = nodemailer
    .createTransport({
        service: 'Gmail',
        auth: {
            type: 'OAuth2',
            clientId: client_id,
            clientSecret: client_secret
        },
        tls:{
            rejectUnauthorized: false
        }
    });
transporter.use('compile', hbs({
    viewPath: 'views/email',
    extName: '.hbs'
}));
transporter.on('token', token => {
    console.log('A new access token was generated');
    console.log('User: %s', token.user);
    console.log('Access Token: %s', token.accessToken);
    console.log('Expires: %s', new Date(token.expires));
});
let mailOptions = {
    from    : user_name,
    to      : email_to,
    subject : 'Hello ✔',
    text    : 'Hello world ?',
    template: 'emailt',
    context: {},
    auth : {
        user         : user_name,
        refreshToken : refresh_token,
        expires      : 1494388182480
    }
};

// send mail with defined transport object

app.get('/', (req,res) => {
    transporter.sendMail(mailOptions).then( r => {
        res.send(r);
    }).catch(e =>{
        res.send(e);
    });
});
app.listen(3000 ,()=>{
    console.log('port: 3000');
});

My directory looks like this views>email>emailt.hbs
Comment: Did you set a `partialsDir` anywhere? Where are your `viewEngine` params?
Comment: Yeah - I got this same error today, after running 'npm update' yesterday
Answer: Looks like a recent change to express-handlebars caused this issue, someone posted a fix here https://github.com/yads/nodemailer-express-handlebars/issues/22
Or
I guess you could just go back to a version that doesn't have this issue, at least until it is fixed.
Answer: I managed to get my code working, posting in case it helps out. I had to add the partialsDir to my handlebarOptions where I didn't have the field before:
const handlebarOptions = {
  viewEngine: {
    extName: '.hbs',
    partialsDir: 'src/path',
    layoutsDir: 'src/path',
    defaultLayout: 'email.hbs',
  },
  viewPath: 'src/path',
  extName: '.hbs',
};

transporter.use('compile', hbs(handlebarOptions));

Hope this helps.


Regex like telephone number on Hive without prefix (+01)

Question: We have a problem with a regular expression on hive.
We need to exclude the numbers with +37 or 0037 at the beginning of the record (it could be a false result on the regex like) and without letters or space.
We're trying with this one:
regexp_like(tel_number,'^\+37|^0037+[a-zA-ZÀÈÌÒÙ ]')
but it doesn't work.
Edit: we want it to come out from the select as true (correct number) or false.
Comment: Are you sure you want to exclude numbers beginning with `+01` or do you mean `+1`?
Comment: Just to be sure: You want to exclude "numbers" **without** letters or space? Or you want to exclude numbers that contain a letter or space?
Comment: sorry, we meant +37 or 0037
Answer: The general question is, if you want to describe a malformed telephone number in your regex and exclude everything that matches the pattern or if you want to describe a well-formed telephone number and include everything that matches the pattern.
Which way to go, depends on your scenario. From what I understand of your requirements, adding "not starting with 0037 or +37" as a condition to a well-formed telephone number could be a good approach.
The pattern would be like this:

Your number can start with either + or 00: ^(\+|00)

It cannot be followed by a 37 which in regex can be expressed by the following set of alternatives:
a. It is followed first by a 3 then by anything but 7: 3[0-689]
b. It is followed first by anything but 3 then by any number: [0-24-9]\d

After that there is a sequence of numbers of undefined length (at least one) until the end of the string: \d+$

Putting everything together:
^(\+|00)(3[0-689]|[0-24-9]\d)\d+$

You can play with this regex here and see if this fits your needs: https://regex101.com/r/KK5rjE/3
Note: as leftjoin has pointed out: To use this regex in hive you might need to additionally escape the backslashes \ in the pattern.
Answer: To exclude numbers which start with +01 0r +001 or +0001 and having only digits without spaces or letters:
... WHERE tel_number NOT rlike '^\\+0{1,3}1\\d+$'

Special characters like + and character classes like \d in Hive should be escaped using double-slash: \\+ and \\d.
Comment: Note that this won't exclude numbers that start with `+01` if they are malformed in any other way like: `+01foo1234`.
Comment: sorry, I meant in the select (I want to see true if the number is ok, false if it isn't)
Comment: @wmbff `select tel_number NOT rlike '^\\+0{1,3}1\\d+$'  as your_col_name ...` - this will give True if number is OK and False if not
Answer: You can use
regexp_like(tel_number,'^(?!\\+37|0037)\\+?\\d+$')

See the regex demo. Details:

^ - start of string
(?!\+37|0037) - a negative lookahead that fails the match if there is +37 or 0037 immediately to the right of the current location
\+? - an optional + sign
\d+ - one or more digits
$ - end of string.


display 2 tables with checkboxes by ajax button

Question: I am altering a form and placing a new 'button' . On the press of the button, using the #ajax property , I want to display 2 separate tables with checkboxes for each row. Each table has separate data.
The 2 tables should be initially hidden and should become visible on button press. How should I proceed with this ??
The table data is fetched from database and some operations are performed on it.. so where should I put this code ? In the callback function ?
Update- I tried to implement this by using tableselect, but the checked boxes aren't returning the values in the $form_state['values']. You can check out the code here
 or suggest me a simpler interface to implement.
Comment: I need more clarification of the question in order to properly answer. If I understand you correctly, I think I have a solution. I need more clarification with the most simplified code example that illustrates your problem. Please edit your question to reflect this.
Comment: Please clarify your question or you can specify the code here and write where you get the problem
Answer: You should not put the table-building code in the ajax callback. Put the code to build the tables into the hook_form_alter() implementation that you are using to add the button. You can use $form_state['triggering_element'] to tell if the button has been pressed, and only execute the query and build the tables if you need to.


how to get value from one activity to another using putExtra?

Question: public class RecyclerAdapterNew extends RecyclerView.Adapter<DataHolderNew> {

    @Override
    public DataHolderNew onCreateViewHolder(ViewGroup parent, int viewType) {

        Context context = parent.getContext();
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = inflater.inflate(R.layout.table_values, parent, false);
        return new DataHolderNew(view);
    }

    @Override
    public void onBindViewHolder(DataHolderNew holder, int position) {
        Intent intent=new Intent();
        intent.getExtras("transfer",);//i have to transfer the value of the
        //textview by converting into int and transfer into another class
        holder.table_value.setText("table values: "+(position+1));

    }

    @Override
    public int getItemCount() {
        return 10;
    }
}

Comment: so what is your question actually?
Comment: i want to tranfer the nos. value to another class which is displayed by the recyclerview ...how should i do? @pskink
Answer: public class RecyclerAdapterNew extends RecyclerView.Adapter {
@Override
public DataHolderNew onCreateViewHolder(ViewGroup parent, int viewType) {

    Context context = parent.getContext();
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.table_values, parent, false);

    return new DataHolderNew(view);
}

@Override
public void onBindViewHolder(DataHolderNew holder, int position) {
    Intent intent=new Intent();

    int value = intent.getIntExtra("transfer",);
    holder.table_value.setText("table values: "+(position+1)*value);

}

@Override
public int getItemCount() {
    return 10;
}

}
Comment: here is the second class i want to transfer the value to
Answer: You can use the following in the calling/invoking activity "-
Intent intent = new Intent(this,CalledActivity.class);
        intent.putExtra(NameKeyforvalue,value); ......

startActivity(intent)

and use the following in Called/Invoked (receiving) activity :-
variabletoholdvalue = getIntent().getStringExtra(NameKeyforValue);

Note! getIntExtra, getLongExtra etc... (some require default, getStringExtra doesn't)