Como transformar uma função assíncrona em síncrona?

Question: Tenho uma função assíncrona e gostaria de que ela se tornasse síncrona, pois estando assíncrona ela está enviando os dados para o cliente antes mesmo de concluir as etapas necessárias, segue código:
imap.once('ready', function () {
    openInbox(function (err, box) {
        if (err) throw err;
        imap.search(['ALL'], function (err, results) {
            if (err) throw err;
            let arquivo = imap.fetch(results, {bodies: ''});
            arquivo.on('message', function (msg, num) {
                msg.on('body', function (stream, info) {
                    simpleParser(stream)
                        .then(mail => {
                            email = {
                                id: num,
                                remetente: mail.from.text,
                                destinatario: mail.to.text,
                                assunto: mail.subject,
                                texto: mail.text
                            };
                        })
                        .catch(err => {
                        console.log(err)
                        });
                });
                msg.on('end', function () {
                    console.log(num + ' concluído!');
                })
            });
            arquivo.on('error', function (err) {
                console.log('Erro em arquivo.once: ' + err)
            });
            arquivo.on('end', function () {
                console.log('Concluído!')
            })
        })
    })
});
imap.once('error', function (err) {
    console.log('Erro no Imap.once' + err);
});
imap.once('end', function () {
    console.log('Encerrado!');
});
imap.connect();

Como tornar essa função assíncrona?? Qual o lugar correto para colocar o response??
Obs.: Servidor HapiJS
Answer: Sendo que arquivo.on('message' chama a função N vezes, 1 por email, então podes ir criando Promises e inserir num array e depois quando arquivo.on('end' for chamado podes esperar que todas as promises estejam prontas e usar esses mails.
O código seria assim:
imap.search(['ALL'], function(err, results) {
    if (err) throw err;
    let arquivo = imap.fetch(results, {
        bodies: ''
    });
    const emails = []; // <--- aqui vais juntando Promises
    arquivo.on('message', function(msg, num) {
        const compilador = new Promise((resolve, reject) => {
            msg.on('body', function(stream, info) {
                simpleParser(stream)
                    .then(mail => {
                        resolve({
                            id: num,
                            remetente: mail.from.text,
                            destinatario: mail.to.text,
                            assunto: mail.subject,
                            texto: mail.text
                        })
                    })
                    .catch(reject);
            });
            msg.on('end', function() {
                console.log(num + ' concluído!');
            })
        });
        emails.push(compilador);
    });
    arquivo.on('error', function(err) {
        console.log('Erro em arquivo.once: ' + err)
    });
    arquivo.on('end', function() {
        Promise.all(emails).then(array => { // <--- aqui vais vai verificar/esperar que todas estão prontas
            console.log(array);
            console.log('Concluído!');
        })
    })
})

Comment: Funcionou perfeitamente...
Muito obrigado


Angular 4.0 e2e tests - can't pause protractor

Question: I've created a new project using angular cli and added browser.pause(); command to default spec. However, if I run tests, protractor doesn't stop. Instead I get the following message in console:
Error: Cannot find module '_debugger'
    at Function.Module._resolveFilename (module.js:485:15)
    at Function.Module._load (module.js:437:25)
    at Module.require (module.js:513:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (C:\Projects\sample\node_modules\protractor\built\debugger
\debuggerCommons.js:1:82)
    at Module._compile (module.js:569:30)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)

Do I need to install some package or some configuration option is missing or anything else?
UPDATE
Here is package.json content:
{
  "name": "sample",
  "version": "0.0.0",
  "license": "MIT",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^4.0.0",
    "@angular/common": "^4.0.0",
    "@angular/compiler": "^4.0.0",
    "@angular/core": "^4.0.0",
    "@angular/forms": "^4.0.0",
    "@angular/http": "^4.0.0",
    "@angular/platform-browser": "^4.0.0",
    "@angular/platform-browser-dynamic": "^4.0.0",
    "@angular/router": "^4.0.0",
    "core-js": "^2.4.1",
    "rxjs": "^5.1.0",
    "zone.js": "^0.8.4"
  },
  "devDependencies": {
    "@angular/cli": "1.2.0",
    "@angular/compiler-cli": "^4.0.0",
    "@angular/language-service": "^4.0.0",
    "@types/jasmine": "~2.5.53",
    "@types/jasminewd2": "~2.0.2",
    "@types/node": "~6.0.60",
    "codelyzer": "~3.0.1",
    "jasmine-core": "~2.6.2",
    "jasmine-spec-reporter": "~4.1.0",
    "karma": "~1.7.0",
    "karma-chrome-launcher": "~2.1.1",
    "karma-cli": "~1.0.1",
    "karma-coverage-istanbul-reporter": "^1.2.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.1.2",
    "ts-node": "~3.0.4",
    "tslint": "~5.3.2",
    "typescript": "~2.3.3"
  }
}

Comment: can you please add your package.json?
Comment: Added. Basically it's a default `package.json` generated by Angular CLI, without any modifications
Answer: Run node --version to see what version of node you have installed globally. If you have 8, then it appears that browser.pause() does not work for version 8. See the open GitHub issue.
https://github.com/angular/protractor/issues/4307


Customização do Autocomplete UI JQuery

Question: Olá! Coloquei o autocomplete ui jquery no meu sistema, está funcionando como deveria, mas queria editar o visual dele.
Por exemplo, colocar uma cor de fundo nas sugestões que aparecem e não permitir a criação de uma
 ao selecionar um valor.
Essa é a imagem do autocomplete como está:

O modelo do autocomplete que estou usando é esse https://jqueryui.com/autocomplete/#multiple
Comment: Você não que que apareça a div com os resultados da busca?
Comment: Coloquei uma outra imagem, repare que quando seleciono um valor ele acrescenta uma div abaixo do formulário. Essa div que eu não quero que apareça
Comment: Não entedi. Qual div?
Comment: Seria bom vc colocar o código de como está fazendo isso, porque o plugin não tem esses botões que vc colocou na imagem.
Comment: os botões são da aplicação, estou usando o ui apenas para o autocomplete. Toda a customização do site é feita com bootstrap
Comment: Sim, mas qual a div que vc se refere? Vc diz esse espaço vazio abaixo do input?
Comment: O texto com o nome da cidade que está aparecendo abaixo do for. Repara, selecionei "Rio de contas" e ele copiou o que está no input e criou uma div abaixo do form com esse valor. Mas isso é o de menos, eu quero mesmo é conseguir colocar uma cor de fundo na caixa que aparece as sugestões do autocomplete
Answer: Você consegue alterar a cor da caixa dos resultados da busca alterando via CSS o estilo da div #ui-id-1, que é a div padrão dos resultados do plugin:

Exemplo:

$( function() {
    var availableTags = [
      "ActionScript",
      "AppleScript",
      "Asp",
      "BASIC",
      "C",
      "C++",
      "Clojure",
      "COBOL",
      "ColdFusion",
      "Erlang",
      "Fortran",
      "Groovy",
      "Haskell",
      "Java",
      "JavaScript",
      "Lisp",
      "Perl",
      "PHP",
      "Python",
      "Ruby",
      "Scala",
      "Scheme"
    ];
    $( "#tags" ).autocomplete({
      source: availableTags
    });
  } );
#ui-id-1{
   background: red;
}

<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">

  Tags:
  <input id="tags">

Quando à div indesejada, você pode inspecionar no navegador e pegar a classe ou id dela e esconder no CSS via display: none.
Comment: Tentei customizar o id que vc me passou, mas não funcionou. Estou usando um modelo diferente de autocomplete que vc usou no exemplo. Editei minha pergunta e coloquei o modelo que estou usando.
Comment: É esse mesmo que usei.
Comment: Consegui pegar pela classe "ui-menu-item". Agora, a div que ele cria no final do formulário não tem id, nem classe. Não consigo ocultar, ou nem permitir que ele crie essa div. Fui tentar ler o arquivo JS, mas está sem indentação, impossível de ler.
Comment: Consegui tirar a div também dvd. Tinha uma classe nela, eu não tinha visto. Muito obrigado!

Customização do Autocomplete UI JQuery


O que é Engenharia Reversa?

