Quando usar Waterfall e quando usar Scrum?

Question: Existe uma forma clara de determinar quando um projeto de desenvolvimento de software deve ser conduzido usando uma metodologia Waterfall ou usar Scrum? Quais os critérios devem ser observados para escolher um ou outro?
Comment: Estamos em fase inicial do site e ainda precisamos determinar quais os tópicos podem ser abordados aqui na **nossa** comunidade. Dê sua opinião sobre os assuntos que são interessantes e os que devem ficar de fora votando em http://meta.pt.stackoverflow.com/a/355/101
Comment: @HeadofCatering Aqui é o Stackoveflow **em português**
Comment: Sobre quando usar o Scrum, isso é debatível. Mas sobre quando usar o Waterfall, essa é fácil: NUNCA!
Comment: É @bigown, a sua pergunta é muito legal e gosto dela, mas pensando bem, infelizmente do jeito que está ela é uma pergunta com respostas opinativas, e portanto deveria ser fechada (o que é no mínimo um fato curioso dado quem é o autor da questão). O que podemos fazer para dar um jeito nesse problema?
Comment: @Victor você está completamente enganado quanto a nunca se usar Waterfall. Existem situações em que modelos mais próximos do Waterfall encaixam bem e acabam sendo imprescindíveis. Tudo isso depende de diversos fatores dentro do seu ambiente de desenvolvimento que precisam ser analisados caso a caso.
Comment: Quanto a pergunta, não achei ela opinativa. É perfeitamente possível uma resposta objetiva para ela: Waterfall se encaixa melhor nessa situação e Scrum se encaixa melhor nessa situação. Se por acaso algum usuário vier apenas opinando subjetivamente na resposta (como no primeiro comentário dizendo para "nunca usar waterfall"), ele é que deveria receber votos negativos.
Comment: @FranciscoJunior até porque se a resposta for, hipoteticamente, "não existe uma forma clara por causa disso", ela será objetiva. E se existir, dizer qual é essa forma também é objetivo. Pode ter uma pouco de subjetividade, porém boa: http://meta.pt.stackoverflow.com/questions/486/good-subjective-bad-subjective
Comment: Acompanhando a pergunta, gostaria de saber quais as desvantagens de se adotar o método Waterfall.
Comment: @Victor até concordo... em partes. Eu coloquei propositalmente para testar o que acontece, para haver um debate sobre ela. A pergunta nem é minha. Ela existe e é bem aceita em outro site da rede :) Qualquer que seja a decisão, no futuro vou poder usar ela como argumento para um lado ou para outro.
Comment: @FranciscoJunior É por isso que esse usuário não colocou uma resposta aqui, e sim apenas um comentário.
Comment: @FranciscoJunior Este mesmo usuário decidiu mudar de ideia e postou uma resposta. Obrigado pela inspiração.
Answer: Bem, eu não pretendia responder, mas eis um comentário que Francisco Junior fez:

Se por acaso algum usuário vier apenas opinando subjetivamente na resposta (como no primeiro comentário dizendo para "nunca usar waterfall"), ele é que deveria receber votos negativos.

Então vamos lá: Pode sentar o dedo no negativo aqui a esquerda!
De acordo com a página sobre o modelo waterfall na wikipédia:

The first formal description of the waterfall model is often cited as a 1970 article by Winston W. Royce, although Royce did not use the term "waterfall" in this article. Royce presented this model as an example of a flawed, non-working model.

Que traduzindo para o português é:

A primeira definição formal do modelo waterfall é frequentemente apontada como sendo o artigo de Winston W. Royce de 1970, embora Royce não tenha usado o termo "waterfall" neste artigo. Royce apresentou este modelo como exemplo de um modelo falho e não-funcional.

Que interessante! O modelo waterfall já nasceu com a percepção de ser falho e não-funcional! E isso há mais de 40 anos atrás, então imagine hoje!
Bem, vamos dar uma olhada mais afundo no artigo do Royce:

Figure 3 portrays the iterative relationship between successive development phases for this scheme. The ordering of steps is based on the following concept: that as each step progresses and the design is further detailed, there is an iteration with the preceding and succeeding steps but rarely with the more remote steps in the sequence.
[...]
I believe in this concept, but the implementation described above is risky and invites failure. The problem is illustrated in Figure 4. The testing phase which occurs at the end of the development cycle is the first event for which timing, storage, input/output transfers, etc., are experienced as distinguished from analyzed. [...], then invariably a major redesign is required. [...] The required design changes are likely to be so disruptive that the software requirements upon which the design is based and which provides the rationale for everything are violated. Either the requirements must be modified, or a substantial change in the design is required. In effect the development process has returned to the origin and one can expect up to a 100-percent overrun in schedule and/or costs.
[...]
Hopefully, the iterative interaction between the various phases is confined to successive steps.
[...]
Unfortunately, for the process illustrated, the design iterations are never confined to the successive steps.

Traduzindo para o português:

A Figura 3 demonstra a relação iterativa entre sucessivas fases de desenvolvimento neste esquema. A ordenação dos passos é baseada no seguinte conceito: que cada passo é um progresso e o design é melhor detalhado, há uma iteração entre passos precedentes e sucedentes, mas raramente entre passos remotos na sequência.
[...]
Eu acredito neste conceito, mas a implementação descrita acima é arriscada e é um convite a falhar. O problema é ilustrado na Figura 4. A fase de teste que ocorre no final do ciclo de desenvolvimento é o primeiro evento para o qual o tempo, armazenamento transferência de entrada e saída, etc., revelam-se diferentes do que o que foi analisado. [...], e então invariavelmente um redesign pesado é necessário. [...] As mudanças necessárias no design serão provavelmente tão perturbadoras que os requisitos no qual o design foi feito e que proveem a razão para tudo foram violados. Ou os requisitos deverão ser modificados ou uma mudança substancial no design é necessária. O efeito é que o processo de desenvolvimento retornou à origem e então pode-se esperar um estouro de 100% no prazo e/ou nos custos.
[...]
Espera-se que a interação entre as várias fases seja confinada a passos sucessivos.
[...]
Infelizmente, para o processo ilustrado, as iterações demonstradas nunca estão confinadas a passos sucessivos.

Recomendo ler o artigo inteiro, e novamente friso que ele é do distante ano de 1970. Porém, isso continua assim até hoje, waterfall parte do preceito de que o desenvolvimento é composto por etapas rígidas e sequenciais, mas isso nunca funciona e todo mundo que já entrou em algum projeto nisso sabe porquê:

O cliente muda de ideia a toda hora.
O cliente não sabe o que quer.
Surgiu um bug no teste e descobrimos que há um erro lá no começo do projeto.
No meio do projeto acontece uma coisa e então temos que voltar e mudar um monte de coisa.
O usuário não gostou do produto.
O concorrente resolveu o problema de uma forma diferente e melhor.
O cliente pediu mudanças em uma determinada parte, alterando um requisito importante.
Existem dois ou mais requisitos em conflito.
O cliente uma hora diz uma coisa e depois diz o contrário.
Ocorreu um problema difícil de resolver no desenvolvimento e o prazo já foi pro saco.
Etc.

Se quiser algo mais recente, é muuuuito, mas muuuuito fácil achar na internet, poderia facilmente citar Martin Fowler, práticas de TDD, ou até mesmo o livro Head First sobre desenvolvimento ágil, que lá dentro explica porquê que o waterfall não funciona.
E agora, para garantir o meu downvote, eu vou dar a minha observação pessoal sobre o que vemos hoje em dia: De fato, é difícil achar algum material que defenda o waterfall atualmente e que venha de alguém que tenha uma mínima ideia sobre o que está falando, e não apenas papagaiando conceitos antigos que nunca se deu o trabalho de questionar.
Na lista cima eu citei alguns motivos pelo qual o waterfall falha. Basicamente tudo se resume ao fato de que as coisas mudam ao longo do tempo. O que ontem era um requisito, hoje pode não ser mais. O que ontem não era importante, hoje é fundamental. Hoje nós temos uma restrição importante, mas amanhã não temos mais. É aí que as metodologias ágeis entram: elas foram pensadas em atacar estes problemas, assumindo que estas coisas mudam ao longo do tempo e bolando estratégias para que mudanças possam ser implementadas rapidamente.
Bem, confesso que até aqui só dei metade da resposta e não falei nada sobre scrum. Não vou entrar muito em detalhes do scrum e vou apenas fazer uma lista rápida para recomendar quando usar o metodologias ágeis (de forma mais genérica, seja scrum ou não) ou quando usar waterfall, e tenho certeza que depois que você ler isso e já ter dado o downvote, ainda vai chamar os seus amigos para também votarem contra:

Se o seu escopo e os seus requisitos são inegocivelmente fechados, imutáveis e escritos em pedra, e o seu código é absolutamente perfeito e livre de bugs, você pode se dar bem com o waterfall. Caso contrário, eu recomendo o ágil.
Se a sua função ou a função da sua empresa seja gerar milhões de páginas de documentos de requisitos, regras de negócio, decisões arquiteturais, fluxogramas, etc, e estes documentos não serão lidos e nem criticados por ninguém (ou pelo menos por ninguém que tenha o poder de ser ouvido), e não é você quem vai fazer o código, então o waterfall também é para você. Caso contrário recomendo o ágil.
Se você planta bugs e requisitos mal-definidos de propósito no seu projeto para depois cobrar o cliente por qualquer mudança solicitada, então o waterfall também servirá para você. Caso contrário recomendo o ágil.
Se a sua religião, sua filosofia, seu sentido de viver, ou a sua divindade favorita lhe diz que você deve seguir planos burocráticos e rigidamente definidos simplesmente porque as coisas sempre foram assim, são assim e sempre serão assim e que você tem a obrigação de ser feliz com isso sem nunca pensar em questionar, então recomendo o waterfall. Caso contrário recomendo o ágil.

Para finalizar, respondendo a este comentário:

A propósito, certificações aeronáuticas necessitam de modelos formais de desenvolvimento. É muito mais provável que o software que rode nos aviões da Boeing, por exemplo, sejam desenvolvidos com um processo mais próximo do Waterfall do que de uma metodologia puramente ágil e informal como o Scrum. E lhe pergunto uma coisa: você prefere voar em um avião que tem certificação de software da FAA ou em um avião que foi desenvolvido sem qualquer formalidade com Scrum?

Como resposta a isso, digo que no dia 11/10/2013, assisti a uma palestra no IME/USP em São Paulo demonstrando o contrário. O título da palestra era "Combinando Scrum, AOP, DDD e Metadados – Um Caso de Sucesso na Embraer." e os palestrantes Roberto Perillo, Tiaslei Vasni e Daniel Feichas. Eis o resumo da palestra:

Esta palestra consiste na apresentação da abordagem da criação de uma aplicação chamada AHEAD (Aircraft HEalth Analisys and Diagnosis), atualmente em andamento na área de Aviação Executiva na Embraer. A arquitetura da aplicação combina Domain-Driven Design, aspectos e metadados, cujo desenvolvimento está sendo gerenciado com SCRUM. Inicialmente, será mostrado um pequeno histórico de projetos na Embraer e porque foi decidida a utilização do SCRUM. Em seguida, serão mostrados alguns erros cometidos pela indústria de software (segundo a experiência dos membros da equipe) e os conceitos importantes para o entendimento da abordagem utilizada no design da aplicação. A seguir, serão apresentados os requisitos funcionais e não funcionais que motivaram a utilização da abordagem e como os elementos foram implementados. Será mostrado também como é o ambiente ALM que gerencia o ciclo de vida da aplicação e como foram organizados os testes (unidade, integração e sistema). Como exemplo, serão apresentadas questões relacionadas à implementação da segurança na aplicação, AJAX reverso por meio de eventos de domínio, interesses transversais e integração com outros sistemas. Na conclusão, serão apresentados os benefícios obtidos com a abordagem, como o ganho de flexibilidade na aplicação e a aceleração da velocidade da equipe no que diz respeito à produtividade.
Comment: @FranciscoJunior Se você está adaptando o Waterfall para ter ciclos de desenvolvimento, então já não é mais Waterfall! O Scrum é bastante flexível (isso faz parte do propósito dele), então não há problema nenhum em adaptá-lo para que possa atender a certificação que seja, a ideia dele é exatamente a de possibilitar adaptações rápidas à mudanças e a particularidades de cada situação, mas sem sacrificar a ideia de ciclos rápidos e curtos de desenvolvimento (sprints) com histórias, estimativas e backlogs. E rastreabilidade é requisito de software não característica do processo de desenvolvimento.
Comment: Francisco Junior, já vi uma palestra na USP de um pessoal que desenvolvia sistemas de aviônica para a Embraer. Eles usam scrum com TDD e DDD.
Comment: Eu conheço alguns locais onde o Waterfall funciona muito bem há muito tempo, de forma que qualquer mudança, afetaria negativamente o funcionamento da equipe. O Waterfall é como a filosofia deles. Vamos ter cuidado pois cada caso é diferente. Mas, fiquemos cegos por um artigo :)
Comment: Sua visão de modelos de negócios diferentes do "cliente dá requisitos e eu faço para eles" é muito limitada. Nem todos os modelos de negócios são dessa forma. Nem toda empresa contrata outra apenas pelo software. Existem outros artefatos envolvidos: documentação, certificações (que geralmente necessitam um processo mais formal). Enfim. Seu sarcasmo só demonstra sua limitação em analisar racionalmente a questão.
Comment: A propósito, certificações aeronáuticas necessitam de modelos formais de desenvolvimento. É muito mais provável que o software que rode nos aviões da Boeing, por exemplo, sejam desenvolvidos com um processo mais próximo do Waterfall do que de uma metodologia puramente ágil e informal como o Scrum. E lhe pergunto uma coisa: você prefere voar em um avião que tem certificação de software da FAA ou em um avião que foi desenvolvido sem qualquer formalidade com Scrum?
Comment: É difícil comentar algo como "vi uma palestra de um cara que usava". Mas eu diria que não usaram. Se você considera Waterfall apenas como sua primeira definição e ignora todas as suas adaptações, você também deve considerar Scrum assim. E se é assim, eles não usam. Ou se usam sem modificações, não certificam o software. Existem características intrínsecas da DO-178 (certificação aeronáutica) que o Scrum não leva em consideração, como rastreablidade. É necessário adaptar o Scrum para isso (da mesma forma que é possível adaptar o Waterfall para ter ciclos de desenvolvimento).
Comment: @FranciscoJunior Aumentei um pouquinho a minha resposta.
Comment: @VictorStafusa, tentei por as imagens do artigo para que sua resposta ficasse melhor de se ler. Caso discorde, desfaça a vontade
Answer: Vou arriscar a contribuir para esse assunto polêmico, principalmente após ler a resposta do Victor. Quero refutar o argumento dele, mas ao mesmo tempo concordar plenamente com ele. Como?
Waterfall está em todo lugar
Primeiramente, todos os desenvolvedores usam Waterfall. Sempre. O que muda é a escala.
Não podemos burlar a sequência Requisito > Análise > Design > Implementação > Teste > Integração, simplesmente porque é impossível. Como podemos fazer análise sem requisitos, implementação sem saber o que temos que fazer ou teste sem código?
A diferença é que alguns tentam fazer tudo numa sequência, escrevem grandes blocos de código e tentam fazer rodar tudo de uma só vez. Outros, mais como o meu caso, testam o código a cada ou duas ou três linhas modificadas ou acrescentadas.
Então, posso conciliar minhas afirmações fazendo uma diferença entre um Waterfall Completo e um Micro Waterfall. Concordando com o Victor, é simplesmente impossível fazer um Waterfall Completo em um projeto de software porque sempre será necessário revisar erros e mudanças que afetam as etapas anteriores. Mesmo para corrigir um pequeno bug você precisa analisar os requisitos, fazer design de uma solução, implementá-la, testá-la. Por outro lado, o que processos ágeis fazem é diminuir o quanto for possível os time boxes para obter feedback do cliente, criando assim Micro Waterfalls.
Projetos com aparência de Waterfall
Na prática, projetos pode ser "interfaceados* com o cliente com base no modelo Waterfall Completo e micro gerenciados na equipe de desenvolvimento usando Scrum ou qualquer outra metodologia de gerenciamento ágil.
Para alguns clientes, não é interessante obter um produto muito cedo. Pensei no caso de uma mudança de lei com data para entrar em vigor. O que adianta receber o produto antes? Um projeto com um cronograma Waterfall caberia bem nesse caso. Entretanto, nada impede que o desenvolvimento seja feito com princípios ágeis, onde a cada uma ou duas semanas as funcionalidades são integradas numa versão executável, testada usando mocks, apresentada para um cliente (mesmo que não seja o cliente em si, mas um especialista em negócios).
Não podemos ter tudo
Há algum tempo escrevi um artigo sobre o triângulo de ferro. A ideia desta representação é passar a ideia de projetos de software lidam com restrições intrínsecas que não podemos simplesmente ignorar. As comumente citadas são: tempo, recursos, escopo e qualidade.
Metodologias mais tradicionais de desenvolvimento e gerenciamento de software, onde o Waterfall se enquadra muito bem, geralmente tendem a fixar tempo e escopo. O que acontece? Calcula-se o número de recursos necessários para entregar o sistema numa data, as coisas não andam como o planejado e quem sofre é a qualidade.
Processos modernos, que geralmente levam o termo "incremental e iterativo" até o limite, seguem um caminho inverso. Eles geralmente variam o escopo (acrescentando ou tirando user stories da sprint de acordo com a produtividade) para manter o tempo fixo e a qualidade num patamar aceitável.
Considerações finais
Enfim, meu conselho geral seria:

Para desenvolvimento de software, nunca use Waterfall no sentido completo do modelo, pois seria completamente inviável.
Quando, e somente quando, o cliente ou a situação exigir um cronograma rígido, encapsule o desenvolvimento em um projeto com aparência de Waterfall, mas tendo muita consciência de que, quando fixamos o tempo e o escopo, prejudicamos a qualidade. Não podemos ter tudo.
Comment: Essa me parece a melhor resposta. Faz muito sentido a ideia de que qualquer abordagem moderna é uma forma evoluida de análise em cascata, assim como o argumento de que o uso completo e rígido do *Waterfall* é equivocado. O problema principal de qualquer área da Engenharia é o entendimento do problema, e há grande dificuldade na comunicação entre cliente e desenvolvedor especialmente no caso de Software (por isso casos de uso são desenhos tão infantis). Nada melhor para mitigar dúvidas a respeito do "que o cliente realmente quer" do que protótipos funcionais que são gradualmente completados.
Answer: Pra mim, a linha divisória está em "grau de certeza" que se tem do projeto. Projetos que sabe-se exatamente o que construir, waterfall encaixa muito bem (ex.: prédios). Projetos em que existe grande grau de incerteza sobre o que fazer e aprende-se muito durante o projeto, o Scrum se encaixa melhor.
O post Levantamento de requisitos e SCRUM fala um pouco de como o tema "levantamento de requisitos" é abordado em metodologias ágeis.
Ao contrário do Waterfall em que mudanças não são bem-vindas (pois geram "change requests" e demandam revisão de todo  o projeto),  o ágil encoraja as mudanças. Logo, quando o objetivo do projeto é algo fácil de tangibilizar no início do projeto (é fácil prever todas as atividades, prazos, etc), o waterfall se encaixa muito mais. No caso de requisitos difíceis, mais experimentais, o ágil lida melhor, princialmente pois ele encoraja priorizar o que se conhece menos, mitigando o risco do projeto não ser entregue sprint a sprint.
Por essa razão, o scrum geralmente encaixa-se muito bem em projetos de software. No início do projeto, existe muita incerteza que é reduzida pouco a  pouco. Conforme as entregas iterativas recebem feedback do usuário, as melhorias nas funcionalidades são estimadas (em novas estórias), e entram novamente no backlog para serem  priorizadas.
A gestão do prazo começa a ser mais eficiente, pois à  medida que o time vai gerando histórico de "velocidade" (quantas estórias, de quantos pontos são realizadas dentro de uma sprint), sabe-se pelo tamanho do backlog x velocidade qual a previsão de conclusão do projeto.
Em contrapartida, no waterfall, a cultura de cravar datas em pedra acaba imperando, pois para não perder os prazos, as mudanças são desencorajadas. Ao complicar as renegociações de escopo (em cada mudança, todo o encadeamento de atividades, e todo o cronograma deveria ser revisto), o resultado acaba sendo produtos que não são de interesse do usuário, ou o prazo para sua construção é tão  grande que ao terminar o projeto, os requisitos dados no início do projeto não mais refletem a necessidade do usuário.
Uma outra referência interessante sobre o assunto está no livro "Agile principles, patterns and practices", do Robert C. Martin (apêndice B). Neste livro ele uma comparação entre o tempo de "documentação" (ou projeto) x o tempo de construção. Neste exercício, o autor sugere que na construção civil, por exemplo, o custo do projeto é uma fração do custo total de construção e uma vez pronto o projeto, sabe-se exatamente o que construir. Em software, o "modelo", seria o próprio código fonte, enquanto que a construção apenas a "compilação" do software, a construção. Neste caso, o tempo de projeto é quase que todo o tempo do projeto. Nestes cenários, o ágil se enquadra melhor.
Comment: Você poderia elaborar um pouco mais aqui? Parece interessante mas a resposta está muito perto de ser apenas um link que não é adequado para um sites de perguntas e respostas.
Comment: Seria legal complementar a resposta, poderia fazer um resumo do link do site que você passou como referência?
Answer: Quando usar Waterfall?
Quando os requisitos são bem definidos e sem perspectiva de mudança, como a construção de um prédio. Ou seja, muito raramente no caso de software.
Com a ressalva que boas metodologias de desenvolvimento de software costumam ser iterativas e podem definir um modelo semelhante ao waterfall como procedimento de cada iteração, embora o processo como um todo não seja Waterfall.