Question: Costumo sempre dizer que não me dou muito bem com termos.
Esses dias atrás precisei fazer uma operação num determinado framework em PHP chamado Laravel, onde eu precisava encontrar um recurso que me permitiria usar um banco já existente e fazer com que ele gerasse automaticamente os models e migrations da aplicação através das tabelas desse banco.
Geralmente o que ocorre é o contrário: Você gera models e migrations, que, por sua vez, geram o banco de dados.
Fiz várias pesquisas na internet (em inglês) para poder encontrar o que eu  queria, porém não encontrava. Até que eu usei o termo Database Reverse Engine for Laravel, e encontrei o que procurava.
Até então eu não estava tão familiarizado com o termo, por pensar em se tratar em algo muito distante do meu dia-a-dia de programação. Mas parece que não era verdade.
O que eu entendo pela experiência que tive é que Engenharia Reversa está relacionado a usar o que foi gerado para criar o gerador. Me corrijam se eu estiver errado.
É por isso que venho aqui perguntar: O que é exatamente a Engenharia Reversa?
Nota: Não vou incluir a tag php ou laravel, pois não se trata do assunto, foi apenas um exemplo.
Comment: Uma coisa interessante a se notar é que a palavra _reverse_, como adjetivo, não se traduz para _reverso_ e sim para _invertido_ ou _ao contrário_. Ou seja, _engenharia reversa_ (assim como _instância_ ) são neologismos de programação no português.
Comment: Relacionado: [Como proteger o código fonte](http://pt.stackoverflow.com/questions/7257/como-proteger-o-c%C3%B3digo-fonte)
Comment: Desmontar um brinquedo, por exemplo, é engenharia reversa.
Comment: Desmontar algo para saber como aquilo foi feito, para depois utilizar o conhecimento obtido, e tentar fazer igual, ou parecido. Há quem diga que os chineses fazem isso, para criar seus eletrônicos falsificados. Em computação, significa desfazer o processo de compilação, e obter novamente o código fonte.
Answer: Engenharia reversa, em termo leigo, nada mais é do que descobrir como o programa funciona com o programa acabado.¹
Para realizar a engenharia reversa deve-se analisar o produto concluído e verificar "como ele foi construído". Como o @rray disse nos comentários, o crack de jogos é um bom exemplo disso. Claro, feito para o "mal" (para os fabricantes e bem para nós, rsrs), mas é um ótimo exemplo.
Há relatos que empresas utilizam engenharia reversa para verificar os produtos das concorrentes, seja em software ou não. Como a briga eterna entre a Apple vs Samsung sobre roubo de informações e quebra de patentes se encaixa neste meio. Neste caso podemos ver que a engenharia reversa não está limitado apenas em códigos, mas sim em diversas áreas, neste exemplo em específico, hardware também.
Mas e aí, é difícil fazer Engenharia Reversa?
Isso depende muito de suas qualidades e do que quer fazer.
Um exemplo fácil é o  uso do .NET Reflector para obter o código fonte de dll's .NET. Veja abaixo uma imagem de exemplo.

Neste exemplo estou apenas verificando o que está por trás da dll System.Xml.Linq.dll, da Microsoft. Isso foi possível apenas com 2 cliques com o programa, nada de difícil, não concorda?
E re-engenharia, é a mesma coisa?
Hoje existe uma grande confusão sobre engenharia reversa e re-engenharia (refatoração).
Re-engenharia nada mais é do que que examinar um produto acabado e construir de novo, mas com melhorias¹.
Em resumo, engenharia reversa você obtém como foi feito, seja para qual for o objetivo, Dark Side ou não. Já na re-engenharia você apenas melhora, e não necessariamente precisa de fazer uma engenharia reversa para obter os fontes.
Está dizendo que todos tem acesso ao meus fontes então?
De certa forma, sim.
Você não consegue "impossibilitar" de conseguirem o seu código, mas da para dificultar.
Esta pergunta do @Math possui excelentes respostas sobre isso, então não entrarei em mais detalhes. :p

¹ What is the difference between re-engineering and reverse engineering?
Comment: @Jean Essa parte foi uma piada, desculpe se não fui mais claro. Mas o crack vai muito além do que uma simples engenharia reversa, o que seria muito amplo para ser tratado em uma única resposta. Existem N fatores que podem influenciar nesse assunto.
Comment: @Randrade da próxima vez adiciona a tag `` ou ``, para que alguém não pense que você está fazendo apologia. É claro que pelo conteúdo do texto fica nítido que você não quis fazer isso
Comment: Concordo com quase tudo, só não entendo com um "crack" pode fazer bem? Ao meu ver a escolha dos direitos de uso/reprodução de um software/game é de quem o faz e não de quem quer usufrui-lo.
Answer: É o fluxo inverso ao da engenharia de uma solução.
O fluxo tradicional pode ser expresso da seguinte maneira:
Especificação > Arquitetura > Implementação > Comportamento
Engenharia reversa, neste caso, é quando a especificação é deduzida a partir do comportamento:
Comportamento > Implementação > Arquitetura > Especificação
Este é um princípio largamente utilizado em implementação de soluções, como consequência de várias situações:

Uma solução legada e que não pode ser mais alterada diretamente ainda precisa receber entrada de dados: Um profissional pode analisar a API ou interfaces da aplicação, e escrever uma solução que publique dados no formato esperado. (Este processo é tão frequente que até recebe um nome: Brokerage.)
Uma solução baseada em APIs na Web pode ter seu comportamento estudado, e novos clientes podem ser escritos (casos de exemplo: DropBox, Yik Yak)
Comment: Desconhecia o termo **Brokerage**. Foi bom conhecer!
Answer: Engenharia Reversa é o processo de, a partir do todo, compreender as partes, o funcionamento, os princípios de algo. É um termo que foi cunhado para o hardware, entretanto, é amplamente aplicado ao software.
Exemplo: Ao desmontar um rádio é possível compreender muita coisa a respeito do seu funcionamento. Quais componentes eletrônicos ele usa, como esses componentes estão interligados, os módulos, etc. É muito comum que empresas comprem dispositivos de outras para desmontar e entender os tipos de compomentes que foram utilizados. Na guerra entre Apple e Samsung vários celulares foram destruídos com esse propósito.
No software, esse termo é aplicado em vários contextos. Exemplos não faltam:

Gerar os códigos de criação de um banco de dados a partir das tabelas e relacionamentos já criados;
Compreender um protocolo de rede específico a partir dos pacotes de rede. Um exemplo clássico é o Samba, um software que permite que sistemas operacionais Linux compartilhem arquivos e impressoras com máquinas Windows.
Compreender um formato de arquivo específico. Um exemplo clássico é o OpenOffice, pois ele consegue abrir planilhas e documentos do Office (principalmente antes do Office 2007, já que era um formato binário).
Comment: @DenerCarvalho, sem dúvida o Wine é um exemplo de Engenharia Reversa. Os desenvolvedores do Wine tiveram que entender bastante coisa sem nenhum tipo de documentação ou mesmo suporte da Microsoft para implementar o Wine e conseguir executar binários do Windows no Linux. Bem lembrado.
Comment: Neste caso o Wine também faz parte deste contexto? Com ele podemos executar aplicativos `.exe` do Windows no Linux.
Answer: Engenheria reversa é o processo contrário do habitual seja no desenvolvimento de software ou não, a partir de algo já gerado obter acesso ou descobrir como algo foi feito sem ter o conhecimento interno ou seja é como identificar os componentes, a forma/ordem de montagem de uma caixa preta, isso pode ser feito de forma total ou parcial.
Exemplos:

Alguns softwares conseguem pegar um .jar e  transformar ele no arquivo de texto puro.
Ferramentas CASE ou as vezes IDEs conseguem gerar diagrama de classes a partir de código fonte.
Comment: @WallaceMaxters como vc acha que o pessoa monta crack de softwares :P?
Comment: +1 Hum... Era  isso que queria saber. Obrigado @rray. Na verdade, esse termo apareceu de surpresa, quando estava pesquisando no google. Eu já falei que nesse ponto de terminologia eu não sou muito bom (porque não gosto muito desses termos, rsrsrsrs).
Comment: Seria como pegar o coffeescript de um javascript já compilado?
Comment: @WallaceMaxters sim, tem alguns outros usos.
Comment: não classificaria os diagramas gerados a partir do codigo fonte como eng. reversa uma vez que já tem o fonte, mas no caso do .jar concordo

O que é Engenharia Reversa?


Python - web scraping - pagination stuck at page 1, doesn't progress further

Question: new to python, wrote a following code:
import bs4
from urllib.request import urlopen as Open
from urllib.request import Request
from bs4 import BeautifulSoup as soup

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"}
results = "https://www.otodom.pl/sprzedaz/mieszkanie/?nrAdsPerPage=72&search%5Border%5D=created_at_first%3Adesc&page=1"
req = Request(url=results, headers=headers)
html = Open(req).read()

page_soup = soup(html, "html.parser")
total_pages = int(page_soup.find("div",{"class":"after-offers clearfix"}).find("ul",{"class":"pager"}).findAll("li")[4].text)

page_number = 0

if page_number < total_pages:
    page_number = page_number + 1
    results = "https://www.otodom.pl/sprzedaz/mieszkanie/?nrAdsPerPage=72&search%5Border%5D=created_at_first%3Adesc&page="+str(page_number)
    print(results)

    req = Request(url=results, headers=headers)
    html = Open(req).read()

    page_soup = soup(html, "html.parser")

    listings = page_soup.findAll("article",{"data-featured-name":"listing_no_promo"})
    print(len(listings))

I would have expected the end result to be a stream of printed out links, and number of listings on the page, yet all I have is:
https://www.otodom.pl/sprzedaz/mieszkanie/?nrAdsPerPage=72&search%5Border%5D=created_at_first%3Adesc&page=1
72

Any help would be appreciated, many thanks in advance!
Answer: In your script you don't have any loop to get page_soup from new page.
This script scrapes the total number of pages and then iterates over them, prints names of offers and it's link:
import requests
from bs4 import BeautifulSoup as soup

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"}
results = "https://www.otodom.pl/sprzedaz/mieszkanie/?nrAdsPerPage=72&search%5Border%5D=created_at_first%3Adesc&page={}"

with requests.session() as s:
    req = s.get(results.format(1), headers=headers)

    page_soup = soup(req.text, "html.parser")
    total_pages = int(page_soup.find("div",{"class":"after-offers clearfix"}).find("ul",{"class":"pager"}).findAll("li")[4].text)

    print(total_pages)

    cnt = 1
    for page in range(1, 10): # <--- change 10 to total_pages to scrape all pages
        req = s.get(results.format(page), headers=headers)
        page_soup = soup(req.text, "html.parser")
        for a in page_soup.select('h3 a[data-featured-name="listing_no_promo"]'):
            name, link = a.find_next('span', {'class':'offer-item-title'}).text, a['href']

            print('{:<4} {:<50} {}'.format(cnt, name, link))
            cnt += 1

Prints:
1645
1    Biuro Sprzedaży Mieszkań 2 Pokoje Bezpośrednio     https://www.otodom.pl/oferta/biuro-sprzedazy-mieszkan-2-pokoje-bezposrednio-ID43LEw.html#b3d6f6add3
2    Przestronne mieszkanie na nowej inwestycji - 2020  https://www.otodom.pl/oferta/przestronne-mieszkanie-na-nowej-inwestycji-2020-ID43LEt.html#b3d6f6add3
3    Kapitalny remont, Grabiszyńska, parking            https://www.otodom.pl/oferta/kapitalny-remont-grabiszynska-parking-ID43LE0.html#b3d6f6add3
4    Przestronne mieszkanie przy ulicy Żurawiej         https://www.otodom.pl/oferta/przestronne-mieszkanie-przy-ulicy-zurawiej-ID43LDZ.html#b3d6f6add3
5    Katowice Bezpośrednio 3 Pokoje                     https://www.otodom.pl/oferta/katowice-bezposrednio-3-pokoje-ID43LDX.html#b3d6f6add3
6    2 Pokojowe mieszkanie na osiedlu zamkniętym Łomian https://www.otodom.pl/oferta/2-pokojowe-mieszkanie-na-osiedlu-zamknietym-lomian-ID43LDV.html#b3d6f6add3
7    Słoneczne 3 pokojowe w doskonałej lokalizacji !    https://www.otodom.pl/oferta/sloneczne-3-pokojowe-w-doskonalej-lokalizacji-ID43LDS.html#b3d6f6add3
8    Inteligenty apartament Zajezdnia Wrzeszcz          https://www.otodom.pl/oferta/inteligenty-apartament-zajezdnia-wrzeszcz-ID43LDR.html#b3d6f6add3
9    Mieszkanie, 32,04 m², Szczecin                     https://www.otodom.pl/oferta/mieszkanie-32-04-m-szczecin-ID43LDN.html#b3d6f6add3
10   M-3 Teofilów Na Sprzedaż                           https://www.otodom.pl/oferta/m-3-teofilow-na-sprzedaz-ID43LDI.html#b3d6f6add3
11   2-Pokojowe Mieszkanie                              https://www.otodom.pl/oferta/2-pokojowe-mieszkanie-ID43LDH.html#b3d6f6add3
12   2 duże pokoje w centrum Gdańsk ul. Zakopiańska     https://www.otodom.pl/oferta/2-duze-pokoje-w-centrum-gdansk-ul-zakopianska-ID43LDE.html#b3d6f6add3
13   M2 na Zabobrzu III                                 https://www.otodom.pl/oferta/m2-na-zabobrzu-iii-ID43LDx.html#b3d6f6add3
14   Mieszkanie 2 pokojowe ,atrakcyjna cena             https://www.otodom.pl/oferta/mieszkanie-2-pokojowe-atrakcyjna-cena-ID43LDv.html#b3d6f6add3
15   M2 Centrum Miasta, I piętro                        https://www.otodom.pl/oferta/m2-centrum-miasta-i-pietro-ID43LDt.html#b3d6f6add3
16   Rodzinny 3 Pokojowy Apartament z Ogródkiem         https://www.otodom.pl/oferta/rodzinny-3-pokojowy-apartament-z-ogrodkiem-ID43LDr.html#b3d6f6add3
17   2 pokoje. Aneks kuchenny. 45,5 m. Balkon           https://www.otodom.pl/oferta/2-pokoje-aneks-kuchenny-45-5-m-balkon-ID43LDp.html#b3d6f6add3

... and so on.


Which parts of $S$ are not covered by these parametrizations?

Question: Prove that the set $S$ = {$(x,y,z) \in \Bbb{R}^3 | z = x^2 - y^2$ } is a differentiable surface and verify that
$f(u,v) = (u + v, u - v, 4uv), (u, v) \in \Bbb{R}^3,$ and
$g(u,v) = (ucosh(v), usinh(v), u^2),  (u, v) \in \Bbb{R}^3, u \neq 0$,
are parametrizations of S. Which parts of $S$ are not covered by these parametrizations?
The question in black is my main concern, but I write my answer to show that I made some progress...
$f, g $ are differentiable, because each of the component functions $f_i , g_i $
are continuous and therefore, differentiable.
Taking
$f(u,v) = (u + v, u - v, 4uv), (u, v) \in \Bbb{R}^3,$ I want to see that this is a parametrization, meaning, if I take a point in $f$ it should satisfy the equation defined in $S$:
Let $ x = u + v, y=u-v $. This implies that
$u = \frac{x+y}{2}, v = \frac{x-y}{2}$.
As $z = 4uv, $ then $z = 4uv = 4(\frac{x+y}{2})(\frac{x-y}{2})= x^2 - y^2$. This shows a pont given by the function $f$ is also in $S$.
Now, taking $g(u,v) = (ucosh(v), usinh(v), u^2),  (u, v) \in \Bbb{R}^3, u \neq 0$, let
$x= vcosh(u)$
$y = vsinh(u)$
$z= v^2$. Then $x^2 - y^2 = v^2 = z $, so $g$ is a parametrization of $S$.
I don't see which parts of S are not covered by these parametrizations...Maybe I would appreciate a more elaborate/math written hint than Which parts of $S$ these parametrization cover? Thanks
Answer: First consider $f(u,v)$ . . .

Since the equation
$$(u+v)^2 - (u-v)^2 = 4uv$$
is an identity, it follows that $f(u,v) \in S$, for all $u,v \in \mathbb{R}$.

Moreover, if $(x,y,z)$ is any point of $S$, then letting
$u = {\large{\frac{x+y}{2}}}$
and
$v = {\large{\frac{x-y}{2}}}$, we get
\begin{align*}
u + v &= {\small{\frac{x+y}{2}}} + {\small{\frac{x-y}{2}}}=x\\[4pt]
u - v &= {\small{\frac{x+y}{2}}} - {\small{\frac{x-y}{2}}}=y\\[4pt]
4uv &=
4
\left(
{\small{\frac{x+y}{2}}}
\right)
\left(
{\small{\frac{x-y}{2}}
}\right)
=x^2-y^2=z\\[8pt]
\implies\; f(u,v) &= (u+v,u-v,4uv) = (x,y,z)\\[4pt]
\end{align*}
Thus, all points of $S$ are realized by the parametrization $f(u,v)$.

Hence, $f(u,v)$ covers $S$.

Next consider $g(u,v)$ . . .

Since the equation
$$(v\cosh(u))^2- (v\sinh(u))^2 = v^2$$
is an identity, it follows that $g(u,v) \in S$, for all $u,v \in \mathbb{R}$.

But since the $z$-coordinate of $g(u,v) = u^2$ and $u \ne 0$, the parametrization only yields points in the set
$$S^{+} = \{(x,y,z) \in S\mid z>0\}$$
In particular, the parametrizaton $g(u,v)$ doesn't cover all of $S$, but only some subset of $S^{+}$.

Claim it covers all of $S^{+}$.

Thus, suppose $(x,y,z) \in S$ with $z > 0$.
\begin{align*}
\text{Then}\;\;&x^2 - y^2 = z\\[4pt]
\implies\; &x^2 \ge z\\[4pt]
\implies\; &|x| \ge \sqrt{z}\;\;\text{and}\;\;|x| > 0\\[14pt]
\text{Let}\;\;&u = {\small{\frac{x}{|x|}}}\sqrt{z}\\[4pt]
&v = \sinh^{-1}\left({\small{\frac{y}{u}}}\right)\\[12pt]
\text{Then:}\;\;\;\;\,\\[4pt]
{\small{\bullet}}\;\;u\cosh(v) &= u\cosh\left(\sinh^{-1}\left({\small{\frac{y}{u}}}\right)\right)\\[4pt]
&=u\sqrt{\left({\small{\frac{y}{u}}}\right)^{\!2} + 1}\\[4pt]
&={\small{\frac{u}{|u|}}}\sqrt{y^2+u^2}\\[4pt]
&={\small{\frac{x}{|x|}}}\sqrt{y^2+z}&&
\text{[since $u ={\small{\frac{x}{|x|}}}\sqrt{z}\,$]}\\[4pt]
&={\small{\frac{x}{|x|}}}\sqrt{x^2}&&
\text{[since $z=x^2-y^2$]}\\[4pt]
&=x\\[12pt]
{\small{\bullet}}\;\;u\sinh(v) &= u\sinh\left(\sinh^{-1}\left({\small{\frac{y}{u}}}\right)\right)\\[4pt]
&= u\left({\small{\frac{y}{u}}}\right)\\[4pt]
&= y\\[12pt]
{\small{\bullet}}\;\;u^2 &= \left({\small{\frac{x}{|x|}}}\sqrt{z}\right)^{\!2}\\[4pt]
&=z\\[12pt]
\implies\; g(u,v) &= (u\cosh(v),u\sinh(v),u^2) = (x,y,z)\\[4pt]
\end{align*}
hence, as claimed, all points of $S^{+}$ are realized by the parametrization $g(u,v)$.

Thus, $g(u,v)$ covers only $S^{+}$, not all of $S$.


Simplify $\frac{\sqrt{24}}{8}$

Question: The question I have been given is to simplify as much as possible: $\frac{\sqrt {24}}{8}$. I know the answer is $\frac{\sqrt 6}{4}$
(Note I am in a beginner math course, so go easy on me.)
My first thought was to divide to get: $\frac{\sqrt {12}}{4}$ and then again: $\frac{\sqrt 3}{1}$. However, I realized this was wrong. So I tried $\frac{\sqrt {24}}{2\times\sqrt 4}$ which would make the denominator equal to 4, which is right. So I thought I could do that to the top too, but I couldn't. I feel like I'm on the right track but not really there. Can someone help me figure out how to solve questions like these?
Comment: You cannot cancel $\frac{\sqrt{24}}{8}$ the same way as you do for $\frac{24}{8}$. One has to respect the square root action. Note that $\frac{\sqrt{2}}{2}\ne \frac11=1$.
Comment: Dividing by 2 is ok, but then the numerator would read: $$\sqrt{24}/2 = \sqrt{24}/\sqrt{2^2} =\sqrt{24/4}.$$ Since the rule is $\sqrt{ab} = \sqrt{a}\sqrt{b}$
Answer: You could square the fraction, then simplify, then take the square root.
$$\frac{\sqrt{24}^2}{8^2}=\frac{24}{64}=\frac{6}{16}$$
Taking the square root of both sides leaves the desired answer. $$\frac{\sqrt{6}}{\sqrt{16}}=\frac{\sqrt{6}}{4}$$
Answer: You can see $\sqrt{24} = \sqrt{4 \cdot 6}$. Since $\sqrt{a\cdot b} = \sqrt{a} \cdot \sqrt{b}$, you can expand the nominator to result in $2\cdot \sqrt{6}$. You can then divide by the $2$ to get the desired result.
Comment: Thanks! I understand now :D
Answer: You should first simplify the square root part as much as possible, then cancel the fraction.
$$\sqrt{24}=\sqrt{4\times 6}=\sqrt{4}\times\sqrt{6}=2\sqrt{6}$$
Here you should always be trying to make one of the factors the largest square number that divides the number you are taking the square root of (here $4$ is the largest square that divides $24$).
Now you can simplify the fraction:
$$\frac{\sqrt{24}}{8}=\frac{2\times\sqrt{6}}{8}=\frac{1\times\sqrt{6}}4=\frac{\sqrt{6}}4.$$
when doing this you can only cancel numbers from the top and bottom if they are both outside the square root (or both inside).
Comment: Great explanation, thank you! :)
Answer: How would you go about simplifying $$\frac{24}{8}?$$ You could try repeatedly halving the numerator and the denominator until arriving at the answer: $$\frac{24}{8} = \frac{12}{4} = \frac{6}{2} = \frac{3}{1} = 3.$$
Believe it or not, $$\frac{\sqrt{24}}{2} = \sqrt 6.$$ But hey, I'm a demon, I could be trying to lead you astray. So check it on your calculator.
So, by the same process as the other one, $$\frac{\sqrt{24}}{8} = \frac{\sqrt{6}}{4}.$$
Answer: The radicand, $ 24 $, can be expressed as a product involving a perfect square and a non-perfect square. In this case $ 24 $ is equal to $ 4 $ (which is a perfect square) times $ 6 $ (a non-perfect square). Thus
$$ \sqrt{24} = \sqrt{4 \times 6} = \sqrt{4}\sqrt{6} = 2\sqrt{6} $$ and $$ \frac{\sqrt{24}}{8} = \frac{2\sqrt{6}}{8} $$
After dividing both the numerator and denominator by the common factor of $ 2 $ and $ 8 $, which is $ 2 $:
$$ \frac{2\sqrt{6} / 2}{8/2} = \frac{\sqrt{6}}{4} $$