Quando usar Scrum?
Vou usar as características do Scrum para determinar quando é adequado utilizá-lo.
Dica: Se você vai se casar, pode usar Scrum para organizar o casamento. :)
Scrum é acima de tudo Ágil
O Scrum é uma das formas de se implementar metodologias ágeis; isso define a maior parte do que é o Scrum e como tal ele adota as preferências do Manifesto Ágil:

Indivíduos e interações em preferência a Processos e ferramentas
Software funcionando em preferência a Documentação extensiva
Colaboração do cliente em preferência a Negociação de contrato
Reagir a mudanças em preferência a Seguir um plano

Isso não quer dizer que os critérios do lado direito serão ignorados, mas sim que os do lado esquerdo são preferidos em relação a eles.
A adoção do Manifesto Ágil sugere um perfil de projeto para o qual o Scrum (e demais implementações de métodos ágeis) se adequa melhor:

Quando há expectativa de que os requisitos mudem ao longo do desenvolvimento;
Quando o cliente está disponível para fornecer feedback ao processo de desenvolvimento;
Quando documentar formalmente o processo de desenvolvimento não é crítico para o projeto;
Quando não é necessário que a metodologia em si determine o tipo de documentação gerada por ela.

Scrum tem características próprias
Algumas características específicas do Scrum refinam esse perfil de projeto:

Equipes relativamente pequenas, fisicamente próximas e capazes de se auto-organizarem;
Prazo mínimo de uma sprint para desenvolver o produto.

Situações em que o Scrum brilha (em comparação a métodos não-ágeis):

Por ser iterativo, baseado em sprints e responder rápido a mudanças, o Scrum garante que as mudanças vão ser atendidas da forma mais rápida possível, obedecendo a uma fila de prioridades e entregando o máximo de deliverables que a(s) equipe(s) têm capacidade de entregar dentro desse contexto. Ele mostra seu melhor quando o cliente, além de se preocupar em dispor dessa capacidade de resposta rápida, está ciente da importância de sua própria disponibilidade para fornecer feedback à(s) equipe(s), e deseja ter iterações do produto (entregas parciais) funcionando o mais rápido possível;
Quando as entregas não podem sair do prazo. Isso porque as sprints têm duração pré-definida (embora seja possível cancelar entregas).

Nota: Especialistas em Scrum por favor complementem/corrijam o que foi citado, pois a minha experiência como Scrum é inferior a um ano e apenas como desenvolvedor (porco).
Answer: No Scrum e outros métodos ágeis a participação do cliente (Product Owner) é necessária o tempo todo. Nestes métodos, quando mais o cliente puder interagir de dar feedback para o desenvolvedor melhor será o software produzido, ou seja, o software produzido será mais adequado às necessidades do cliente.
Se, por algum motivo, o cliente não puder estar presente o tempo todo, o Scrum ou outro método ágil fica inviabilizado ou, pelo menos, prejudicado. Aí, provavelmente você vai cair num modelo mais próximo do Cascata (requisitos --> desenvolvimento --> validação).
Mais como regra geral, quanto mais interação e mais feedback melhor.
Answer: Eu recomendo se apoiar na matriz de Stacey, que ajuda a visualizar que quando você tem bastante conhecimento do que será feito e acordo com os envolvidos, o cascata pode servir bem.
Quando você não tem tanta clareza / acordo, o ágil pode servir melhor pois te ajudará a testar e validar pequenas opções ao longo do projeto.
Answer: Quando usar o Waterfall

O Ciclo de vida Waterfall é utilizado principalmente quando o software a ser construído é definido matematicamente e/ou formalmente onde todos os seus requisitos e lógica são previamente estabelecidos e checados matematicamente como o freio ABS. (Logo é de extrema necessidade que o cliente se comprometa com a especificação de requisitos).
Obs: Softwares de suporte a vida devem ser homologados por uma instituição especializada, logo sua documentação dever ser bem estruturada (o que é um requisito para o uso de Waterfall).

Quando usar o Scrum

Quando se é necessário uma entrega de funcionalidades para o cliente em um prazo muito curto (logo é escalonado as prioridade de cada função, a prioridade define a ordem de entrega).
Quando o cliente não tem total certeza de suas necessidades.
Quando o domínio da aplicação está em constante mudança.
Quando a equipe for pequena (+/- 10 membros) e tiver bom entrosamento. (Requisito determinante).
Answer:
Caro, colega, é muito difícil responder à sua pergunta sem emitir algum juízo de valor nem entrar em argumentações complexas. É uma decisão que pode depender de muitos fatores.
Porém, para que não fique sem resposta objetiva e como orientação básica comparativa, sugiro que avalie a tabela acima que resume bem alguns aspectos (prós e contras) famosos de ambas abordagens.
Fonte: https://www.seguetech.com/waterfall-vs-agile-methodology/
Comment: Eu particularmente não enxerguei diferencial de sua resposta às outras anteriores. Poderia tornar mais claro o que sua resposta distingue-se das demais?


How can I use Drush to determine if a module is being used or not in a multisite architecture?

Question: I have a multisite architecture that has over 30 sites.
In one specific site search_api_solr version 7.x-1.0RC5 is installed, and I can see that it's enabled and being used in the module list.
In the common sites/all/modules folder search_api_solr 7.x-1.0-rc2 is there. When I do drush pm-list | grep search I can see that it's listed but "Not Installed."
Does this mean that none of the 30+ sites is using this module and it's safe to delete it? Or is that command simply telling me that it's not being used by the default install?
If the latter, how can I use Drush to tell me what specific sites are making use of modules in the common sites/all/modules directory?
EDIT:
@greg_1_anderson
I tried your solution with:
drush @sites pm-info search_api_solr --field=status
On each line of the output after hitting y I get something like:
.appdrupal#mysite.example.com >> blahblah : some.description
looks like the above output is 3 columns. Possible values for that 'blahblah' column seem to be numerous (requires, required by, type, title, description, version, date, package, 'group', files.. etc, etc..) nothing to denote if it's enabled)
I can see a couple times in the 'blahblah' "status", but it's not singled out. Ultimately this creates 1000s of lines of output. I tried to add | grep status but it hanged (I gave it 120 seconds).
Drupal is 7.26 and Drush version is 5.9 - thoughts?
Comment: I'd guess that output is for the default site, that's where Drush will look without an alias (I think). Could you set up an alias that looks at all of the sites and run the command @alias maybe?
Comment: I did some digging into aliases and saw that 'atSign'sites is available. drush 'atSign'sites pm-list | grep search drove my server crazy but finally spit out something that looked like garbage. Interestingly, the last 5 columns of the output listed package  names from vertically, with one letter of the name on each row. by setting up an alias, you mean in PHP right? Create a file for a custom alias? (http://drush.ws/examples/example.aliases.drushrc.php) I wonder how that would be different from the built in @sites alias
Comment: Hmm, `@sites` hasn't worked for me for ages on multisites, that's why I was suggesting the manual way. But yeah, I did mean setting one up manually
Comment: Come to think of it, that's quite a specific bit of functionality, might be worth  feature request to the module - what were you hoping your supplied parameters and output to look like? Something like `drush @sites   ` as the input and a list of site names with a yes/no for the output?
Comment: @blue928: you may want to add a `--yes` after `drush ATsites pm-list` before piping it into `grep search`. Without `--yes`, Drush by default offers a confirmation "(y/n)" but you never see the prompt because it's being piped into your second command
Comment: .... just to clarify my last comment above, I had to use 'atSign' because the 'at' symbol can only be used once in a comment on SE. How should I have formatted that so it is text rather than it think I'm trying to ping a responder? .. we can delete this comment of course after that's clear. thanks!
Answer: This works in Drush 6.x and later:
$ cd /path/to/drupalroot
$ drush @sites pm-info MODULENAME --fields=status
You are about to execute 'pm-info devel' non-interactively (--yes forced) on all of the following targets:
  /path/to/drupalroot#default
  /path/to/drupalroot#other
Continue?  (y/n): y
.path.to.drupalroot#other   >>  Status   :  enabled
.path.to.drupalroot#default >>  Status   :  enabled

Answer: from within the Drupal installation directory:
drush @sites pml --status=enabled -y | grep module_name

Answer: You need to either set up Drush aliases, so you can run your command against all of the multisite's individual sites at once (as Clive suggests) or you can cd into each individual site (on D7, usually drupalroot/sites/A_SITE/) and run the command so it's checking using that individual site's configuration and not the default site's configuration (which is usually at drupalroot/sites/default/.


Passar Form + Variável por AJAX

Question: Pessoal estou tentando passar meu FORM + a variavel OFFSET, porém não estou conseguindo.. Alguém pode me da um exemplo?
$("#btn-pass").click(function() {

    offset = offset + 5;
    pagina++;

    var data = $("#form-fatura").serialize();

    data.push({
        off: offset
    });

    $.ajax({
        type: 'POST',
        url: 'code-source/return/ret_info_fatura.php',
        data: data,
        async: true,
        dataType: 'json',
        beforeSend: function() {
            $("#btn-pass").prop('disabled', true);
        },
        success: function(response) {
            if (response.codigo == "1") {

                $("#btn-pass").prop('disabled', false);
                $("#btn-back").prop('disabled', false);
                $("#container-fatura").html(response.fatura_animal);
                $("#pagina").html("Página: " + pagina);
            } else {
                $("#btn-pass").prop('disabled', true);
                offset = offset - 5;
                pagina--;
                $("#btn-back").prop('disabled', false);

            }
        }
    });
});

Answer: Uma possibilidade é utilizar o método SerializeArray
var data = $("#form-fatura").serializeArray();
data.push({name: "off", value: offset});

Comment: Já tentei também :\
Answer: Se você der um console.log(data), você verá como os dados são organizados com um padrão assim [nameTag]=[value], caso tenha um input <input type="text" name="nome" value="Vinícius"> no console do seu navegador será impresso nome=vin%C3%ADcius.
Caso hajam 2 ou mais inputs, os dados serão separados pelo caractere &, ou seja, caso houvesse dois inputs:
<form id="formulario">
<input type="text" name="inputa">
<input type="text" name="inputb">

<input type="button" id="button" value="enviar">
</form>

O console exibirá inputa=valueDoInput&inputb=valueDoInputb.
No seu caso basta adicionar a data "&off="+offset
ou
data += "&off=" + offset;

Comment: Genial! Funcionou.

Passar Form + Variável por AJAX


Why isn't $\int_0^1{1/x^2}~dx= 1$ + the integral from 1 to infinity.

Question: This probably as nearly a stupid question as the one that isn't asked,
but I've always thought the area under the curve is equal to the integral.
So
Given the function $\dfrac{1}{x^2}$ which is symetric about $y = x$,
why isn't the integral from $1$ to $\infty$ of $\dfrac{1}{x^2}$ equal to
the $\displaystyle\int_0^1\dfrac{1}{x^2}\,dx$ minus $1$ The unit square under integrated area.
\begin{align}
\int_1^\infty\dfrac{1}{x^2}\,dx &= 1 - 0 = 1
& \text{and}&&
\int_0^1\dfrac{1}{x^2}\,dx &= \infty - 1 =\infty
\end{align}
At least when using the Reimann improper integral.
I also tried Lebesgue and got the same answers.
Any help would be greatly appreciated.
Thanks for taking the time to read my question.
Comment: The function isn't symmetric with respect to $x=y$. The part on $(0,1)$ is symmetric to $1/\sqrt{x}$ by reflection in $x = y$.
Comment: Thanks, I figured that out just after I posted, thanks for your quick reply.
Comment: Welcome to Math.SE! This site has a feature called MathJax that let's you format proper mathematics using keyboard characters.  I'll try my hand at editing your Question, but if you learn to use this, it may help you think the problem through as you carefully explain the formulas involved.
Comment: Thanks for that, I didnt think to use the dollar dollar syntax, but Im aware of it now.
Answer: There is an isometry between the domain $D$ bounded by the curve $y=1/x$ for $x$ in $(0,1]$, the segment $[0,1]\times\{1\}$ and the halfline $\{0\}\times[1,+\infty)$, and the domain $E$ bounded by the curve $y=1/x$ for $x$ in $[1,+\infty)$, the segment $\{1\}\times[0,1]$ and the halfline $[1,+\infty)\times\{0\}$.
But the area of $E$ is $\int\limits_1^\infty\frac1{x}\mathrm dx=+\infty$. On the other hand, consider the square $K=[0,1]\times[0,1]$, then $K$ and $D$ are disjoint and the area of $K\cup D$ is $\int\limits_0^1\frac1{x}\mathrm dx=+\infty$.
Thus, if one insists on translating the isometry between $D$ and $E$ in terms of areas, one should write something like $+\infty=+\infty-1$... which, despite some uneasy feelings the RHS may bring to the reader, happens to be true.


How do plugins store their configuration/field data?

Question: I'm creating a custom Commerce License and I notice that I'm handling defaultConfiguration(), buildConfigurationForm(), submitConfigurationForm(), and buildFieldDefinitions(), but I cannot figure out where in the database this information is stored. I know that it must exist somewhere as the data loads up when I view the entity, but I cannot seem to find it. It doesn't seem to have anything to do with Configuration that would exist in a sync folder despite the similar names.
I'd assume buildFieldDefinitions() has something to do with it, but I cannot seem to figure out exactly what that method is doing at all.
Comment: All configuration is exported to the sync folder as well. So why does it matter where it is stored in the database?
Comment: All configuration is stored in the `config` table in the database.
Comment: Thought that'd be the case, but I don't see any entries whose names seem quite right. Do you know how the `name` col is set/determined in `config`?
Comment: Depends on what you are configuring.
Comment: Because what I'm describing is specifically not in the exported site config at all. See the packaged commerce license plugin: https://git.drupalcode.org/project/commerce_license/-/blob/8.x-2.x/src/Plugin/Commerce/LicenseType/Role.php. When a license is saved on a Product Variant, it's saved to `$this->configuration['license_role']`. Then when the edit form is loaded again, that value is used as the field default. But, exporting site config holds no reference to the value in `$this->configuration['license_role']`.
Comment: Normally configurable plugins are connected with a config entity to store the plugins configuration, but they don't need to. Plugins can be instantiated with configuration retrieved from any place, which for this plugin type is explained in the module code you have linked https://git.drupalcode.org/project/commerce_license/-/blob/8.x-2.x/src/Plugin/Commerce/LicenseType/LicenseTypeInterface.php.
Comment: Somehow missed that Interface you linked -- thanks for that. Looking through the db again I did find a `plugin_confguration` col in some associated tables. I didn't realize those were hex/seralized data. Converting the hex string revealed the data I had been expecting to find. Was hoping to set some of this data during a migration but it might be trickier than I'd anticipated.
Answer: Sounds like the answer is "the data is probably the config table... but it could also be anywhere else depending on the implementation." In the commerce_license example I noted, instances of LicenseTypes on Product variants get their own entry in commerce_product_variation__license_type, where the data for that instance is stored in the license_type_target_plugin_configration column. Just like data stored in the config table, this is a hex blob which, when decoded, is the config field data as a serialized array.


Quando converter um bitmap para string base64?

Question: Eu sei que, antigamente, era necessário converter uma imagem para string, por causa de limitações com o SMTP.
Minhas dúvidas são:

Qual a utilidade dessa prática atualmente?
Existe algum ganho em termos de desempenho em relação a armazenar/transmitir dados binários em seus formatos originais (nesse caso, bitmap)?
Quando armazenadas localmente, devemos utilizar bitmap ou string base64?
Quando é uma boa prática utilizar bitmap? E string base64?
Answer: Base64 é uma forma de escrever um vetor de bytes qualquer usando só letras e números (e mais uns dois ou três símbolos). Vale notar que base64 não é um padrão universal mas sim uma família de codificações semelhantes: a maioria concorda em usar A-Z, a-z e 0-9 como 62 dos 64 símbolos da codificação mas há uma certa variação sobre os dois últimos caracteres usar, qual o valor numérico atribuído para cada símbolo e como escrever o padding caso a mensagem a ser codificada não tenha um número de bytes múltiplo de 3.
Qual a utilidade dessa prática atualmente?
Às vezes você precisa incluir dados binários em algum lugar que só aceita caracteres ASCII. Além do exemplo de email que você já mencionou:

Embutir um ícones codificados com base64 dentro de um arquivo HTML, Javascript ou CSS.
Nomes de arquivos
URLs (por exemplo, aquelas letrinhas em um URL abreviado pelo twitter)

Quando armazenadas localmente, devemos utilizar bitmap ou string base64?
Se possível, armazene os dados no formato original. Você gasta menos espaço (cada grupo de três bytes é codificado usando 4 bytes em base64) e não precisa se preocupar com ficar codificando e decodificando os dados o tempo todo.
Existe algum ganho em termos de desempenho em relação a armazenar/transmitir dados binários em seus formatos originais (nesse caso, bitmap)?
Em geral, ao usar base 64 você paga um preço de performance (cada 3 bytes do arquivo original são codificados usando 4 bytes ASCII) em troca de poder escrever seus dados em um lugar que não aceitaria os dados binários diretamente.
Codificar os dados só tem como ganhar performance indiretamente. Por exemplo, no caso do favicon, o preço de embutir os dados em base64 pode ser menor que o preço de uma request HTTP extra para pegar o arquivo binário separadamente. No caso dos URLs, base64 pode ser usado para escrever números de forma compacta: da mesma forma que números escritos em hexadecimal tem menos dígitos que o equivalente decimal, números em base 64 ou base 62 são ainda mais compactos. Por exemplo, o 32695 no url dessa pergunta poderia ser escrito como "3-H" = 3*642 + 62*641 + 55.
Answer:
Qual a utilidade dessa prática atualmente?

Portabilidade. Em alguns casos você precisa garantir que o recurso estará disponível em qualquer situação: Se seu conteúdo HTML está sendo gerado dinamicamente em modo offline, sem acesso à internet ou operando em um protocolo (HTTPS por exemplo) que não lhe permite acessar recursos em modo híbrido.
Um exemplo são os Chrome URLs, onde todas as imagens presentes são base64:

Teste algumas destas URLs no Chrome:
chrome://ipc
chrome://inspect
chrome://media-internals
chrome://memory

Existe algum ganho em termos de desempenho em relação a
  armazenar/transmitir dados binários em seus formatos originais (nesse
  caso, bitmap)?

Na prática, a diferença é negligível. Uma vez que seu conteúdo esteja armazenado em cache, ele é tratado da mesma maneira pelos browsers modernos, seja sua origem uma resposta a um GET ou interpretação de conteúdo inline base64.
(Vale mencionar que se você estiver embutindo conteúdo base64 em uma página gerada dinamicamente você estará reenviando o conteúdo a cada requisição.)

Quando armazenadas localmente, devemos utilizar bitmap ou string
  base64?

Se por localmente você quer dizer o navegador, não existe razão para se preocupar com isso.
Caso você queira dizer o servidor, isso depende da sua estratégia de implementação; lembre-se que toda alteração do arquivo atômico (contendo HTML/CSS + base64) implicará em um flush/refresh do cache.

Quando é uma boa prática utilizar bitmap? E string base64?

Os formatos binários mais utilizados (JPEG, PNG) utilizam menos bytes do que uma string base64, mas essa diferença só é sentida em um acesso com o cache ainda vazio.
Se você está armazenando uma grande quantidade de imagens ou visualizando apenas um pequeno set da coleção, utilize arquivos binários.
Se sua aplicação utiliza poucos gráficos bitmap ou precisa rodar em modo offline, base64.


Choosing a 2D game engine for a simple Zelda-style adventure game

Question: For a Christmas gift, I'd like to make a brief Zelda-style (circa Link's Awakening) adventure game. I have extensive experience with python, JavaScript, XML, PHP but have never undertaken game development.
Not picky about platform (investigating pygame), but extra points for browser and double points for Android.
A bit overwhelmed by choices.
Seeking game engine with Hype-style UI that lets me spend most of my time doing fun things (creating sprites, maps, dialogue) and minimal time coding (collision detection, AI).
Also want world peace, pony.
What engine do you recommend?
EDIT: I'm seeing some consensus among other stackoverflow answers that AndEngine is the jam for 2D. Googling brings me this editor: http://www.andengine.org/forums/updates/leveleditor-t720-10.html
Are there any more tools like this to supplement my laziness levels?
EDIT AGAIN: All right, TILED is amazing: http://www.mapeditor.org/. If there's something like this for characters, I'm a happy developer.
UPDATE: Spent 7 hours on AndEngine installation and still couldn't run examples. Gave up. Currently pursuing Akihabara: http://www.kesiev.com/akihabara/
Comment: Kesiev's akihabara turned out to be exactly what I was looking for. One of his examples is a Zelda-style game. It was very easy for me to edit the splash image, sprites, maps and dialog to do what I wanted. You would never ever do this for a commercial application, obviously, but for a personalized Christmas present it was perfect. Seven hours of work and I had what I wanted!
Comment: I don't know about the engines, but if let me know if you get that pony.
Answer: One month is not a lot of time for any kind of game development - especially if you have no prior experience with this.
My first piece of advice would be to dial your level of ambition down - way down. Start out with an extremely basic idea (type - move an avatar around a small game world and get text to show), and then build gradually on that if you have the time.
For Android development, I would make a very simple recommendation: use the native graphics API. It's easy to build the user interface using native SDK, and the SurfaceView and Canvas provide more than adequate enough tools for a simple game. For what you want to do, AndEngine and the rest are simply overkill. If you want to do something bigger and better later, then it may be worthwhile to spend time with a full-scale game engine or learning OpenGL - but not for a simple 2D game.
Good luck.
Answer: You definitely should check this : http://www.solarus-games.org/. It is an open-source game engine, specially made for Zelda A Link To The Past style of games !
Answer: As mentioned in the comment above, kesiev's akihabara turned out to be the jumping-off point I was looking for: powerful, flexible and well-documented. I recommend it!


stepwise logistic regression non significative variables(high p-values)

Question: i am doing stepwise for logistic regression then the p-values of all variables selected were high then 0.05. According to this publication
Stepwise regression in R – Critical p-value
I changed the code to the following
step(glm(y~.,data=mydat,family="binomial"),direction="both",k=9)
 9.22952=qchisq(0.05,3.84,lower.tail=FALSE)

but the problem persist mean that i have the following p-values
0.21
0.19

What shall i do?  Thanks a lot in advance for any help.
Comment: qchisq(0.05, 1, lower.tail = FALSE) does not equal 9 in my version of R. I suppose it is pointless telling you that the post you link to does say this (stepwise modelling) is a bad idea anyway.
Comment: yes mdewey you are right i modified the post,
why stepwise modelling is a bad idea ?
Comment: I still think your call of qchisq is wrong.
Comment: mdewey this is what i found in the link above !
Answer: I think there is a more serious issue here than the use of stepwise regression

but the use is a must for me ! how can i get 0.05 p values means significant variables using stepwise ?

Science is not a quest for p < 0.05.  Science is a quest for discovering repeatable and understandable patterns in our world.  If you go into research looking for p < 0.05, you will find it with enough effort.  Unfortunately, to do so, you sell out the soul of true science, and your results will no longer be scientific.
The idea between the p < 0.05 threshold is to guarantee that at most $5\%$ of research findings are false positives.  But this guarantee makes a lot of assumptions about the honesty and integrity of the scientists using the statistical tools.  Dredging your data to find p < 0.05 is about the worst thing you can do, it annihilates all of the guarantees the statistical framework is supposed to provide.
So yes, we could tell you how to torture your data until you get the magical p < 0.05, but we will not do so.  To do so would be to sell out the thing we truly love, science.
Comment: I agree with Frank.  You need a deeper understanding of the procedures you are using.  You need to understand why p-values are invalidated by stepwise selection.  There are many, many explanations of this in the history of this site.  There is no simple fix, and there is no recipe for correct science.  Only a deeper understanding will help you.
Comment: Perhaps the OP would like to look at http://stats.stackexchange.com/questions/20836/algorithms-for-automatic-model-selection which is one of the 'many, many explanations'
Comment: Just to point this out a p<0.05 threshold does certainly not guarantee that at most 5% of research findings are false positives. I guarantees that at most 5% of p-values will be <0.05 under the null hypothesis, but depending on how many of the investigated null hypotheses hold the false positive rate could be way higher than 5%.
Comment: Honestly, if you are having trouble dredging for p-values meeting an arbitrary threshold, it seems likely that the scientifically honest conclusion is that your desired research result is probably false.
Comment: so i can use what in place of stepwise or what comments i should put for these p-values ?
other things to add are
that i am searching the influence of quantitative variables in a qualitative variable which is (normal/abnormal) this is why i am using logistic regression and stepwise selection !
Comment: i should may be add the detail that when i did this code `glm(y~.,data=mydat,family="binomial")` i got this message
 glm.fit: algorithm did not converge
2: glm.fit: fitted probabilities numerically 0 or 1 occurred
and when i did summary of the result all the variables where significants means p-values were < 0.05 then after doing stepwise none of the selected variable is significant !
Comment: did this influence results ?
Comment: did the lrtest() solve the problem ?
Comment: Fair point @Björn, my classical hypothesis testing is weak.  If you'd like to edit for more truthfulness I would appreciate it.
Comment: @prep i dont know what you mean "solve the problem". Lack of signifigance is not in itself a problem.
Comment: so what mtthew i will not have a model if all variables are not significative ! ?
Comment: You still have a model if all the variables is not significant.  It only means that, in that model, the contribution of each individual predictor is not distinguishable from noise.  The overall model may still be predictive.  If your goal is to answer a research question such as "this variable has a statistically significant effect on this thing", then, indeed, you have not proven that to be the case.
Comment: good morning , but what surprise me is that all variables were significant before stepwise selection ! what can i conclude from this result should i keep the first model or the model after selection ?
Comment: any response please i said that i have 50 variables in first step i did the following glm(y~all variables,family=binomial,data=mydat)
then summary and all the 50 variables were significative then i did stepwise it selected only 27 variables from 50 but all were not significative
what is the conclusion then for example in case one variable x were significative and after stepwise non significative i will say x influence the qualitative  y or not ? thanks in advance
Comment: @prep is the full model what gave you the error message: "fitted probabilities numerically 0 or 1 occurred"?
Comment: @MatthewDrury yes the full model gave me this message
and the model with stepwise also gave me 50 warnings the algorithm did nit converge and fitted probabilities numerically 0 or 1 occurred
thanks a lot for any help
Comment: what should i do please ?
Comment: Given your error messages, everything reported from your regression is not usable.  Please look up "perfect separation" on the site, this is probably what is causing your convergence/identification issues.
Comment: @matthew i looked to the posts but did not know the cause in fact in addition i did confusion matrix for both model for the first the full one accuracy was equal to 0.99  end then with the stepwise model containing non significative variables the accuracy was equal to 1
what can i conclude or correct  please ?
Comment: @prep We're at the point in this conversation where you should ask a separate question.  Please post as much detail as you can, including data, code, and a complete description of your intent.
Answer: Without penalizing for the variable selection algorithm your results are very likely to be overstated, misleading, and P-values will be too low and confidence intervals too narrow.
Comment: Avoid stepwise regression until you understand all the ramifications of data dredging.  My course notes go into some detail: http://biostat.mc.vanderbilt.edu/rms
Comment: How can the use of stepwise regression be "a must"? One usually starts with a question to be investigated and then identifies an appropriate statistical method. Starting with a method (that also happens to be inappropriate for any other purpose than somehow generating p<0.05 no matter whether it means anything) is the wrong way around.
Comment: Learning any field takes time.  I would not try to be an expert in your field with a few minutes of study.
Comment: hi frank,
i don't undersand what shall i do ?
Comment: but the use is a must for me ! how can i get 0.05 p values means significant variables using stepwise ? thank you in advance
Comment: yes i know that it takes time , but, i need a solution for my problem what is the meaning of "penalizing for the variable selection algorithm " ?
Comment: E.g. using penalized maximum likelihood estimation such as lasso or elastic net.


Is sequence related to ordered pairs?

Question: I was exploring the meaning of sequence, and that what I found

Let $$ be a non-empty set.
A sequence of elements of $$ is map $$ from $ℕ$ to $$.
That is, the domain of $$ is the whole set $\mathbb{N}$
$$  : ℕ \to  $$
where $_:=()∈$, for all $∈ℕ$.
Recall that $ℕ={1,2,3,…}$

So, my question is, can elements of sequences be treated like pairs? where the first element of the pair is the order and the second element is the value.
Comment: ^ they *can* (because of one of the common definitions of a function), but usually, operationally, people don't think in this way about functions or sequences, so if you do so, make sure to be very explicit.
Comment: Yes, you could certainly look at them in that sense. In particular, a sequence is a $\textit{function}$ from the naturals into your given ambient space. And the first component of your "ordered pairs" will start at 1 and go up by 1 each time. For example the sequence $\{\frac{1}{n}\}_{n \in \mathbb{N}}$ can be viewed as $(1,1),(2,\frac{1}{2}),...$. hope this helps
Comment: Please use [MathJax](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference) to formulate the mathematics in your MSE questions. As for your a question, a standard representation of a sequence in set theory is as a set of pairs. If you are trying to exploit this outside set theory, I recommend you think carefully about what you are trying to achieve. since your readers may not be comfortable with this kind of representation.
Comment: To help get you started, I formatted your post with block quotes (introduced using `>`) and added some simple mathjax. For future reference, `\mathbb{N}` is the natural numbers and `\to` is a function arrow. Also, please include a reference to where you are taking this definition from if possible.
Answer: The answer is yes if you consider the simple example of a function that generates Pell numbers by iteration. Pairs of these values are needed for Euclid's formula
$$ \qquad A=m^2-k^2\qquad B=2mk \qquad C=m^2+k^2\qquad$$
to generate
Pythagorean triples
where $\quad A-B=\pm1.
\space$
\begin{equation}
\text{The formula}\quad
\quad m=k+\sqrt{2k^2+(-1)^k}
\quad\text{generates}\quad 1,2,5,12,29,70,\cdots
\end{equation}
Each $\space n^{th}\space\space  k$-value generates an $m$-value and each $m$-value becomes the $\space (n+1)^{th} \space\space k$-value.
\begin{align*}
k=1\qquad &\implies m=(1+\sqrt{2(1)^2+(-1)^1}\space)\big)=2\space  & F(2,1)=(3,4,5)\\
k=2\qquad  &\implies m=(2+\sqrt{2(2)^2+(-1)^2}\space)\big)=5\space  & F(5,2)=(21,20,29)\\
k=5\qquad  &\implies m=(5+\sqrt{2(5)^2+(-1)^5}\space)\big)=12\space  & F(12,5)=(119,120,169)
 \end{align*}