Simplify $\frac{\sqrt{24}}{8}$


CSS: Passar valores/parametros através dos nomes de classes

Question: Gostaria de saber se existe a possibilidade de informar valores através de nome de classes para ser usados como valores nas propriedades das mesmas. Exemplo:
.text-(color) {
color: (color);
}

O resultado seria:
.text-blue {
color: blue;
}

Eu li sobre pré-processadores, eu nunca havia utilizado, mas até então não encontrei nada que se refira a solução dessa dúvida. Somente uma solução parecida que ainda não é suportada por nenhum navegador:
https://css-tricks.com/css-attr-function-got-nothin-custom-properties/#article-header-id-2
Comment: Olha esse metodologia de escrever CSS `` aqui nesse link tem mais detalhes https://pt.stackoverflow.com/questions/432733/metodologia-de-escrita-css-usando-no-nome-da-classe-tailwind-css
Answer: Com CSS puro vc pode fazer usando custom variables, não é exatamente como vc quer mas pode te ajudar
Caso queira uma cor especial  para o :hover, basta no :root vc tb declarar uma cor que vai usar no :hover, no caso a var(--red), e no p.azul:hover vc muda o valor de --azul para var(--red)
Veja o exemplo para entender melhor:

:root {
  --azul: blue;
  --red: red; /* cor do hover */
}

p.azul {
  color: var(--azul);
}

p.azul:hover {
  --azul: var(--red); /* muda a var Azul para ser a var da cor do Hover */
}

lorem lorem

lorem lorem 1

lorem lorem 2

Comment: @LeAndrade bem massa né, e eh nativo do CSS, não precisa compilar, e já tem um bom suporte dos browsers
Comment: valeu @hugocsl, obrigado pela alternativa!
Comment: Putz legal isso aí hein, não conhecia.
Comment: Boa, muito bom também não conhecia. Mas se eu quiser informar o nome da cor dinamicamente? Tipo o nome que houver na classe assumir o valor da propriedade color? Era isso que gostaria de saber.
Comment: @RodrigoAlves veja a edição e os comments que deixei no código da resposta. Como falei essa é uma abordagem com CSS puro
Comment: Encontrei uma solução parecida mas que ainda não é suportada por nenhum navegador:  https://css-tricks.com/css-attr-function-got-nothin-custom-properties/#article-header-id-2
Comment: @RodrigoAlves na verdade da uma olhada aqui, certamente vai te interessar! https://pt.stackoverflow.com/questions/330390/existe-alguma-forma-de-usar-um-custom-attribute-como-valor-de-uma-propriedade
Comment: @RodrigoAlves sem problemas meu caro


Why are these two quantities proportional?

Question: I have a simple function $f(\theta) = z$. I plug its result into the sigmoid function $\sigma(z) = \frac{1}{1+ e^-z}$. So far so good. Then I have a function
$$L(\theta) = ln\sigma(z) - \lambda_{\theta}||\theta^2||$$
I want to take the deerivative of $L$ with respect to $\theta$ and I found in a paper that:
$$\frac{\partial}{\partial \theta}ln\sigma(f(\theta)) - \lambda_{\theta}\frac{\partial}{\partial \theta}||\theta||^2 \propto \frac{-e^{-f(\theta)}}{1+e^{-f(\theta)}}\frac{\partial}{\partial \theta}f(\theta) - \lambda_{\theta}\theta$$
So why are these quantities proportional?
Comment: What is $\ln\sigma(f(\theta))$ supposed to be?
Comment: Ths sigmoid function on the result of $f(\theta)$. Thus, $\sigma(f(\theta)) = \frac{1}{1 + e^{-f(\theta)}}$. Then you take the natural logarithm, so $ln\frac{1}{1 + e^{-f(\theta)}}$
Comment: If you link to the paper, others may infer what's going on from the context it provides to the quoted equation.
Comment: 5th page: https://arxiv.org/ftp/arxiv/papers/1205/1205.2618.pdf
Answer: $$L(\theta)=\ln(\sigma(f(\theta)))-\lambda_{\theta}||\theta^2||$$
$$\frac{\partial}{\partial\theta}L(\theta)=\frac{\partial}{\partial\theta}\ln\left(\frac{1}{1+e^{-f(\theta)}}\right)-\frac{\partial}{\partial\theta}\lambda_{\theta}||\theta^2||$$
Taking the partial derivatives of the of the right side:
$$\frac{1}{\frac{1}{1+e^{-f(\theta)}}}\frac{-e^{-f(\theta)}}{(1+e^{-f(\theta)})^2}\frac{\partial}{\partial\theta}f(\theta)-2\lambda_{\theta}\theta$$
The first term comes from repeated application of the chain rule. Simplifying the expression, some of the $1+e^{-f(\theta)}$ expressions cancel out. The last step is just getting rid of the constant $2$ in the second term. From there, you end up with the RHS of the expression in question.
Comment: Thank you, that's right. I forgot to take the derivative of $ln(x)$ in the beginning...


Eigenvalues of an antihermitian matrix