Every adjacent pair corresponds to  an $\space n^{th}\space$ Pythagorean triple where $\space n\in\mathbb{N}.$
Answer: In set theory, it is common to define a function $f$ as any set of ordered pairs such that if $(a,b)\in f$, and $(a,c)\in f$, then $b=c$. Then, we can define a sequence as a function with a domain of $\Bbb N$. So the answer to your question is yes, we can think of elements of sequences as ordered pairs.
However, many mathematicians would feel uncomfortable with the idea that a sequence is literally just a set of ordered pairs satisfying certain properties. Arguably, the set theoretic construction of sequences only exists to demonstrate that they can be given a formal definition, meaning that we can feel confident that the everyday notion of sequences doesn't lead to any sort of contradiction. But in practice, it is seldom useful to think of mathematical objects as literally being the same as their set theoretic representations. For further discussion of this philosophical point, see here.

Is sequence related to ordered pairs?


Problemas ao ajustar um modelo de efeitos mistos utilizando o pacote gamlss

Question: Estou tentando ajustar um modelo de efeitos mistos considerando o pacote gamlss.
O modelo que eu estou ajustando é definido a seguir:
library(gamlss)
ModelGamlss <- gamlss(log(Var1)~re(fixed=~log(Var2)+log(Var3)+
(Var4)+(Var5),random = list(Var6=pdDiag(~Var7))),
data=Data2)

No entanto, o seguinte erro é apresentado:
Error in gamlss(log(Var1) ~ re(fixed = ~log(Var1)~re(fixed=~log(Var2)+log(Var3)+(Var4)+ :
  The data contains NA's, use data = na.omit(mydata)

Após me deparar com este erro, realizei a seguinte modificação na sintaxe do modelo considerado:
ModelGamlss <- gamlss(log(Var1)~re(fixed=~log(Var2)+log(Var3)+
(Var4)+(Var5),random = list(Var6=pdDiag(~Var7))),
data=na.omit(Data2))

Todavia, um novo erro é apresentado:
Error in lm.wfit(x, z, w, method = "qr", ...) : 0 (non-NA) cases

Como poderia solucionar os problemas enfrentados anteriormente? Visto que o primeiro erro informa que existem NA's na base de dados, porém, ao observar a base de dados nenhum NA é observado, e mais, qual seria o motivo dessa segunda mensagem de erro estar aparecendo ao tentar ajustar o modelo acima?
Comment: @RafaelTavares os dados de acesso a links externos estão sendo removidos, inclusive do histórico (ficou muito mais complicado o processo por ter sido feito da maneira errada, com edits - gerou diversas entradas com os dados, em vez de sumir com elas). Nestes casos as perguntas devem ser fechadas de imediato. Nenhuma pergunta pode depender de links. E se perceber alguma com dados de acesso, sinalize para a moderação (usando o "outros problemas" que dá espaço para descrição textual).
Comment: Estou votando para fechar pois a pergunta não atende os critérios de um [mcve]. Leia [Como criar um exemplo mínimo reproduzível em R](https://pt.meta.stackoverflow.com/q/824/100416) - não há um conjunto de dados mínimo para a reprodução do problema. Dados sigilosos não devem ser publicados aqui, em casos assim, crie dados falsos ou mascare-os de modo que ainda seja possível reproduzir o problema.
Answer: O problema deve estar na forma como os dados são lidos do Google Drive. O ficheiro do link é um ficheiro CSV com vírgulas como marcador para as decimais. E o separador de colunas é o ponto-e-vírgula, ";". Para ler ficheiros neste formato CSV deve-se usar o read.csv2.
library(gamlss)

ModelGamlss <- gamlss(
  log(Var1) ~ re(fixed = ~ log(Var2) + log(Var3) + Var4 + Var5,
                 random = list(Var6 = pdDiag(~ Var7))),
  data = Data2)
#GAMLSS-RS iteration 1: Global Deviance = -1706.294
#GAMLSS-RS iteration 2: Global Deviance = -1706.294

summary(ModelGamlss)
#******************************************************************
#Family:  c("NO", "Normal")
#
#Call:  gamlss(formula = log(Var1) ~ re(fixed = ~log(Var2) +
#    log(Var3) + Var4 + Var5, random = list(Var6 = pdDiag(~Var7))),
#    data = Data2)
#
#Fitting method: RS()
#
#------------------------------------------------------------------
#Mu link function:  identity
#Mu Coefficients:
#            Estimate Std. Error t value Pr(>|t|)
#(Intercept) 3.100661   0.002601    1192   <2e-16 ***
#---
#Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#
#------------------------------------------------------------------
#Sigma link function:  log
#Sigma Coefficients:
#            Estimate Std. Error t value Pr(>|t|)
#(Intercept) -2.70187    0.02742  -98.53   <2e-16 ***
#---
#Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#
#------------------------------------------------------------------
#NOTE: Additive smoothing terms exist in the formulas:
# i) Std. Error for smoothers are for the linear effect only.
#ii) Std. Error for the linear terms maybe are not accurate.
#------------------------------------------------------------------
#No. of observations in the fit:  665
#Degrees of Freedom for the fit:  49.27846
#      Residual Deg. of Freedom:  615.7215
#                      at cycle:  2
#
#Global Deviance:     -1706.294
#            AIC:     -1607.737
#            SBC:     -1385.995
#******************************************************************

Leitura dos dados
De help("read.csv2"), ênfase minha:

read.csv and read.csv2 are identical to read.table except for the defaults. They are intended for reading 'comma separated value' files ('.csv') or (read.csv2) the variant used in countries that use a comma as decimal point and a semicolon as field separator.

Tradução Google, editada:

read.csv e read.csv2 são idênticos a read.table, exceto pelos padrões. Eles se destinam à leitura de arquivos de 'valores separados por vírgula' ('.csv') ou (read.csv2) a variante usada em países que usam uma vírgula como ponto decimal e um ponto e vírgula como separador de campo.

google_id <- "1q4XuSPnZXx7TsrT3JVoucFyxeOSegWFz"
google_file <- sprintf("https://docs.google.com/uc?id=%s&export=download", google_id)
Data2 <- read.csv2(google_file)

str(Data2)
#'data.frame':  665 obs. of  7 variables:
# $ Var6: chr  "A5A" "A5A" "A5A" "A5A" ...
# $ Var2: num  15.8 15.8 15.8 15.8 15.8 15.8 15.8 15.8 15.8 15.8 ...
# $ Var1: num  15.1 10.9 13.2 13.5 16.8 15.4 16.1 15.2 15.3 13.9 ...
# $ Var3: num  0.817 1.512 1.267 1.262 0.754 ...
# $ Var4: num  0.0364 0.0674 0.0564 0.0562 0.0336 ...
# $ Var5: num  0.0801 0.1482 0.1242 0.1237 0.0739 ...
# $ Var7: int  0 0 0 0 0 0 0 0 0 1 ...

Comment: @BrenoG. Não sei onde a encontrei, mas uso desde então e dá (quase?) sempre certo. O `id=%s` vai ter o valor `id=1q4XuSPnZXx7TsrT3JVoucFyxeOSegWFz`, veja `?sprintf`.
Comment: @BrenoG. Pode também fazer o download e depois `Data2 <- read.csv2("DataNew.csv")` chega, não são necessários os outros argumentos, porque já são esses os valores que têm. O `read.csv2` é uma forma deliberadamente inflexível de `read.table` com os argumentos apropriados.
Comment: Olá Rui! Muito obrigado pelo seu feedback. Então, estranho que mesmo eu usando o seguinte comando ````Data2 <- read.csv2("DataNew.csv", header=T, sep=";", dec=",")```` o erro ainda continua.
Comment: Rui, essa parte do seu código ````"https://docs.google.com/uc?id=%s&export=download"```` você pegou onde?


Image upload form doesn't work on the web

Question: I have a working HTML/PHP based site running on my local host (using XAMPP). But when I transferred it to a live server one part doesn't want to work.. The image upload. The database on localhost and live are almost identical. And all the other stuff using the database works fine. I'm only not able to upload images.
This is the code i use for the upload:
    <?php
include 'includes/header.php';
    ?>

    <form action="image.php" method="POST" enctype="multipart/form-data">
        <input type="file" name="image">

        <input type="submit" name="submit" value="Upload">
    </form>

    <?php

        if(isset($_POST['submit']))
        {

        include 'includes/connection.php';

        $imageName = mysql_real_escape_string($_FILES["image"]["name"]);
        $imageData = mysql_real_escape_string(file_get_contents($_FILES["image"]["tmp_name"]));
        $imageType = mysql_real_escape_string($_FILES["image"]["type"]);

        if(substr($imageType,0,5) == "image")
        {
            mysql_query("INSERT INTO `blob` VALUES('','$imageName','$imageData' )");
            echo "Plaatje opgeslagen";
        }
        else{
            echo "alleen plaatjes";
        }
        }
        ?>

I'm sorry it might seems sloppy for you guys! But I'm still learning :). To explain the code a little:
In the top is te form .
then we get the submit
the include connection is working because we have a connection with the database. Else we would not be able to be on the site.
The query needs to be inserted to the table called: 'blob' with the following fields: 'id', 'name', and 'image'.
So the strange thing is, it works on localhost but not live. I hope someone can help me. This was my first post on stackoverflow, if I did something wrong or unusual let me know I'm verry willing to learn! Thanks!
Comment: Have you tried checking your PHP error logs?
Comment: Please check which version of PHP in live.
Comment: Go through `mysqli` or `PDO` because in `PHP 7` `mysql_*` was removed.
Answer: The mysql_query() function was deprecated in PHP 5.5.0. A newer standard to look into is the PDO driver built into PHP.
Also CertaiN has the top post currently at http://php.net/manual/en/features.file-upload.php

You'd better check $_FILES structure and values throughly.
  The following code cannot cause any errors absolutely.

Example:

header('Content-Type: text/plain; charset=utf-8');

try {

// Undefined | Multiple Files | $_FILES Corruption Attack
// If this request falls under any of them, treat it invalid.
if (
    !isset($_FILES['upfile']['error']) ||
    is_array($_FILES['upfile']['error'])
) {
    throw new RuntimeException('Invalid parameters.');
}

// Check $_FILES['upfile']['error'] value.
switch ($_FILES['upfile']['error']) {
    case UPLOAD_ERR_OK:
        break;
    case UPLOAD_ERR_NO_FILE:
        throw new RuntimeException('No file sent.');
    case UPLOAD_ERR_INI_SIZE:
    case UPLOAD_ERR_FORM_SIZE:
        throw new RuntimeException('Exceeded filesize limit.');
    default:
        throw new RuntimeException('Unknown errors.');
}

// You should also check filesize here.
if ($_FILES['upfile']['size'] > 1000000) {
    throw new RuntimeException('Exceeded filesize limit.');
}

// DO NOT TRUST $_FILES['upfile']['mime'] VALUE !!
// Check MIME Type by yourself.
$finfo = new finfo(FILEINFO_MIME_TYPE);
if (false === $ext = array_search(
    $finfo->file($_FILES['upfile']['tmp_name']),
    array(
        'jpg' => 'image/jpeg',
        'png' => 'image/png',
        'gif' => 'image/gif',
    ),
    true
)) {
    throw new RuntimeException('Invalid file format.');
}

// You should name it uniquely.
// DO NOT USE $_FILES['upfile']['name'] WITHOUT ANY VALIDATION !!
// On this example, obtain safe unique name from its binary data.
if (!move_uploaded_file(
    $_FILES['upfile']['tmp_name'],
    sprintf('./uploads/%s.%s',
        sha1_file($_FILES['upfile']['tmp_name']),
        $ext
    )
)) {
    throw new RuntimeException('Failed to move uploaded file.');
}

echo 'File is uploaded successfully.';

} catch (RuntimeException $e) {

echo $e->getMessage();

}

?>

His code contributed is how I choose to validate and store files. Note that instead of storing the image on the database he uploads it to the server in a file named uploads/
You can then store this file path in the database column and retrieve it when needed.
Hope this helps.
Answer: A few notes:

You might want to update to use mysqli or PDO_MYSQL as of PHP 7 mysql features are removed.
Never trust form data (such as $_FILES["image"]["type"]) it is not reliable.
May want to check image size so people are not uploading massive images into your database.

Try something more like this:
HTML:
<form action="image.php" method="post" enctype="multipart/form-data">
Select image to upload: <input type="file" name="imageUpload" id="imageUpload">
<input type="submit" value="Upload Image" name="submit">
</form>

PHP:
<?php
$imageTypes = ['png', 'jpg', 'gif'];
if($_POST["submit"] == 'Upload Image')
{
    $fileExt = pathinfo($_FILES['imageUpload']['tmp_name'], PATHINFO_EXTENSION);
    if(!in_array($fileExt, $imageTypes))
        throw new Exception("Invalid upload type we only accept: " . implode(", ", $imageTypes)).
    else
    {
        $imageStr = mysql_real_escape_string(file_get_contents($_FILES['imageUpload']['tmp_name']));
        $imgName = mysql_real_escape_string($_FILES["imageUpload"]["name"]);
        mysql_query("INSERT INTO `blob` VALUES('','$imgName','$imageStr' )");
    }
}

More about mysqli: http://php.net/manual/en/book.mysqli.php
More about PDO_MYSQL: http://php.net/manual/en/ref.pdo-mysql.php


How to send a JSON object in the response of a Node.js HTTP server?

Question: I'm building a simple HTTP server using basic Node.js and I need to send a JSON object in the response to a client. I'm using the built-in http module and I'm able to send a simple string or buffer, but when I try to send JSON it throws an error.
const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'application/json'});
  res.write({name: 'John Doe', age: 30});
  res.end();
});