Question: I have to prove that every eigenvalue of an antihermitian matrix is in the form of
$bi $ for some $b \in R$.
I already know that if A is antihermitian , it is normal , thus we can diagonalise it with a unitary matrix.
I have tried doing this :
$ \exists$ U unitary and D diagonal such that
$ U^*AU=D$ $ \Rightarrow$ $A = UDU^*$
Multiplying by $A^*$:
$A^*A = -A^2 = (DU^*)^*(DU^*)$
From there , I don't know how to continue , or even if I'm going yhe right way.
Answer: Let $\lambda$ be an eigenvalue of $A$ and $v$ be the associated eigenvector. Then
$$Av= \lambda v$$
$$v^*Av = v^*\lambda v$$
Now take the hermitian conjugate on both sides:
$$v^*A^*v = \bar{\lambda}||v||$$
$$-v^*Av=\bar{\lambda}||v||$$
$$-v^*\lambda v = \bar{\lambda}||v||$$
Thus $$-||v||\lambda = \bar{\lambda}||v||$$
So since $||v|| \neq 0$
$$\lambda = -\bar{\lambda}$$
The only eigenvalues that satisfy this are eigenvalues of the form $bi$ for some $b \in \mathbb{R}$.

Eigenvalues of an antihermitian matrix


Block HTTP 1.0 with nginx

Question: My server is under a heavy attack. Most requests are coming this way:
188.8.131.52 - - [15/May/2012:11:21:45 +0400] "GET / HTTP/1.0" 200 65859 "2r4k68998q24ay.ru" "Mozilla/4.0 (compatible; MSIE 4.01; Vonna.com b o t)"

The HTTP protocol version is same for all such requests. Can I block HTTP 1.0 requests on a web server level somehow? I have tried this to eliminate the attack (redirect to an empty file):
if ($server_protocol ~* "HTTP/1.0") {
    rewrite ^/ http://example.com/white.txt;
}

Does not seem to help much, I don't see any such redirects in the logs. I use nginx 1.0.9 as a reverse proxy with Apache 2.2.3.
Any help is appreciated.
Answer: You could use something like this
if ($http_user_agent ~* "Vonna.com" ) {
    return 444;
}

444 will close the connection without returning anything, assuring the lowest possible impact. Though if you want to inform possible legitimate users, use something like 400 perhaps.
Additionally, perhaps block by referrer, though most bots will easily spoof that too.
As far as blocking entire HTTP 1.0 is concerned, you should check this first. If you'd still like to implement the block as a temporary solution, something like this should work.
if ($server_protocol ~* "HTTP/1.0") {
    return 444;
}

Basically the same thing you had, except with no rewrite - if I'm reading it right, your usage made it just stay in a permanent loop.
Comment: But they send all requests with a uniq user agent header. What do I do on this matter? You advice is very promising.
Comment: You can download it here: http://dl.dropbox.com/u/17184781/down/nginx.conf. That you very much.
Comment: Fixed up the answer so it actually makes sense. But still, take blocking HTTP 1.0 as the last resort, any only temporary, since there's a chance you might block normal users, as low as it is. Rather identify recurring/related source IPs/user agents/referrers and block on that.
Comment: Thank you. Yes, it will be a permanent block, of course.
Answer: This worked for me with Nginx 1.8.
if ($server_protocol = HTTP/1.0) {
    return 444;
}

My reason for doing it was different.  The Qualys Threat Report detected CVE-2000-0649, "allows remote attackers to obtain the internal IP address of the server via an HTTP 1.0 request", on my server.  I have the liberty of doing this because our site only supports limited browsers.
Answer: Use the right variable: $server_protocol instead of $http_user_agent.
Comment: Thanks, but it was just a typo. I've corrected my original post.

Block HTTP 1.0 with nginx


Can AWS Managed AD migrate from Standard Edition to Enterprise?

Question: Does anyone know if you can easily migrate from AWS Managed AD Standard Edition to the Enterprise Edition? It seems like this would be a logical option as standard is restricted to 30,000 objects, but I can't find confirmation anywhere on Amazon's sites. (Or elsewhere)
Comment: I can't find any references to this online. If you're running a large AD in AWS you should probably have support - have you asked AWS support? They're extremely knowledgeable and helpful.
Comment: While I have not directly asked support, I did pose the same question the Aws forums, and emailed our account rep for more information.
Comment: In general, if it takes me more than an hour or two to find any information about AWS I jump onto a chat session with AWS Support. It saves me a LOT of time. Their first line support people have really in depth knowledge, and they can go back to the service teams if they don't know something.
Answer: The Process can only be done by an AWS Support Engineer if you have access Developer Support plan or higher.
Submit a request through the support portal and they should assist with that.
Before considering upgrading the AWS Managed AD to Enterprise Edition, there will be some irreversible changes once the Managed AD is migrated from Standard to Enterprise.
Answer: The answer is yes it is possible.  The caveat: it's not self-service, you'll need to get support involved and it will potentially require an outage.
Thanks @Tim for the suggestion.  Aws chat with support was definitely the way to go.


Quando usar mock de métodos estáticos?

Question: @FernandoSchelb recentemente fez a pergunta sobre como fazer mock de métodos estáticos. Isso me gerou as dúvidas:

Se podemos fazer, quando devemos fazer?
Quais são os casos em que mock de método estático é benéfico?
Quando consigo detectar que o uso desse mock está sendo abusivo?
Comment: Boa pergunta... tenho dúvidas tmb...
Pq não se testa geralmente métodos estáticos?
Pq será que o mockito não dá suporte, tendo que recorrer a outros frameworks.... :-/
Comment: @FernandoSchelb se tem quem fez, creio que ele foi atrás de atender alguma necessidade. Eu na minha visão limitada não enxergo o porquê disso além de uma modelagem errada, mas creio que exista situações em que é extremamente positivo fazer isso. Mas também que em muitos casos seja só abuso da estrutura
Comment: "Abusar" quis usar no mesmo sentido de ["abusar do uso de OO"](https://sourcemaking.com/refactoring/smells/oo-abusers) ou ["abusar do `goto`](http://www.u.arizona.edu/~rubinson/copyright_violations/Go_To_Considered_Harmful.html) ou ["abusar do não abuso do `goto`"](https://web.archive.org/web/20090320002214/http://www.ecn.purdue.edu/ParaMount/papers/rubin87goto.pdf); uso indiscriminado/não recomendado/lesivo para o projeto. "Detectar uso abusivo" então seria uma espécie de procedimento para reconhecer esses usos através da leitura do código/teste/informações satélites e relacionadas
Comment: @JeffersonQuesado ah, sim! Acho que isso vai depender um pouco das ferramentas que você utiliza. Não tenho certeza, mas no Sonar por exemplo, talvez você consiga configurar métricas/code smell pra detectar o abuso do mock.
Comment: Posso ter a honra de saber o porquê do negativo? Gostaria de poder melhorar
Comment: O que você quer dizer com "detectar uso abusivo"? Apesar de toda a discussão sobre métodos estáticos, ainda não encontrei um pattern/regra de quando se deve ou não fazer o mock de um método estático. Alguns processos CI/CD exigem 80%+ de code coverage, o que provavelmente vai te obrigar a testar métodos estáticos(com ou sem mocks). Geralmente o mock é benéfico quando o método estático é stateless ou não causa "efeitos colaterais". Em casos onde o método estático é stateful, tem dependências ou causa "efeito colateral", seu mock pode ser um tiro no pé e não representar o comportamento real.
Comment: @FernandoSchelb existe uma [discussão no repositório do mockito](https://github.com/mockito/mockito/issues/1013) a respeito disso. Aparentemente não querem encorajar o abuso de métodos estáticos. Mas acredito que, se o método estático existe, ele deve ser testado sim.
Answer: Métodos estáticos são tão flexíveis quanto granito. Se você precisa fazer o mock de um método estático, é sinal de que há algo errado no projeto.
Um método estático idealmente oferece uma funcionalidade definitiva e imutável. Se você precisa mocká-lo para isolar o seu teste de suas dependências, então é porque ou ele não é definitivo e nem imutável, e portanto não deveria ser estático, ou então não era algo para você mockar.
A ideia de usar mock é isolar o código sob teste de suas dependências. Entretanto, é importante frisar-se que há diferentes tipos de dependências e nem todas valem a pena serem mockadas.
Por exemplo, imaginemos esse código:
package com.example.meucodigo;

public class MinhaClasse {
    public static double sincos(int a) {
        double r = Math.sin(a);
        double s = Math.cos(a);
        return r + s;
    }
}

Naturalmente, como pode se ver, ele retorna a soma do seno e do co-seno de um número. A forma adequada de testá-lo (com JUnit 5) seria assim:
package com.example.teste;

import com.example.meucodigo.MinhaClasse;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

public class TesteSinCos {
    @Test
    public void teste0() {
        Assertions.assertEquals(1.0, MinhaClasse.sincos(0));
    }

    @Test
    public void teste30() {
        Assertions.assertEquals(Math.srqt(3) / 2 + 0.5, MinhaClasse.sincos(Math.PI / 6));
    }

    @Test
    public void teste45() {
        Assertions.assertEquals(Math.sqrt(2), MinhaClasse.sincos(Math.PI / 4));
    }

    @Test
    public void teste90() {
        Assertions.assertEquals(1.0, MinhaClasse.sincos(Math.PI / 2));
    }
}

Observe que no teste acima não foi usado mock e ele nem mesmo se preocupa em saber que a implementação usa Math.sin e Math.cos. Usar o mock nesse caso seria um abuso, pois o uso de Math.sin e Math.cos é uma parte imutável e interna do método exercitado. Se mockassemos essas funções, estaríamos basicamente testando um método de adição simples, e não testando a funcionalidade realmente oferecida pelo método. Além disso, sob o ponto de quem utiliza o método, externo a ele, a dependência de determinado método estático é um detalhe encapsulado da implementação. Projetar a API de forma que isso possa ser mockado (ou seja, injetando-se os métodos de seno e co-seno na classe MinhaClasse) é ruim e resulta em um aumento da complexidade sem real benefício, tornando a classe em questão mais difícil de ser usada, mais difícil de ser instanciada e mais difícil de ser testada. Você deve projetar classes e métodos que possam ser testadas sem violar o encapsulamento natural deles.
No entanto, obviamente, há diversos casos onde o uso de mocks justifica-se, em especial quando a dependência é algo polimórfico, excessivamente complexo, que depende de estado externo e/ou que têm métodos que quando utilizados, produzem efeitos colaterais em objetos que não sejam os seus parâmetros. Por exemplo:
import java.sql.Connection;

public class Conexao {
    public static Connection conectar() {
        // ...
    }
}

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class ClienteDAO {

    private static final String INADIMPLENTES_SQL = "SELECT * FROM BLABLA";

    public List<Cliente> listarInadimplentes() {
        List<Cliente> inadimplentes = new ArrayList<>();
        try (
            Connection c = Conexao.conectar();
            PreparedStatement ps = c.prepareStatement(INADIMPLENTES_SQL);
            ResultSet rs = ps.executeQuery();
        )
        {
            // ...
        }
        return inadimplentes;
    }
}

Nesse caso, o ClienteDAO depende do método estático Conexao.conectar(). Ele também depende de uma String que está chapada em seu código.
Esse é um caso típico de onde o uso do mock é desejável e o uso do método estático causa problemas. A melhor solução seria eliminar o uso do método estático e usar injeção de dependência no lugar:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.function.Supplier;

public class ClienteDAO {

    private static final String INADIMPLENTES_SQL = "SELECT * FROM BLABLA";

    private final Supplier<Connection> conector;

    public ClienteDao(Supplier<Connection> conector) {
        this.conector = conector;
    }

    public List<Cliente> listarInadimplentes() {
        List<Cliente> inadimplentes = new ArrayList<>();
        try (
            Connection c = conector.get();
            PreparedStatement ps = c.prepareStatement(INADIMPLENTES_SQL);
            ResultSet rs = ps.executeQuery();
        )
        {
            while (rs.next()) {
                // ...
            }
        }
        return inadimplentes;
    }
}

E então, você pode mockar o Supplier<Connection> com uma implementação que fornece um Connection mockado que produz PreparedStatements mockados que produzem ResultSets mockados. Isso ainda dá bastante trabalho, mas não deve ser muito difícil de fazer com o mockito e te livra da necessidade de ter um banco de dados real e te dá controle sobre as dependências.
Em geral, a abordagem a ser usada com métodos que fabricam objetos polimórficos é essa. Ao invés de depender de um método estático de fábrica ou de um singleton, você troca isso por injeção de dependências. Ou seja, a solução não é mockar o método estático ou o singleton, e sim eliminar o seu uso!
Ainda há a SQL estática no código acima. A rigor essa SQL deveria ser um detalhe da implementação encapsulado no ClienteDAO. O problema é que ela "vaza" e torna-se visível para as suas dependências. A solução seria colocá-la em uma classe a parte e injetá-la (tem a vantagem de tornar as SQLs mais flexíveis, mas aumenta-se a complexidade) ou então colocar o modificador public nela (mais simples, mas menos flexível e pode atentar contra o encapsulamento).
É verdade que há muitas coisas que uma classe pode fazer que dependem de métodos estáticos, construtores e singletons que se fossem todos refatorados para serem injetados como dependências, acabaria produzindo algo com tantos pontos de injeção de dependências e com tanto polimorfismo em excesso que praticamente não seria mais usável. Parte da solução para isso é:

Preferir usar classes de dados imutáveis, algo que simplifica bastante os testes, elimina bastante a necessidade de você querer ou precisar mockar muitas coisas e elimina bastante o excesso de polimorfismo. Nesses casos, quando o construtor (que podem ser múltiplos e com diversos parâmetros, se necessário) finalizarem a sua execução, o objeto tem que estar pronto para ser usado e não necessitar de nenhuma alteração a mais. Se precisar de alterar um objeto, pense em criar novos objetos derivativos semelhantes ao invés de alterar. Veja mais sobre isso nessa outra resposta minha.
Eliminar métodos e objetos estáticos mutáveis ou que produzem efeitos colaterais ao colocá-los como parte de um "mundo", de um contexto. Por exemplo, se o seu processamento de folha de pagamento define uma variável estática mutável contendo o arquivo a ser processado e coloca em outras variáveis estáticas mutáveis as linhas processadas, a solução seria criar uma classe FolhaDePagamento e nela colocar uma variável de instância contendo o arquivo a ser processado e em outras variáveis de instância as linhas processadas. Ou seja, muitas vezes, as variáveis estáticas e os métodos que acompanham podem ser agrupados em um mundinho representado por uma instância de um objeto não-singleton. Isso tende a eliminar muitos casos de ocorrência de métodos estáticos, além de melhorar a organização do código.
Preferir especificar objetos com comportamentos altamente polimórficos por meio de interfaces. Isso é algo um tanto básico de programação orientada a objetos, mas muitas vezes esquecido e/ou negligenciado.
Utilizar lambdas e method references para casos onde o polimorfismo desejado seja algo simples.
Substituir a fabricação de objetos por meio de métodos estáticos e construtores por factories. Um exemplo disso é o do ClienteDAO refatorado acima.

Em geral, ter métodos estáticos que produzem efeitos colaterais, dependem de estados externos ou que envolvam polimorfismo é um sinal de que coisas erradas estão acontecendo no seu projeto e que refatorações são necessárias para eliminá-los. Já os métodos estáticos que não produzem efeitos colaterais, não envolvem polimorfismo e nem dependem de estado externo não deveriam ter razão para serem mockados.
Quanto aos singletons e enums, estes, bem como quaisquer outros objetos estáticos, também deveriam ser imutáveis e não depender de qualquer estado externo.
Há casos como um método que utilize Collections.sort(List) que podem parecer complicados. Esse método produz efeitos colaterais apenas em seu parâmetro, mas não depende de estado externo e nem é algo polimórfico. Ele é um caso análogo ao Math.sin, e portanto não deve ser mockado.
Indo na pergunta que você usou como exemplo, vamos ver o que há no código e na solução encontrada:
public class ClasseA {

    public static final int constA = ClasseB.metodoB();

    public int metodoA(){
        System.out.println("Passei no metodo A");
        return 2;
    }
}

@RunWith(PowerMockRunner.class)
@PrepareForTest( { ClasseA.class,ClasseB.class })
public class TestesClasses {

    @Mock
    private ClasseA classeA;

    @BeforeClass
    public static void setUp(){
        PowerMockito.mockStatic(ClasseB.class);
        Mockito.mock(ClasseA.class);
    }

    @Test
    public void testando(){
        PowerMockito.when(ClasseB.metodoB()).thenReturn(5);
        Mockito.when(classeA.metodoA()).thenReturn(1);

        int retornoA = classeA.metodoA();
        int retornoB = ClasseB.metodoB();
        System.out.println("Retorno A: "+retornoA);
        System.out.println("Retorno B: "+retornoB);
    }
}

Esse exemplo é bastante artificial, então não dá para dizer com certeza o que de fato deveria ter sido, mas vou tentar usá-lo mesmo assim. O problema aqui é que o metodoB() fornece uma constante que não é exatamente uma constante, uma vez que, dada a necessidade de mocká-lo, conclui-se que o seu comportamento talvez seja polimórfico. O certo seria haver uma instância de ClasseB ou de alguma outra classe onde o metodoB() fosse chamado como um método de instância. Quanto ao constA, dado que isso dependeria então de uma instância de ClasseB, logo ele corresponde a parte de um contexto no qual as instâncias de ClasseA são usadas e criadas, e portanto ClasseB ou seria uma dependência de ClasseA ou então seria responsável por fabricar objetos de ClasseA.
Agora, respondendo diretamente às suas perguntas:

Se podemos fazer, quando devemos fazer?

Idealmente nunca. Faça isso só quando não houver outra saída, como no caso de o código a ser testado não poder ser modificado ou não for viável de ser modificado.

Quais são os casos em que mock de método estático é benéfico?

Nunca. Isso é uma má prática de programação e só deve ser usada em último caso quando o código a ser testado não puder ou não for viável de ser modificado.

Quando consigo detectar que o uso desse mock está sendo abusivo?

Ele sempre é abusivo.
Answer: Vou partir do princípio que não iremos entrar no mérito de como refatorar um código com métodos estáticos, pois eu entendo que isto seria uma outra discussão.
Vamos as suas perguntas.

Se podemos fazer, quando devemos fazer?

Normalmente você precisa de um mock de método estático quando ele guarda muita complexidade que simplesmente tentar contorná-la acaba não sendo viável.

Quais são os casos em que mock de método estático é benéfico?

Exemplo de uma classe que usa método estático complexo:
class ClassComEstatico () {

    public void metodo(String variavel) {
        //algum codigo simples
        BigDecimal valor = CalcularUtils.calculoComplexo(variavel); // problema...
    }
}

O CalcularUtils.calculoComplexo(variavel) pode ser um verdadeiro buraco negro, chamando outros Singletons, dependendo de outros métodos estáticos, chamando services por ServiceLocator... a imaginação é o limite. E em um teste você teria que lidar com todas estas dependências escondidas deste método aparentemente inofensivo. Neste caso, acaba sendo benéfico criar um mock para ele.
Se o método do CalcularUtils fosse um simples arredondar(variavel) você não precisaria se preocupar em mockar ele, dada a simplicidade do método. Por isto normalmente não nos preocupamos em mockar os Utils/Helpers.

Quando consigo detectar que o uso desse mock está sendo abusivo?

Entendo que isto começa a ocorrer quando seu setup de teste acaba tendo muitos mocks de métodos estáticos. Isto pode gerar uma confusão muito grande, porque você não saberá identificar facilmente qual estático mockado corresponde a qual parte do seu código sendo testado pelo teste unitário. Exemplo:
@Test
public void teste() {

    PowerMockito.mockStatic(ClassComEstaticos1.class);
    PowerMockito.mockStatic(ClassComEstaticos2.class);
    PowerMockito.mockStatic(ClassComEstaticos3.class);

    Resultado resultado = service.calcular(1, 2);
    //asserts
}

Assim, vêem as perguntas: Quem precisa do ClassComEstaticos1? E do ClassComEstaticos2? E do ClassComEstaticos3? É o próprio método calcular() que precisa ou é algum método que o calcular chama internamente? Ou ainda é outra classe que o calcular usa? E qual destes mocks ele usa?
Isto fará com que seja extremamente difícil de manter os testes. Abusivo ou não, se você precisar fazer o teste não terá como desviar deles a menos que consiga reescrever o código e removendo os métodos estáticos.

Quando usar mock de métodos estáticos?


Como alinhar um texto em uma div?

Question: Hoje (03/01/2023), estava fazendo meu primeiro site pessoal usando HTML e CSS.
Inicialmente criei uma série de divs em uma mesma linha, entretanto ao inserir um texto dentro de uma das divs o mesmo ficava alinhado verticalmente no fim do container como mostrado na imagem a seguir
clique para visualizar no tamanho original
Nessa imagem percebemos que a div em verde sairia da linha, mesmo todos os divs se tratando de inline-blocks os quais deveriam ficar em sequência. Como resolver tal situação?
Answer: Achei uma solução para a minha situação!
Utilizando a propriedade do CSS vertical-align: text-bottom;  dentro da div em verde a qual estava bugada resolve a situação por completo.
Não achei muito conteúdo sobre por isso decidi postar aqui.
clique para visualizar no tamanho original

Como alinhar um texto em uma div?


pass variable to javascript method

Question: I am having trouble passing values to methods of objects. I want to be able to pass a variable to an objects method when I call it however I cant seem to work out how this is done.
NOTE: I need to pass these values byRef however I am using strings to keep the example simple, in my actual code I am passing objects.
function makeObject(){
    var object = [ ];
    object.parameter1 = 0;
    object.parameter2 = "text";
    object.method = function (var1, var2){
        console.log(var1+" "+var2);
    }
    return object;
}

var myObject = makeObject();

This was how I expected it to work

myObject.method("hello", "world");
//console returns "undefined undefined"

I later read up that bind may be the answer but this does not seem to work

myObject.method.bind("hello", "world");
//console returns "undefined undefined"

Comment: I think you're mixing concepts here, plus `object` is not an actual object `{}` is an array `[]`. You're trying to make a constructor? If you read on `bind` you'll see that is not used like that, `bind` just changes the context of `this`.
Comment: you probably shouldn't be using the variable name object as it is a reserved word
Comment: Actually it should be working. And it works if you test it in console. You should use `{}`. Anyway arrays are objects too, so the problem might be somewhere else.
Comment: You sample works perfectly fine. Please verify if you actually see an issue with code you've posted, if not - please edit it so it actually shows the issue.
Comment: thanks for all the comments / help, still struggling I will post back when I have exhausted the new info
Comment: Yeah this example does actually work, I should have checked that, seems I simplified the problem too much, at least this eliminates a few issues, thanks all
Answer: Your method is defining an array [], not an object {}.  While you should be able to put methods onto an array just fine, I think something like this is what you're looking for
function makeObject(){
    var obj = { }; //an object literal
    obj.parameter1 = 0;
    obj.parameter2 = "text";
    obj.method = function (var1, var2){
        console.log(var1+" "+var2);
    }
    return obj;
}

Also note that you can return your entire object inline:
function makeObject(){
    return {
      parameter1: 0,
      parameter2: "text",
      method: function (var1, var2){
        console.log(var1+" "+var2);
      }
   };
}

Here's a demo

Also, for the second part of your question, bind serves to pre-set the this value of a function, and also to curry parameters.  This is contrived, but for example:
var sayIt = function(y){
    this.say(y);
};

var obj = {
   say: function(val){ console.log(val); }
};
var sayThat = sayIt.bind(obj, "that");
sayThat();

//logs that to console.

Demo
Comment: I have not solved my issue but you answer was the best, still trying to debug where my issue is as it is sveral levels deep in scope, might post a new question when I weed out the real issue

pass variable to javascript method


Someone help me with this error: Cannot set property 'type' of undefined. In my schema discord.js

Question: I need help solving this problem.
If I put 2, or greater than 2 in $guaranteedTier in my database, I get this error "cannot set property 'type' of undefined.
But if it's 1 in $guaranteedTier, it works normally.
The error is on line 112: cardToAdd.type = 'character';
Could tell me what I did wrong, and what could I do, to solve this?
My Schema:
const { model, Schema } = require('mongoose');
const Probability = require('probability-node');
const _ = require('lodash');

const cardPackSchema = new Schema({
    name: {
        type: String,
        unique: true
    },
    description: String,
    cards: Number, //Número de cartas dentro desse pack
    type: String, //Se é um Personagem, Feitiço, Item, Todos
    tier: Number,
    probability: {
        //Probabilidade de pegar cartas de especifico tier
        1: Number,
        2: Number,
        3: Number,
        4: Number,
        5: Number,
    },
    price: Number,
    discount: Number, //Desconto em porcentagem %
    stock: Number, // -1 é infinito no estoque
    guaranteedTier: Number //Se refere ao tier da descriçao do pack
});

cardPackSchema.methods.purchase = async function(memberID) {
    //->Initialization
    const profile = await this.model('Profile')
      .findOne({ memberID })
      .exec();

    //->Validation
    if (this.stock === 0)
      return {
        res: 'err',
        title: 'Not available',
        desc: 'The pack you are trying to purchase is out of stock'
      };

    if (profile.coins < this.price - this.price * this.discount)
      return {
        res: 'err',
        title: 'Insufficient Coins',
        desc: 'You do not have sufficient coins to purchase this pack'
      };

    //->Purchasing
    const cards = []; //Cards to give to the player;

    //-> Adding Guaranteed tier card
    if (this.guaranteedTier > 1) {
      addCard.call(this, this.guaranteedTier);
      this.cards--;
    }

    //->Probabilitized function
    const addRandomCard = new Probability(
      {
        p: this.probability['1'],
        f: () => addCard.call(this, 1)
      },
      {
        p: this.probability['2'],
        f: () => addCard.call(this, 2)
      },
      {
        p: this.probability['3'],
        f: () => addCard.call(this, 3)
      },
      {
        p: this.probability['4'],
        f: () => addCard.call(this, 4)
      },
      {
        p: this.probability['5'],
        f: () => addCard.call(this, 5)
      }
    );

    //-> Adding the rest of the cards
    for (var i = 1 + cards.length; i <= this.cards; i++) {
      await addRandomCard();
    }

    //->Add Cards to inventory
    const deck = await this.model('Deck')
      .findOne({ memberID })
      .exec();

    profile.deductCoins(this.price - this.price * this.discount);

    await deck.addCards(cards);
    //->Return card names
    return {
      res: 'success',
      cards,
      coins: profile.coins - (this.price - this.price * this.discount)
    };

    //->Add Card function
    async function addCard(tier) {
      const randomTypeCard = Math.floor(Math.random() * 1) + 1;

      //Adding a Character card
      if (
        (randomTypeCard === 1 && this.type === 'all') ||
        this.type === 'character'
      ) {
        const cardToAdd = _.sample(await model('Character').find({ tier }));
        cardToAdd.type = 'character';
        if (
          !_.includes(cards.map(card => card.name), cardToAdd.name) ||
          cardToAdd.sold >= cardToAdd.stock
        ) {
          await cardToAdd.sell();
          cards.push(cardToAdd);
        } else addCard.call(this, tier);
      }
    }

};

model('CardPack', cardPackSchema);

Answer: its most probably cardToAdd.type
are you sure that cardToAdd is not undefined ?
i think this line returns nothing :
const cardToAdd = _.sample(await model('Character').find({ tier }));

which means this code may return nothing :
await model('Character').find({ tier })

Comment: It only displays the error if the $guaranteedTier is greater than 1


Is the set $V$ = { $([t], [g], [t], [j]): t,g,j∈$Z$,[2t+j] = [0]$} a subspace of vector space $(\mathbb Z_3)^4$?

Question: Is the set $V$ = { $([t], [g], [t], [j]): t,g,j∈Z,[2t+j] = [0]$}  a subspace of vector space $(\mathbb Z_3)^4$?
I am inclined to think that it is a subspace. However, I cannot find any basis for the subspace, which makes me doubt my suggestion that it is a subspace (as every subspace must have a basis).
Is (1,0,1,1),(0,1,0,0) the basis if the subspace? It seems that the vectors are not linearly independent.
Answer: Note:  All variables are taken as elements of $\Bbb{Z}_3$, so the equivalence class brackets are suppressed for readability.  Since $\Bbb{Z}_3$ is a field, the usual tools of linear algebra apply.
It might be clearer to initially give all the coordinates separate variable names, then impose relations:
$$
V = \bigl\{ (t, g, u, j) \bigm| u - t = 2t + j = 0 \bigr\},
$$
which you can write as a $2 \times 4$ matrix over $\Bbb{Z}_3$.  (There's one column for each generator and one row for each relation.)
$$
A = \begin{pmatrix} 1 & 0 & -1 & 0 \\ 2 & 0 & 0 & 1 \end{pmatrix}
= \begin{pmatrix} 1 & 0 & -1 & 0 \\ -1 & 0 & 0 & 1 \end{pmatrix}
$$
In other words, $V$ is the kernel or nullspace of the linear transformation represented by the matrix $A$.  This subspace has dimension $4-2=2$ with basis
$$
\left\{
\begin{pmatrix} 1 \\ 0 \\ 1 \\ 1 \end{pmatrix}, \;
\begin{pmatrix} 0 \\ 1 \\ 0 \\ 0 \end{pmatrix}
\right\}.
$$
Comment: I also though of this basis. However, it seems that it does not fall under the definition as the basis is not linearly independent ( I can find $c_1, c_2$ $∈ F$ such that $c_1$ is not 0 or $c_2$ is not 0)
Comment: Have another look at the definition of *linearly independent.*  The **only** linear combination of those two vectors that yields the zero vector is the trivial combination (both coefficients are zero).
Comment: If I take $c_1 = 3$ and $c_2 = 6$, then I get (3,6,3,3) = (0,0,0,0). As $Z_3$ = { [0], [1], [2] }, then [3] is [0] and [6] is [0].
Comment: Remember that $6=3=0$ in $\Bbb{Z}_3$.
Comment: But if it is some random field $F$? As it seems that 6 = 3 = 0 if $c1,c2∈Z_3$.
Comment: The *definitions* and *techniques* described work over **any** field.  The particular basis (even the number of vectors in it) might depend on the field that all of this takes place in.


Error: No module named dtmilano

Question: I followed the steps mentioned in the below post:
Can't get AndroidViewClient example code to run
But im still getting error "No module named dtmilano"
In my test.py file i have added the following lines :
sys.path.append('C:\AndroidViewClient-master\AndroidViewClient-master\AndroidViewClient\src')
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
from com.dtmilano.android.viewclient import ViewClient

the same is done in dump.py file
I have also set the environment variable for  AndroidViewClient.
Is there anything i missed ?
Thanks in advance.
Answer: I guess is related with how the '\' (backslash) are treated, they may be escaping the following character.
Using AndroidViewClient plugin as explained here should solve this Windows problem.
For example:
c:>\path\to\monkeyrunner -plugin \path\to\androidviewclient-<version>.jar myscript.py

Error: No module named dtmilano


SQL freetext() not working on some columns

Question: I have a table which contains 7 columns and I have created a full text index on the table. However I noticed that a search using freetext() does not return any rows on 2 of the columns
Its returns rows on other columns.
Here is my query
select * from dbo.ModelCategoryValues
where freetext(economyvalues,'24,29')
and freetext(featurevalues,'10')
and freetext(pricerangevalues,'15')
and freetext(performancevalues,'18,20')
and freetext(economyvalues,'22,24')
and freetext(usevalues,'28')

This returns expected results
However when I run the below no rows are returned
select * from dbo.ModelCategoryValues
where freetext(cartypevalues,'1')

I can see rows corresponding to the above data. I have tried everything from re-populating index to re-creating it but no success.
Comment: Please share schema of this table.
Comment: Here is the db diagram
https://www.dropbox.com/s/hbjhucghck8sfpz/Capture.PNG?dl=0
Comment: Data Types of columns?
Comment: Obvious question - but is cartypevalues actually in the index?
Comment: Here is the entire db schema
https://www.dropbox.com/s/hbjhucghck8sfpz/Capture.PNG?dl=0
Comment: yes, all the columns except for the variantid and categoryid are in the index.The index is working well on all other columsn except for carseatvalues and cartypevalues columns. Using contains() does not work either
Comment: here is the data in the table. I want to be able to pass one or many of atleast one column and do the search https://www.dropbox.com/s/uqoezvnrvp4u6pi/Capture1.PNG?dl=0
Answer: FREETEXT by default excludes the records having "STOPLIST" Values.
To resolve the problem, set the StopList to 'OFF' using following query :-
ALTER FULLTEXT INDEX ON DealerSearch SET STOPLIST = OFF


Android Studio can't find property XMLConstants.ACCESS_EXTERNAL_DTD

Question: I'm having a very similar issue to this post - Java and Xerces: can't find property XMLConstants.ACCESS_EXTERNAL_DTD - but with working on Android Studio IDE.
I'm also trying to fix the same issue about disabling XML external entity (XXE) processing that gets raised as a vulnerability in our SonarCloud analysis (see: https://sonarcloud.io/project/issues?id=org.digitalcampus.mobile.learning&open=AW3ezGnx-dJmagWAiKPH&resolved=false&types=VULNERABILITY).
As far as I can tell, I have the most recent version of Android Studio installed, along with the all recent updates for Java, my Android Studio about dialog shows this:
<code>Android Studio 3.5.3
Build #AI-191.8026.42.35.6010548, built on November 15, 2019
JRE: 1.8.0_202-release-1483-b49-5587405 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Linux 4.15.0-76-generic
</code>
I'd really appreciate any feedback/help on how I can resolve this, so I can remove the vulnerability from my code. Just let me know if there is any other specific information (versions etc) that you may need.
Thanks in advance for you help...
Update (14/2/20)...
Looks like the ACCESS_EXTERNAL_DTD constant is not available in Android - see the Android java reference docs: https://developer.android.com/reference/javax/xml/XMLConstants.html.
So would the FEATURE_SECURE_PROCESSING constant be sufficient?
Answer: you can use the below code to solve your issue, check the XML External Entity Prevention Cheat Sheet for more details
<code> DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    String FEATURE = null;
    try {

        dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
        dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
        dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
        dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
        dbf.setXIncludeAware(false);
        dbf.setExpandEntityReferences(false);

    } catch (ParserConfigurationException e) {
        // This should catch a failed setFeature feature

    } catch (SAXException e) {
        // On Apache, this should be thrown when disallowing DOCTYPE

    } catch (IOException e) {
        // XXE that points to a file that doesn't exist

    }

// Load XML file or stream using a XXE agnostic configured parser...
        DocumentBuilder safebuilder = dbf.newDocumentBuilder();
</code>
if this was helpful, please mark this as the answer.
Comment: just what I needed... it's now no longer showing as a vulnerability (on the instance I've tested on anyway). I did get the message that the SAXException and IOException aren't thrown in that particular try block, so I didn't need to include these catches.


Essential singularity: Residue at $0$ or $\infty$?

Question: All my doubts came from the following exercise:

Given
\begin{equation} f(z) = z^3 e^{-\frac{2}{z}} \end{equation}
find the singularities of the function in $\bar{\mathbb{C}}$ and specify their nature (removable, pole of order $N$, essential singularities) and the residue at these points.
Solution: $z = 0$ essential singularity, $z = \infty$ pole; $\operatorname{Res}(f(z), 0) = \frac{2}{3} = - \operatorname{Res}(f(z), \infty)$

So I started considering the expansion of $e^z$ about $0$:
\begin{equation}e^z = \sum\limits_{n = 0}^{\infty}\frac{z^n}{n!}\end{equation}
and then I substituted $z\to-\frac{2}{z}$
\begin{equation}e^{-\frac{2}{z}} = \sum\limits_{n = 0}^{\infty}\frac{(-1)^n2^n}{n!}\left(\frac{1}{z}\right)^n\end{equation}
Multiplying everything for $z^3$ I get the function $f(z)$ expanded in Laurent series:
\begin{equation}f(z) = \sum\limits_{n = 0}^{\infty}\frac{(-1)^n2^n}{n!}z^{-n+3}\end{equation}
Then considering the $c_{-1}$ coefficient I got the residues of the function in $0$:
$$
\operatorname{Res}(f(z), 0) = \left(\sum\limits_{n = 0}^{\infty}\frac{(-1)^n2^n}{n!}z^{-n+3}\delta_{4}^{n}\right) = \frac{(-1)^42^4}{4!} = \frac{2}{3}
$$
where $\delta_j^i$ in the Kronecker delta. Now, since a friend of mine was doing the same exercise he developed a solution expanding the function at $\infty$ and he got the same result as me, with the same sign (so wrong because $\frac{2}{3}$ should be the right in $0$, but not in $\infty$), but now I'm not sure of what I have done, since it appears to me that this expansion is not in $0$ but in $\infty$, so $\frac{2}{3}$ should be the residue of $f(z)$ at $\infty$ and not in $0$ (as my expansion is valid at $\infty$, since is $e^{-\frac{2}{z}}$.
Last I tried computing with Mathematica the series and the result and I got:

Basically Mathematica in $0$ is not computing results, while in $\infty$ it's giving me the same series that I thought I get in $0$, but the residue computed at $\infty$ is the same that I got with my calculations.
What's going on? Am I calculating the series in $\infty$ without knowing? And if it's so, how is it possible that the residue at $\infty$ is the opposite of the $c_{-1}$ at $\infty$?
Comment: I would start by looking at limits where we get singularities points which are $0$ and $\infty$

Now: a. if the limit exists so it is removable singularity  b. if the limit is $\pm \infty$ it is a pole and c. if the limit does not exist it is essential singularity
Answer: What you did to compute the residue at $0$ is correct.
The residue at $\infty$ is$$-\operatorname{res}_0\left(\frac1{z^2}f\left(\frac1z\right)\right)=-\operatorname{res}_0\left(\frac1{z^2}\cdot\frac1{z^3}e^{-2z}\right)=-\operatorname{res}_0\left(\frac{e^{-2z}}{z^5}\right)=-\frac23.$$
Answer: How exactly do you define the residue at $\infty$? A definition I'm working with is:
$\DeclareMathOperator{\Res}{Res}$

Let $\infty$ be an isolated singularity of $f$, meaning there exists $R > 0$ such that $f$ is holomorphic at $\mathbb{C}\setminus \overline{B(0,R)}$. Then:
  $$\Res(f, \infty) = -\frac{1}{2\pi i}\int\limits_{|z|=R} f(z)\,dz$$

Furthermore, $f$ has a Laurent expansion on $\mathbb{C}\setminus \overline{B(0,R)}$:
$$f(z) = \sum_{n=-\infty}^\infty c_nz^n, \quad|z| > R$$
We see that $\Res(f, \infty) = -c_{-1}$.
A result which follows from this definition is:

Let $z_1, \ldots, z_k \in \mathbb{C}$ be all isolated singularities of $f$ and $f$ is holomorphic on $\mathbb{C}\setminus\{z_1, \ldots, z_k\}$. Then:
  $$\sum_{i=1}^k \Res(f,z_i) + \Res(f, \infty) = 0$$

In your case, $f(z) = z^3e^{-\frac{2}{z}}$ has a Laurent series $$f(z) = \sum_{n = 0}^{\infty}\frac{(-1)^n2^n}{n!}z^{-n+3}, \quad z\ne 0
$$ on $\mathbb{C}^\times$ so using this series we get $\Res(f,0) = c_{-1} = \frac{2}{3}$ and $\Res(f, \infty) = -c_{-1} = -\frac{2}{3}$. We verify that $\Res(f,0) + \Res(f,\infty) = 0$, since $0$ is the only isolated singularity of $f$.
Answer: Laurent series can't be about $\infty$; they are always about a finite complex number. They are power series, so that's the only thing that makes sense!
However, the same function can have multiple Laurent series that converge in different annuluses. For example, the function $f(z) = \frac{1}{1-z} + \frac{1}{2-z}$ has three different Laurent series centered on $z=0$:
$$ \sum_{n=0}^{\infty} \left(1 + 2^{-1-n} \right) z^n \qquad \qquad |z| < 1 $$
$$ \sum_{n=-\infty}^{-1} (-1) z^n + \sum_{n=0}^{\infty} 2^{-1-n} z^n \qquad \qquad 1 < |z| < 2 $$
$$ \sum_{n=-\infty}^{-1} (-1 - 2^{-1-n}) z^n \qquad \qquad 2 < |z| $$
When you ask for the series at infinity, what you're telling Mathematica to do is to give you the series for which $\infty$ is in (or on the boundary of) the domain of convergence. Mathematica seems to default to picking 0 as the center when you ask this.

Regarding the series around zero.... I don't think Mathematica explicitly documents its semantics, but presumably what's going on here is that the series command intends to return a finite approximation. For example, something of the sort
$$ \frac{1}{1-z} \approx 1 + z + z^2 + O(z^3) $$
The problem with your example is there aren't any finite approximations. The essential singularity means that you need all of the leading terms to get an approximation near $z=0$.
So, what Mathematica does is it instead factors out an analytic function expressing the essential singularity, and then gives a series approximation for what's leftover.
Comment: So my expansion (the one i made with the series of $e^z$) is about $0$ and my method is right?


Kendo chart setting y axis to integer numeric value

Question: I am using Telerik Kendo Chart and i try to show integer values to y axis.
here is no problem when my values like 6 - 8 - 10 but for example when i use the code which is below, i get values on y axis like that:
My y axis chart values(8 and 9)
I get,
7.4
7.6
7.8
8.0
...
...
9.0
But i want to set values to y axis integer values like 6 - 7 - 8 - 9 - 10 etc. How can i do it? I mean how can i show integer values on my y axis?
Here is my code:
<code>               @(Html.Kendo().Chart(Model)
               .Name("chart")
               .Title(title => title
                .Text(@ViewBag.a)
               .Position(ChartTitlePosition.Top))

               .Legend(legend => legend
               .Visible(true)
               .Position(ChartLegendPosition.Top))
               .Series(series =>
               {
                   series
                   .Column(model => model.a, categoryExpression: model => model.date).Name("name")
                   .Aggregate(ChartSeriesAggregate.Count)
                    .Labels(labels => labels.Visible(true).Position(ChartBarLabelsPosition.Center));
                   series
                   .Column(model => model.b, categoryExpression: model => model.date).Name("name")
                   .Aggregate(ChartSeriesAggregate.Count)
                    .Labels(labels => labels.Visible(true).Position(ChartBarLabelsPosition.Center));

               })
                    .Events(ev => ev.DataBound("onDB"))

               .CategoryAxis(axis => axis
               .Date()
               .BaseUnit(ChartAxisBaseUnit.Years)
               .MajorGridLines(lines => lines.Visible(true))

               )

               .Theme("metro")
               .Tooltip(tooltip => tooltip
               .Visible(true)
              .Template("#= series.name #: #= value #")))
</code>
When i use this code:
<code> .ValueAxis(axis => axis.Numeric().Labels(labels => labels.Format("{0:n0}"))),
</code>
I get y axis values like that:
7
8
8
8
8
8
8
9
9
9
9
9
9
Answer: You can try adding Major Unit in the Value Axis Of the Chart. Please see the below code that you need to append:
<code>.ValueAxis(axis => axis.Numeric()
                       .Labels(labels => labels.Format("{0:n0}"))
                       .MajorUnit(1))
</code>


Executing Curl command in Python

Question: I have values in two variables
SessionId=Pxsvdsdruhn
ServerUrl=https://app3.xxxxxxxxcloud.com/saas

I want to pass these values in curl command and execute it from python script. I tried below but its giving syntax error
os.system("curl -X GET -H "Content-Type:application/json" -H "Accept: application/json" -H "icSessionId":"SessionId" ServerUrl/api/v2/agent")

Any pointers where i am wrong?
Comment: You're trying to put quotes in a string delimited with the same quotes? Also, why don't you use a Python-level client, e.g. `requests`, instead of shelling out to curl?
Comment: combine single and double quotes so that you can keep double quotes in the command
Comment: `requests` is the bees knees, use that
Answer: The way to do what you are looking for is a technique called string interpolation. Fortunately, this has already been answered on StackOverflow.
Is there a Python equivalent to Ruby's string interpolation?
I'd also strongly recommend using single quotes around your command so that way you can escape the double quotes in your string. The python interpreter thinks you're putting separate strings together, instead of treating the quotes as an "embedded" string.

Executing Curl command in Python


Why is my function returning the wrong data type?

Question: I'm making a very simple blackjack game in python and learning things as i go along and make it. The function which determines the value of the card returns a 'none' value when it should be returning integer 10 or 11 which creates an error when determining the score of the player as you cant add an integer and null together. You can see below what the code looks like:
<code>
import random
from random import randint
stacksize = 100
pScore = 0
dScore = 0
dd = 0
def card_deck():
    values = ['Ace', 'King', 'Queen', 'Jack', '10', '9', '8', '7', '6', '5', '4', '3', '2']
    suits = ['Hearts', 'Spades', 'Diamonds', 'Clubs']
    deck = []
    for i in suits:
        for x in values:
            deck.append(x + ' of ' + i)
    return deck

cards = card_deck()

def card_value(card):
    if card[:1] in ['King', 'Queen', 'Jack']:
        return int(10)
    elif card[:1] in ['10', '9', '8', '7', '6', '5', '4', '3', '2']:
        return int(card[:1])
    elif card[:1] == 'Ace':
        return int(11)
#king queen jack or ace returns value of none

</code>
Answer: Couple of problems I can see off the bat.
The string of the card value will be something like "King of Hearts"
The slicing you are doing will cut that string down to "K" which will not match "King".
The numbers will match because "2 of Hearts" will be truncated to "2". However you are likely to have a problem with the number 10.
<code>def card_value(card):
    card_parts = card.split(' ')
    if card_parts[0] in ['King', 'Queen', 'Jack']:
        return int(10)
    elif card_parts[0] in ['10', '9', '8', '7', '6', '5', '4', '3', '2']:
        return int(card_parts[0])
    elif card_parts[0] == 'Ace':
        return int(11)
</code>
Comment: Thankyou so much. I didnt fully understand what the [:1] was doing, i only just started learning python yesterday so at the moment im just doing trial and error combined with vague google searches to figure out the syntax.
Comment: Also look at random.sample() for selecting the cards


For which $a \in \mathbb R$ does the line $y=a$ cut the graph of a sine function?

Question: I really dont get this question. Dont I need to know what $a$ is?
Comment: The graph if a sine function is $y=\sin x$. So now you're graphing the following:
$$
\begin{cases}
y = \sin x \\
y = a
\end{cases}
$$
It should be clear that the two graphs "cut" each other when $\sin x = a$. For what values of $a$ does this equation have a solution? In other words, we're looking for the **range** of the $\sin x$. I suggest that you actually graph the functions and play around with the values.
Comment: @Arthur Thanks, corrected.
Answer: Here is a more expanded version of the same problem. Maybe that helps you understand it better:

Does the line $y=0$ cut the graph of a sine function? What about $y=2$? What about $y=-\frac12$? These are three possible lines, but there are many more. How can you tell, just by looking at the right-hand side of such an expression, whether the line it describes intersects the sine graph?


How to use tokens in node titles?

Question: For example if I've page title as "Income tax forms 2012" it should change automatically change to "Income tax forms 2013" in Y2013.
Tokens work for node body but not in title. It did not work when I tried.
Any suggestions?
Answer: If these titles are on nodes, and you have the Auto Node Title module installed, you should be able to use [yyyy] for the current year in the replacement patterns section.  However, drupal won't automagically go and redo the title for you, but rather, you will have to resave it "next year" for it to take effect.
Comment: Thanks but it isn't of much use if it needs to be done manually.
Answer: In addition to Jimajamma's answer, you could use Automatic Nodetitles in conjunction with Scheduling part of Rules. This will allow you to create a Rule which re-saves the particular node at the start of every year, which will update the node title.

How to use tokens in node titles?


Assign std::string from an object using operator=

Question: I'd really like to be able to assign a std::string object from a DecoratedString object that I'm writing.
class DecoratedString
{
private:
    std::string m_String;
public:
     DecoratedString(const std::string& initvalue)
     : m_String(initvalue)
     {
     }

     const std::string& ToString() const
     {
         return m_String;
     }

     const std::string& operator=(const DecoratedString& rhs)
     {
         return rhs.ToString();
     }

}

I've written a unit test to make sure this works:
void DecoratedStringTest::testAssignmentToString()
{
    std::string expected("test");
    DecoratedString sut(expected);
    std::string actual;
    actual = sut;

    CPPUNIT_ASSERT_EQUAL(actual, sut.ToString());
}

However, the compiler says error: no match for 'operator=' in 'actual = sut'.  It then lists the overloaded operator= options from the standard library.
Why isn't the compiler finding the operator= I defined?
EDIT:
So I guess I need a conversion operator, not an assignment operator.  Huge thanks to the people that saw what I was trying to do and explained what I should do instead.
Answer: The operator = you have defined is for assigning decorated strings to other decorated strings and returning an std::string from that assignment.
What you want is a member "conversion operator" that automatically converts a decorated string to an std::string whenever required, like this:
operator std::string const &() const { return ToString(); }

That will also convert a decorated string automatically to a std::string const & whenever one is needed (i.e. when comparing to an std::string, or passing a DecoratedString to a function which takes a std::string const &).
Answer: The compiler is complaining about this line:
actual = sut;

which should be:
actual = sut.ToString();

Alternatively you should provide a cast operator to implicitly convert a DecoratedString to a std::string:
class DecoratedString
{
    ...
    operator std::string() const
    {
        return ToString();
    }
};

Comment: A cast operator?  didn't know you could do that.
Comment: It's worth noting that since this answer uses an "operator std::string" and not a reference, this will create a copy of the return from ToString().
Answer: You got it backwards. The operator= needs to be defined on the std::string to be able to accept your object, not the class you are assigning from, but since you are dealing with the standard library you can't do that.
An alternative would be a streaming operator (as a free function):
std::string& operator<<( std::string& out, const your_class& yc )
{
    out.assign( yc.to_string());
    return out;
}

your_class myobj;
std::string str;
str << myobj;

Or just define regular streaming for std::ostream and use std::stringstream.
Edit:
Yet another option, as others noted, is the type conversion operator:
your_class::operator const std::string() const;

Modern practice though tells us it's not the greatest idea (temporaries, extra copies, surprises).
Answer: You're overloading the unary assignment operator that is intended for assigning a specific type to DecoratedString and is supposed to return a reference to DecoratedString so you can chain assignments. This operator is not designed to allow you to assign an object of DecoratedString to a different datatype, but rather so you can assign an object that isn't necessarily a DecoratedString to a DecoratedString. It also gives you a well-defined function to handle any sort of specific processing that an assignment of your class might required (deep copy, for example).
You either have to call your ToString() function or you'll have to create a conversion operator that can convert your DecoratedString into a std::string by implementing the following member function for DecoratedString:
operator std::string () const;

This might or might not be a good idea as this conversion operator will be used implicitly by the compiler and might lead to unexpected behaviour.
As an aside, another reason why your operator overload is not working is that you're trying to overload a function by its return value, which is a big no-no in C++.


Remove element from a pointer and pointer to pointer in C

Question: Still learning, this is a segment of code I'm working on and I'm trying to remove an element(s) from a pointer/pointer-pointer. The problem is near the end of the code.
int total, tempX = 0;

printf("Input total people:\n");fflush(stdout);
scanf("%d",&total);
printf("You entered:  %i\n", total);

char **nAmer = (char**) malloc(total * sizeof(char*)); //pointer pointer for username
for (tempX=0; tempX<total; tempX++){
   nAmer[tempX] = malloc(21);
}

double *nUmer = (double*) malloc(total* sizeof(double)); //pointer for usernumber

printf("input their name and number:\n");fflush(stdout);

for (tempX = 0; tempX<total; tempX++){
    scanf("%20s %lf", nAmer[tempX], &nUmer[tempX]);
}

printf("Let me read that back:\n");
for (tempX = 0; tempX<total; tempX++){
   printf("Name: %s Number: %lf\n", nAmer[tempX], nUmer[tempX]);
}

char *searcher = (char*) malloc(21 * sizeof(char*)); //temporary string made by the user to compare names
printf("Enter name to remove user(s):\n");fflush(stdout);
scanf("%20s",searcher);
for (tempX = 0; tempX < total; tempX++){
    if (strcmp(searcher,nAmer[tempX])==0){ //what is better to replace this section?
       free(nAmer[tempX]); //I can assume this wont work well
       free(nUmer[tempX]); //I know this is a problem
   }
}
printf("Let me read that back with removed user(s):\n");fflush(stdout);
for (tempX = 0; tempX<total; tempX++){
    printf("Name: %s Number: %lf\n", nAmer[tempX], nUmer[tempX]);
}

I know free (nAmer[tempX]); works but doesn't allow for the read back after its removal. What would fix this?
Comment: Welcome to Stack Overflow! [don't cast malloc](https://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc)
Answer: You shouldn't free(nUmer[tempX]); because this isn't a pointer.
When you free one of the name pointers, you can set it to NULL. Then the loop that prints the array that can skip it.
for (tempX = 0; tempX < total; tempX++){
    if (strcmp(searcher,nAmer[tempX])==0){ //what is better to replace this section?
       free(nAmer[tempX]);
       nAmer[tempX] = NULL;
   }
}
printf("Let me read that back with removed user(s):\n");fflush(stdout);
for (tempX = 0; tempX<total; tempX++){
    if (nAmer[tempX]) {
        printf("Name: %s Number: %lf\n", nAmer[tempX], nUmer[tempX]);
    }
}

You have another mistake:
char *searcher = (char*) malloc(21 * sizeof(char*)); //temporary string made by the user to compare names

This should just be * sizeof(char) (or you can just leave this out, since sizeof(char) is defined to be 1).
Luckily this allocates more memory than needed, not less.
Comment: you can't remove the `nUmer` element. You don't need to remove it, you just ignore it because the corresponding `nAmer` element is `NULL`.
Comment: The null shouldn't be printed, because the `if` skips it.
Comment: BTW, a better way to do this would be with an array of pointers to structures, rather than 2 arrays.
Comment: yeah didn't notice that if statement,  I know about structures and linked lists being better for this, but I wanted to learn more about pointers
Answer: You have two options.

Change the pointer in nAmer to NULL after you freed it, don't change nUmer. That way when processing an entry in nAmer[i] or nUmer[i] you can check if nAmer[i] is valid (!=NULL) or not (==NULL) and ignore the entry if it is invalid.
You can move all entries after the removed entry one up in the array and remember that now there are not total number of entries but only total-1 number of entries.

Please do not free(nUmer[i]). The entries in nUmer are doubles and not pointers. You cannot free them.


A bound for a differential operator in Sobolev norms

Question: Let $s$ be an integer and $L$ a periodic linear partial differential operator $L=\{L_{ij}\}$ of order $l$ on $\mathcal{P}$, the space of $2\pi$-periodic functions $R^n\longrightarrow C^m$. The sobolev $s$ norm that I am familiar with is defined on $\mathcal{P}$ by
$$||\phi||_s=\sqrt{\sum_{\xi\in\mathbb{Z}^n}(1+|\xi|^2)^s|\phi_\xi|^2} $$ where $\phi_\xi$ are the Fourier coefficients of $\phi.$
In Frank Warner's Foundations of Differentiable Manifolds and Lie groups Proposition 6.25 states that
There are constants $c,k,c'>0$ such that
$$||L\phi||_s\leq ck||\phi||_{s+l}+c'||\phi||_{s+l-1} $$
where $c$ depends only on $n,m,l$ and $s$, where $k$ is a bound on the absolute values of the coefficients of the highest order terms in $L$ and $c'$ depends only on $n,m,l,s$ and derivatives of coefficients of $L$ up to order $l.$
I understand the proof in the case $m=1$. Warner then claims that one may use the inequality $||L\phi||\leq const\sum_{ij}||L_{ij}\phi_j||_s$) where $const$ is a constant depending only on $m$, to prove the general case. I can't seem to get any constants in my calculation, so I was wondering whether it is correct. Here is my approach:
\begin{align*}
||L\phi||^2_s&=\sum_\xi(1+|\xi|^2)^s|(L\phi)_\xi|^2\\&=\sum_\xi(1+|\xi|^2)^s|((L\phi)_1)_\xi|^2+\sum_\xi(1+|\xi|^2)^s|((L\phi)_2)_\xi|^2+\ldots\sum_\xi(1+|\xi|^2)^s|((L\phi)_m)_\xi|^2\\&=||(L\phi)_1||^2_s+||(L\phi)_2||^2_s+\ldots+||(L\phi)_m||^2_s
\\&=||\sum_j L_{1j}\phi_j||^2_s+||\sum_j L_{2j}\phi_j||^2_s+\ldots+||\sum_j L_{mj}\phi_j||^2_s\\&\leq \left(\sum_{ij}||L_{ij}\phi_j||_s\right)^2.
\end{align*}
Answer: So far so good. Now, apply the Cauchy-Schwarz inequality to the constant $1$ vector $\mathbf{1}$ and the vector with entries $\|L_{i,j} \phi_j\|_s$ to get that
$$
\left( \sum_{ij} \|L_{i,j} \phi_j\|_s\right)^2\leq m^2 \sum_{ij} \| L_{i,j} \phi_j\|^2_s
$$
Thus,
$$
\| L \phi\|_s\leq m\sqrt{\sum_{i,j} \|L_{i,j} \phi_j\|^2_s}\leq m\sum_{i,j} \| L_{i,j} \phi_j\|_s,
$$
since $\|x\|_1\geq \|x\|_2$ for any $x\in \mathbb{R}^{2m},$ where $\|\cdot\|_p$ denotes the usual $\ell^p$ norm.


Custom headers not logging in HAProxy

Question: I am trying to set and log custom headers in HAProxy in order to get data so I can set up our DDoS/Anti Abuse configs.
The trouble I am having is that I can set headers, and I can capture headers not set by HAProxy (eg: Accept-Language) but I cannot capture/log headers that I set. They just show up blank in the log. The config below I have simplified everything as much as possible and it still won't log the custom headers.
I have all of this in a single front end.
frontend WEBSERVER
    bind 111.222.333.444:80
    option forwardfor
    option httplog

    .......

    http-request add-header X-IP %ci
    http-request add-header X-Custom-Header pizza

    capture request header X-IP len 64
    capture request header X-Custom-Header len 5
    capture request header Accept-Language len 64

    default_backend WEB-FARM

My logs end up looking like this:
10.0.0.1:62291 [20/Oct/2015:12:52:26.112] WEBSERVER WEB_FARM/WEB-1 5/0/49/50/315 200 16875 - - ---- 1/1/0/0/0 0/0 {||en-US,en;q=0.8} "GET /media/title.png HTTP/1.1"

Comment: Surely the client IP is already right there in the log? Anyway, `capture request header` works at the time the request is received, not after some processing (i.e. `add-header`) is done.
Comment: Perfect, this was the missing piece of the puzzle. I created a back end that proxies the request to a new front end that does the logging. Working fine now.

Something like (https://github.com/jvehent/haproxy-aws)
Answer: You don't say what version of HAProxy you're using, but in 1.6.x, the http-request keyword now has a capture argument that should do the trick for you.
You use it the exact same way as you would capture request header:
frontend WEBSERVER
  bind 111.222.333.444:80
  option forwardfor
  option httplog

  .......

  http-request add-header X-IP %ci
  http-request add-header X-Custom-Header pizza

  http-request capture hdr(X-IP) len 64
  http-request capture hdr(X-Custom-Header) len 5
  capture request header Accept-Language len 64

  default_backend WEB-FARM

Comment: Thanks so much! This took me a whole day until I found this. I did not grasp from the official documentation, that the regular `capture request header` would not work for my custom added headers. I would upvote this twice, if I could.

Custom headers not logging in HAProxy


can't access web site with same name as AD domain name

Question: their internal Windows/AD domain name is blahblahblah.com and their public website is blahblahblah.com and they can't see their website while on the office network (the web site loads just fine from anywhere else). How do I fix this so they can see their public web site internally?
Comment: Also, check out the assorted information on best practices for Active Directory naming. [Here's a thread I made about the same problem](http://serverfault.com/q/567775/118258), [here's a link to one of Mark's blog posts where he talks about it](http://www.mdmarra.com/2013/07/more-documentation-from-microsoft-about.html), and [here's a link to a Technet article that talks about best practices for AD naming](http://technet.microsoft.com/en-us/library/cc738121%28WS.10%29.aspx).
Answer: You rename the internal Active Directory domain to be someInternalName.blahblahblah.com.
Answer: Create a www host in blahblahblah.com zone internaly and make it point to your public IP.
If you really want to use the blahblahblah.com without the www, you can check, the name should resolve to your DC, so add the IIS role on the DC, add the domain blahblahblah.com in IIS, and do a 302 redirect to www.blahblahblah.com.
Comment: Please do NOT install IIS on your DC... Complete violation of security best practice.