server.listen(3000, () => {
  console.log('Server started on port 3000');
});

When I make a request to this server, I get an error saying that the write method only accepts strings or buffers. How can I send a JSON object in the response?
Note: I've already tried using JSON.stringify() on the object, but it doesn't seem to work.
Answer: Try
const server = http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'application/json'});
  res.end(JSON.stringify({name: 'John Doe', age: 30}));
});

The documentation has a similar example
https://nodejs.org/api/http.html#httpcreateserveroptions-requestlistener
Comment: Strange. When I tried yesterday with JSON.stringify it didn't work. Now the same code is working. You are right. JSON.stringify is the correct answer.

Thanks
Answer: You can do it in two ways,
Method 1:
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify({key:"value"}));

Method 2:
res.json({key:"value"});

The second method provide more easiness to the developer where we don't need to explicity create json strings.


If x is a negative number, which one of those numbers are the bigger?

Question: Those below are the only answers which I am having a hard time to find a solution:
A.6+x
B.6x
C.6/x
D.6-x
Answer: First, lets go throught the options.
A) 6+x. If x is a negative number, this will increase its value by 6, bringing it closer to or above 0.
B) 6x. Multiplying any negative number by a positive number will result in an even larger negative number, ruling this option out.
C) 6/x. Dividing a negative number by a positive number will always give a positive number, so this can also be ruled out.
D) 6-x. This is the correct answer. As subtracting a negative number will, essentially, be addition, this value will exceed the value achieved in option A.
Hope this helped!
Comment: option C) ?????
Answer: B and C are negative and A is less than 6. D is greater than 6.


if-check in HTML gone awry

Question: I wrote a short function to do some error checks for a form and am stuck at a portion of code where the final 'elseif' clause in the code below keeps getting executed, even when there is text in the textbox...
could you please advise...thank you..
    function errorCheck(){

    if(!isInteger(document.getElementById("appleQty").value)){
    alert('Please key in an integer in the Apple Quantity text box.');
    document.getElementById("appleQty").value="";
    document.getElementById("appleQty").focus();
    return false;

    }
    else if(!isInteger(document.getElementById("orangeQty").value)){
    alert('Please key in an integer in the Orange Quantity text box.');
    document.getElementById("orangeQty").value="";
    document.getElementById("orangeQty").focus();
    return false;
    }
    else if(!isInteger(document.getElementById("bananaQty").value)){
    alert('Please key in an integer in the Banana Quantity text box.');
    document.getElementById("bananaQty").value="";
    document.getElementById("bananaQty").focus();
    return false;

    }
    else if(document.getElementById("user").value = " "){ /!-Problem, keeps getting repeated-->
    document.getElementById("user").focus();
    alert('Please key in your name.');

    return false;

    }
    return true;

}

Answer: One should use == to compare, = to assign. You are assigning, so add an extra = to compare.
Comment: You might want to check for an empty string, `""` instead of `" "` which is a single space.
Answer: You are using = as assignment, not equivalence. Use == or ===.
Answer: Two problems:

Use == for comparison, not =.
The empty string is "", not " ". Notice the extra space.

Result:
else if (document.getElementById("user").value == "") {

if-check in HTML gone awry


Why does a simple WPF binding created in the designer throw this cast-related runtime error?

Question: Similar to creating a data binding in Windows Forms designer, I am creating a databound item on my blank WPF control by dragging and dropping the property of my custom simple object onto it from the Data Sources window. It creates the expected label with the data field name and text box control, and compiles fine. But when I run the application it throws the following error:

{"Unable to cast object of type 'System.Windows.Controls.Grid' to type 'System.Windows.Data.CollectionViewSource'."}

How do I fix it?
Answer: The markup generated by the designer doesn't work. The Grid that's nested around the label and text box has a DataContext property of the form {StaticResource mySimpleObjectViewSource}, but needs to be of the form {Binding Source={StaticResource mySimpleObjectViewSource}}.


Rank of a Linear Operator over matrix space

Question: Suppose $Q\in M_{10\times 10}(\mathbb{R})$ is a matrix of rank 5. Let $T:M_{10\times 10}(\mathbb{R})\to M_{10\times 10}(\mathbb{R})$ be the linear
transformation defined by $T(P)=QP$. Then the rank of $T$ is?
Comment: @uniquesolution Just to be aware, you might want to head [here](https://meta.stackexchange.com/questions/172758/what-have-you-tried-epidemic). I mean, I believe your question is by far appropriate, but try not to ask it too many times.
Comment: @user477343 - Thank you for your enlightening comment, which makes clear what **you** have tried.
Comment: @uniquesolution I have no idea what a matrix space is, nor what a linear transformation is... what does $M_{10\times 10}$ mean as a function? I don't know.
Comment: $M_{10\times 10}(\mathbb{R})$ means the set of all $10\times 10$ matrices with real coefficients. If you don't know what a linear transformation is, I suggest you go back to your textbook because it is one of the first things you learn in a LInear Algebra Course.
Comment: depends on $P$, say if $P \in \mathbb{M}_{10 \times k}(\mathbf{R})$ is of rank 10 for some $k$, then $\text{rank}(QP) = 5$.
Answer: Let $m$ and $n$ be positive integers with $m\leq n$.  Fix a base field $\mathbb{K}$ and write $\mathcal{R}:=\text{Mat}_{n\times n}(\mathbb{K})$.  Suppose that $Q\in \mathcal{R}$ is of rank $m$.  We shall prove that the linear transformation $T_Q:R\to R$ sending $P\mapsto QP$ for all $P\in \mathcal{R}$ is a linear map of rank $mn$.  That is, we shall prove that $\dim_\mathbb{K}\big(\text{im}(T)\big)=mn$.
Let $q_k$ be the $k$-th column vector of $Q$ for $k\in \{1,2,\ldots,n\}=:[n]$.  Suppose that $q_{j_1},q_{j_2},\ldots,q_{j_m}$ are linearly independent columns of $Q$ where $j_1,j_2,\ldots,j_m\in[n]$ satisfies $j_1<j_2<\ldots<j_m$.  Write $E_{i,j}$ for the matrix with $1$ at the $(i,j)$-entry and $0$ everywhere else (where $i,j\in [n]$).  Then, the image $X_{i,j}:=T_Q(E_{i,j})$ of $E_{i,j}$ under $T_Q$ is the matrix where the $j$-th column equals $q_i$, and other columns are $0$.  It is easy to prove that the matrices $X_{i,j}$ for $i\in\{j_1,j_2,\ldots,j_m\}$ and $j\in[n]$ are linearly independent elements in $\mathcal{R}$ which span $\text{im}(T)$, and I shall leave this task to the OP.
Comment: what does this symbol [n] mean ??


Reformat Date Argument in Contextual Filter

Question: I have an argument in a view, contextual filter - {{ arguments.field_news_date_value }}. How can I reformat a date value from YYYY-MM-DD to DD Month Year in the view
Answer: Select the custom format in the field's configuration and d m y there. Refer https://www.php.net/manual/en/function.date.php to see php date format.


Any advantage to using Profile2 module vs. custom user account fields?

Question: I'm trying to decide if I should bother messing with the Profile2 module. I need my users to have information like a real name stored and made available for other uses, but I'm not sure if there is an advantage to using the Profile2 module, or if I should just create custom user account fields for whatever I need.
Comment: Check the issues Queue for Profile2 (http://drupal.org/node/1413786).  There is a fatal error problem loading the module that has not been resolved as of 2/15/2012.
Answer: The Profile2 module is only good if you need more then 1 type of profiles.
For example:
         - a student profile, with certain fields.
         - a teacher profile, with different fields.
If you don't need different types, just stick with the custom user account fields.
Hope this helps!
Comment: I had pretty much the exact same experience with creating custom profiles. I needed different profile types for different roles.
Comment: Great answer and comments. Just what I needed to know, thanks!
Comment: overwhelming answer buddy. Just what I needed to know, thanks a million - you deserve a monster congrats
Answer: There are a few other things that you could take advantage of if profiles are nodes, for example, keep track of the number of page views to a profile. Or you could use node revisions.
Answer: When needing private fields you can use http://drupal.org/project/profile2 too.
Or stick with custom user account fields and and http://drupal.org/project/field_permissions module which complicates configuration.
Answer: I don't have enough reputation to add comment. So, adding in answer.
I am looking for the same functionality as #dimitril mentioned here.
I saw Profile2 Module. I am using Drupal-7 and profile2 is deprecated for Drupal 7. So, can I still use Profile2 module? or is there any other way?
I wanted to hide edit profile page for user role students, so that they can't change the password.
Appreciate your help!
Thank you!
Comment: Reread the docs for Profile2. It is the replacement for the core Profile which is what is deprecated. Profile2 is **not** deprecated.
Answer: Disagree that the only use case is if you need multiple profile types.
Use Profile2 if you want to allow other users to view a user's profile but not his account information. you can create a separate page for the public profile and keep sensitive information in the user fields.
Answer: Another reason might be resource load. If you have a 100 fields and you load 20 users, that's a lot of data to get. If you split that in multiple profiles, you only need to load the profile that contains the relevant data.


Problemas com laço IF

Question: Estou tendo problemas ao criar um laço if no jquery para que, quando o carrossel execute a função carousel() ele faça um laço if, o problema é que, ele só executa uma vez o if, e então para de executar o laço.
No caso, estava utilizando $('#first-item-carousel.active'),$('#second-item-carousel.active'),$('#third-item-carousel.active') para os laços.
JQuery
$('#items-principais-loja').carousel({
    interval:4000
});
$('#items-principais-loja').on('slide.bs.carousel', function () {
    if() {
        $('#first-item-related').css({'opacity':1});
        $('#second-item-related').css({'opacity':0});
        $('#third-item-related').css({'opacity':0});
        setTimeout(function(){
            $('#first-item-related').css({'display':'inline-block'});
            $('#second-item-related').css({'display':'none'});
            $('#third-item-related').css({'display':'none'});
        },100);
    }else if(){
        $('#first-item-related').css({'display':'none'});
        $('#second-item-related').css({'display':'inline-block'});
        $('#third-item-related').css({'display':'none'});
        setTimeout(function(){
            $('#first-item-related').css({'opacity':0});
            $('#second-item-related').css({'opacity':1});
            $('#third-item-related').css({'opacity':0});
        },100);
    }else if(){
        $('#first-item-related').css({'displauy':'none'});
        $('#second-item-related').css({'displauy':'none'});
        $('#third-item-related').css({'display':'inline-block'});
        setTimeout(function(){
            $('#first-item-related').css({'opacity':0});
            $('#second-item-related').css({'opacity':0});
            $('#third-item-related').css({'opacity':1});
        },100);
    }
});

HTML

                        ...

                        ...

                        ...

Como posso resolver o problema ?
Answer: If não é um laço, mas sim um condicional. Cada condição deve retornar um verdadeiro ou falso (true / false para ser mais exato).
Veja um simples exemplo:
var nome = window.prompt("digite seu nome");
if(nome != null && nome != "")
{
   alert(nome);
}
else{
    alert("Voce nao informou seu nome");
}

ou seja, dentro dos () do seu codigo, você deve usar expressões que retornem true ou false.
Veja este exemplo que criei, onde eu testo se um elemento esta visivel ou nao:
$(function(){
   var first = $(".first").is(":visible");
   var second = $(".second").is(":visible");

   $(".result").append("
" + first + "
");
   $(".result").append("
" + second + "
");
})

https://jsfiddle.net/vm4xu6er/
Comment: Não funcionou, fica entrando constantemente na primeira condição :/
Comment: Esse seu codigo esta meio confuso. Cria um JSFiddle que fica mais facil pra ajudar.
Comment: Não está confuso, é o carousel simples do bootstrap '-'

Problemas com laço IF


Describe a spring with newton's second law

Question: How can I explain or derive the differential equation
$$y''(t)+y(t)=3\cos(kt)$$
with newton's second law.
The equation describes a spring. Can anyone give a hint?
Answer: HINT:
Compare the given equation with $m\ddot{y}+sy=F_o\cos \omega t$
which shows the forced vibration without damping. one should get
$$m=1, s=1, F_o=3, \omega=k$$
Where, $m$ is mass suspended from spring with stiffness $s$ & $F_o$ is the applied periodic force having angular frequency $\omega=k$
And $m\ddot y=1$ is the $\color{red}{\text{inertia force}}$ of mass $m$, $sy=1$ is the $\color{red}{\text{spring force}}$, & $3\cos (kt)$ is the $\color{red}{\text{periodic force}}$.
The given second order differential equation: $y''(t)+y(t)=3\cos(kt)$ can be solved for displacement $y(t)$ as a function of time $t$


Nested headings bit confused on what to do here

Question: So i'm almost done making my website until i got to the Resources part. I'll be real. I have no clue what to do here. So i asked my mate. He told me to look up nested headings. So i looked them up and couldn't really find any information regarding them. Now i do want to apologise if what i'm asking isn't nested headings but rather something else. I've attached a screenshot below of what i'm trying to make my page look like in regards to the links. Any links or information on how to do this would be great!

Comment: You should ask about your problem, not the solution. Also, try to create a [mcve]
Comment: @DestinatioN I ensure you its not :/
Comment: Looking at your screenshot, I think your rather mean nested *lists*: https://stackoverflow.com/questions/5899337/proper-way-to-make-html-nested-list
Comment: @chade_ Thanks! guess that what he meant
Comment: Yeah, nah, mate... You're looking for nested lists, aren't ya?
Give this a crack and let us know how it goes: https://stackoverflow.com/a/6898013/4603295
Cheers!
Answer: I think what you are looking for here are unordered lists, which are represented in HTML code as
 and
 tags. You can nest them to achieve a layout as shown in your screenshot.

foo

bar

baz


How does one prove that a prime $p$ does not generate the multiplicative group of integers mod $4p-1$?

Question: Another way to word the question:
If the multiplicative group is called $U_{4p-1}$, then how does one prove that $U_{4p-1}/<p>$ contains more than one element?
I'm having trouble approaching this problem, because I don't see a way to use the $4$ in $4p-1$. I've tried considering $p^k$ (mod $4$), but it doesn't get me anywhere. I've also realized that if $4p-1$ is prime, then the order of the multiplicative group is $2$ in mod $4$, but I don't know what to do with that information.
Any help or hints would be appreciated.
Comment: It isnt always odd.
Comment: for example the order of $13\bmod 51$ is $4$.
Comment: for $p \leq 29,$ it turns out that $p$ is a square modulo every prime factor of $4p-1,$ therefore by CRT $p$ is a square. Which, if always true, would do the job
Comment: We don't need $p$ to be a prime though.
Comment: **Hint** $\,\ {\rm mod}\ 4p\!-\!1\!:\,\ p\equiv 1/4\equiv (1/2)^2\ \ $
Comment: Thanks Jorge, I fixed that.
Answer: Pick a prime divisor $q$ of $4p-1$.
Notice that $4p\equiv 1 \bmod q$, since both $4$ and $1$ are quadratic residues $\bmod q$ we conclude that $p$ is a quadratic residue $\bmod q$.
So in particular we can never have $p^k\equiv -1 \bmod q$ and as a consequence we can't have $p^k \equiv -1 \bmod 4p-1$ either.
Comment: There's the answer. Thank you.
Comment: happy to help.${}$


The proper way to create a global map to hold multiple C++ objects in JNI

Question: I am using TextureView and Vulkan to draw 3D models. I get the surface from the TextureView and pass it to the native side to render.
I need to support multiple TextureView to render different 3D models simultaneously, but I find out that my native .so library is only loaded once per process, suitable for memory saving.
So I think I need a global std::map in jni to hold different c++ objects. Every TextureView has an id and could use its id to find its c++ objects.
I was planning to code like this.
<code>#include <jni.h>
#include <string>
#include <map>
#include <android/native_window_jni.h>
#include <android/asset_manager_jni.h>

std::unique_ptr<std::map<jint, MiuiVkWidgetApp*>> mVkWidgetAppMapUniquePtr;

extern "C" JNIEXPORT jboolean JNICALL
Java_com_miui_vkwidget_MiuiVkTextureView_nativeInitVkWidgetApp(JNIEnv* env, jobject  /* this */, jint id) {
    ...
    if (!mVkWidgetAppMapUniquePtr) {
        mVkWidgetAppMapUniquePtr.reset(new std::map<jint, MiuiVkWidgetApp*>());
    }
   ...
   return true;
}

extern "C" JNIEXPORT void JNICALL
Java_com_miui_vkwidget_MiuiVkTextureView_nativeDestroyVkWidgetApp(JNIEnv* /* env */,
                                                                  jobject /* this */, jint id) {
   mVkWidgetAppMapUniquePtr.reset(nullptr);
   ...
}
</code>
But in https://developer.android.com/training/articles/perf-jni#local-and-global-references "Local and global reference," it says that "The only way to get non-local references is via the functions NewGlobalRef and NewWeakGlobalRef." But NewGlobalRef seems only to support java objects.
I assume how I create the global map may have some potential risks, such as memory leak(I call DestroyVkWidgetApp when TextureView is onDestroy)? I am curious on how to  create a proper global map in jni to hold multiple c++ objects? Thanks!
Answer: JNI GlobalRefs refers to Java VM objects: those objects will persists in memory until a "destroy" method is called and Java could refers to them (if needed) in that period. Without GlobalRefs that object's memory could be freed early (by JVM GarbageCollector) and Java will FC due to memory issue.
It's seems that your JVM spawns multiple Processes, so if second process is spawn from the first one, yes you could use a "Mapped Memory File" starting from JavaVersion.VERSION_1_4 (JNI part could be copied from here: https://www.codeproject.com/Articles/2460/Using-Memory-Mapped-Files-and-JNI-to-communicate-b even if you don't need the Java one).
If processes are spawned from different Apps, I'm not sure but I think my solution will work.
(A "global map" is GLOBAL inside the same JVM (one Process per JVM), so even if you use a "global map" it will not be "seen" from the second Process but this last one will create its own "global map")