request.post() não funciona corretamente gerando um redirecionamento 301 no Nginx

Question: Estou com um problema quando uso request.post('url', data), por algum motivo quando o servidor recebe essa requisição, ela redireciona (301) a requisição para a mesma url perdendo os dados do POST, finalizando como um método GET.
Python:
>>> r = requests.post('http://meusite.com/teste', data={'a': 'teste'})
>>> r.request.method
'GET'
>>> r.request.headers
{'Accept': '*/*', 'Content-Type': 'application/x-www-form-urlencoded', 'Connection': 'keep-alive', 'Accept-Encoding': 'gzip, deflate', 'User-Agent': 'python-requests/2.9.1'}
>>> r.request.body  # nao tem nada no body

>>> r.history  # analisando a historia do request é encontrado um redirecionamento 301
[<Response [301]>]
>>> history = r.history[0]
>>> history.request.method
'POST'
>>> history.request.headers
{'Accept': '*/*', 'Content-Type': 'application/x-www-form-urlencoded', 'Connection': 'keep-alive', 'Accept-Encoding': 'gzip, deflate', 'User-Agent': 'python-requests/2.9.1', 'Content-Length': '7'}
>>> history.request.body
'a=teste'

Como pode ver, ao mandar um POST, acontece um 301 (como está no r.history) redirecionando com um GET (perdendo os dados que haviam sido passado por POST).
Log do Nginx:
[01/Apr/2016:19:48:46 +0000] "POST /teste HTTP/1.1" 301 5 "-" "python-requests/2.9.1"
[01/Apr/2016:19:48:46 +0000] "GET /teste/ HTTP/1.1" 200 66 "-" "python-requests/2.9.1"

Eu tentei enviar esses dados via request.post() tanto de localhost para o servidor destino, quanto através do próprio servidor destino para si mesmo e continua apresentando o mesmo problema.
O meu Nginx está configurado da seguinte maneira:
Nginx:
upstream hello_django_app_server {
    server unix:/home/ubuntu/virtualenvs/hello_django/sockfile/gunicorn.sock fail_timeout=0;
}

server {
   listen 80;
   server_name hello_django.com;
   client_max_body_size 4G;
   keepalive_timeout 5;

   location / {
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header Host $http_host;
       proxy_redirect off;
       if (!-f $request_filename) {
           proxy_pass http://hello_django_app_server;
           break;
       }
   }
}

Ele está utilizando Gunicorn para servir o Django.
Gunicorn:
#!/bin/bash

NAME="hello_app"                                  # Name of the application
DJANGODIR=/webapps/hello_django/hello             # Django project directory
SOCKFILE=/webapps/hello_django/run/gunicorn.sock  # we will communicte using this unix socket
USER=hello                                        # the user to run as
GROUP=webapps                                     # the group to run as
NUM_WORKERS=3                                     # how many worker processes should Gunicorn spawn
DJANGO_SETTINGS_MODULE=hello.settings             # which settings file should Django use
DJANGO_WSGI_MODULE=hello.wsgi                     # WSGI module name

echo "Starting $NAME as `whoami`"

# Activate the virtual environment
cd $DJANGODIR
source ../bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH

# Create the run directory if it doesn't exist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR

# Start your Django Unicorn
# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
exec ../bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
  --name $NAME \
  --workers $NUM_WORKERS \
  --user=$USER --group=$GROUP \
  --bind=unix:$SOCKFILE \
  --log-level=debug \
  --log-file=-
view rawgunicorn_start.bash

O meu projeto está funcionando normalmente (inclusive estou seguindo este site como referência: http://michal.karzynski.pl/blog/2013/06/09/django-nginx-gunicorn-virtualenv-supervisor/). Eu consigo enviar formulários internamente via POST sem problemas. Mas quando uso requests.post() não funciona, parece um problema do Nginx.
Estou precisando receber notificações do Amazon SNS, através de HTTP ele envia dados via POST e eu trato esses dados no meu servidor.
A minha instância EC2 está configurada tanto o inbound quando outbound para receber acesso de qualquer tipo (alltrafic), então não há problemas de acesso a instância.
Tudo indica que o problema está no Nginx ou ainda no Gunicorn, não sei.
Como resolver esse problema?
Answer: Após escrever detalhadamente a pergunta, consegui achar o problema. A URL do requests.post() tem que terminar com \, o fato de não estar terminando, está ocorrendo um redirecionamento para a mesma URL com barras no final, o que acaba perdendo os dados enviados via POST.
Após rodar o código gerou um erro 403 relacionado a permissão, que nada mais é do que a falta do csrf para o envio do POST, colocando o decorator @csrf_exempt (from django.views.decorators.csrf import csrf_exempt) na view resolveu o problema.


Efficient way to get all substrings from a string that contains special characters

Question: I have got a string like this:
    std::string input = "This* #is # #just# a *random ##string #*that#
may contain any# char*cters#";

I need to get all substrings that:
1) Between character '#'
AND
2) Contain character '*'
The result will be:
" a *random "
"*that"
" char*cters"

I do it like this:
std::vector<std::string> substrings;
boost::split(substrings, input, boost::is_any_of("#"));
for (int i = 0; i < substrings.size(); i++)
{
if (i != 0 // first and last substring is not between '#' (only from one side)
   && (i != substrings.size() - 1)
   && !substrings[i].empty()
   && substrings[i].find('*') != std::string::npos) // if contain '*' character
   {
      // Here I've got my result
   }
}

It works, but is there any efficient solutions to do this ?
Comment: If you want to do that with less code, a regex lib is what you need. If you want to do that with less cpu time, you should iterate the string with your own code to split.
Comment: In your code, if you start your loop at `1` and end at `substrings.size() - 1`, you don't need these 2 conditions in loop. And as empty string doesn't contains '*', you may also remove the `empty` condition.
Answer: You can use a regular expression "#([^#*]*[*][^#]*)#" to extract all such strings.
The expression describes the kind of substrings that you are looking for:

Start in a #
Has zero or more characters other than an asterisk,...
which is followed by at least one asterisk
which is followed by zero or more characters other than #
which is followed by # at the end.
Comment: Should it be `"#([^#*]*[*][^#*]*)#"` (for exactly 1 `'*'` and no `'#'` inside) ? or `"#([^#*]*[*][^#]*)#"` (for 1+ `'*'` and no `'#'` inside) ?
Comment: @Jarod42 Yes, you are absolutely right - my expression could grab strings with `#`s in it, which isn't what OP wants. Thanks for the correction!


Navegar scroll horizontal ao pressionar tab

Question: Estou utilizando o plugin datatables. Construí uma tabela onde as quatro primeiras colunas estão fixas e as outras (que serão geradas "dinamicamente") possuem input para digitação de quantidade.
A minha intenção é que quando o usuário pressionar tab para ir ao próximo input, o scroll horizontal acompanhe, atualmente (com exceção ao IE) o input ganha focus mas como o scroll não se movimenta, ele fica lá escondido no overflow.
Segue imagem de como está minha tabela

Como posso proceder para que o efeito desejado funcione (principalmente) no Chrome ?
Minha estrutura HTML:

                                Produto
                                Embalagem
                                Solicitado (QTD)
                                Digitado (QTD)
                                2a - 06/2015
                                1a - 07/2015
                                2a - 07/2015
                                1a - 08/2015
                                2a - 08/2015
                                1a - 09/2015
                                2a - 09/2015
                                1a - 10/2015
                                2a - 10/2015
                                1a - 11/2015
                                2a - 11/2015
                                1a - 12/2015
                                2a - 12/2015
                                1a - 01/2016
                                2a - 01/2016
                                1a - 02/2016
                                2a - 02/2016
                                1a - 03/2016
                                2a - 03/2016
                                1a - 04/2016
                                2a - 04/2016
                                1a - 05/2016
                                2a - 05/2016
                                1a - 06/2016
                                2a - 06/2016

Produto

Embalagem

Solicitado (QTD)

Digitado (QTD)

2a - 06/2015

1a - 07/2015

2a - 07/2015

1a - 08/2015

2a - 08/2015

1a - 09/2015

2a - 09/2015

1a - 10/2015

2a - 10/2015

1a - 11/2015

2a - 11/2015

1a - 12/2015

2a - 12/2015

1a - 01/2016

2a - 01/2016

1a - 02/2016

2a - 02/2016

1a - 03/2016

2a - 03/2016

1a - 04/2016

2a - 04/2016

1a - 05/2016

2a - 05/2016

1a - 06/2016

2a - 06/2016

2,4-D 806 12X1 L (DQDA.806.003)

                            12
                            12
                            12

                                <input class="data" style="height: 10px;" data-data="2015-6-28" data-embalagem="12" data-valor="8,5" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2015-7-15" data-valor="8,5" data-embalagem="12" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2015-7-28" data-embalagem="12" data-valor="8,5" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2015-8-15" data-valor="8,5" data-embalagem="12" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2015-8-28" data-embalagem="12" data-valor="8,5" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2015-9-15" data-valor="8,5" data-embalagem="12" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2015-9-28" data-embalagem="12" data-valor="8,5" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2015-10-15" data-valor="8,5" data-embalagem="12" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2015-10-28" data-embalagem="12" data-valor="8,5" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2015-11-15" data-valor="8,5" data-embalagem="12" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2015-11-28" data-embalagem="12" data-valor="8,5" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2015-12-15" data-valor="8,5" data-embalagem="12" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2015-12-28" data-embalagem="12" data-valor="8,5" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2016-1-15" data-embalagem="12" data-valor="8,5" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2016-1-28" data-embalagem="12" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2016-2-15" data-embalagem="12" data-valor="8,5" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2016-2-28" data-embalagem="12" data-valor="8,5" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2016-3-15" data-embalagem="12" data-valor="8,5" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2016-3-28" data-embalagem="12" data-valor="8,5" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2016-4-15" data-embalagem="12" data-valor="8,5" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2016-4-28" data-embalagem="12" data-valor="8,5" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2016-5-15" data-embalagem="12" data-valor="8,5" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2016-5-28" data-embalagem="12" data-valor="8,5" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2016-6-15" data-embalagem="12" data-valor="8,5" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                                <input class="data" style="height: 10px;" data-data="2016-6-28" data-embalagem="12" data-valor="8,5" data-itemid="198" data-pedido="6" data-produtoqtd="12" type="text">

                            Produto
                            Embalagem
                            Solicitado (QTD)
                            Digitado (QTD)

2,4-D 806 12X1 L (DQDA.806.003)

                                12
                                12
                                12

Mostrando de 1 a 1 de 1 registros

Comment: eu fiz um teste local e não consegui reproduzir o problema no Chrome, você pode criar um snippet ou fiddle?
Comment: Como você está fixando as colunas?
Comment: Boa noite Rafael, o problema no Chrome ocorre em que resolução de janela? Será que existe a possibilidade de você ter misturado dois javascripts, poderia auxilar?
Comment: Zoom 100% em janela maximizada em resolução 1366 x 768. Acho pouco provavel.
Comment: @GuilhermeNascimento No chrome o que ocorre é o seguinte, ele só da o scroll horizontal quando eu entro com algum valor no input. Por exemplo, estão visiveis os inputs de 1 a 5, quando dou tab pro 6 e digito algo, ele da scroll.. Assim por diante
Comment: @RafaelBarbosa a noite vou tentar corrigir isto.
Comment: @GuilhermeNascimento Aparentemente, ele só navega por inputs sem valores. Se o input tiver valor, esse funciona na lógica que eu passei acima. Da para visualizar isso pelo seu JsFiddle
Answer: Aproveitei a resposta do @Guilherme Nascimento e fiz algumas modificações.
Usando jquery 1.11.1, funcionou no IE 9.
Exemplo abaixo funciona para qualquer tipo de largura da coluna e funciona no final do scroll:

    <input type="text"/>
    <input type="text"/>
    <input type="text"/>
    <input type="text"/>
    <input type="text"/>
    <input type="text"/>
    <input type="text"/>
    <input type="text"/>
    <input type="text"/>

    <input type="text"/>
    <input type="text"/>
    <input type="text"/>
    <input type="text"/>
    <input type="text"/>
    <input type="text"/>
    <input type="text"/>
    <input type="text"/>
    <input type="text"/>

A ideia é você colocar id="my_table" na div que contém a tabela com scroll. Nesta tabela você pode adicionar células/linhas/colunas dinamicamente a vontade. O código vai funcionar.
Comment: Atualizei com a minha estrutura HTML que é gerada por conta da fixação de coluna do DataTables. Nessa estrutura eu ainda tenho o mesmo erro
Comment: Tá um pouco difícil de entender o seu código, pois não sei como você formatou a tabela. Porém sugiro você fazer o seguinte: adicione à classe `dataTables_scroll` esse parâmetro: `overflow-x: scroll;`. Isso pode influenciar na classe `dataTables_scrollHead`, então certifique que esta tenha `overflow-x: hidden;`. Feito isso, na `div` que você colocou `dataTables_scroll`, adicione esse id: `id="my_table"`. Use então o código javascript da minha resposta.
Comment: A ideia é você colocar `id="my_table"` na `div` que contém a tabela com scroll. Nesta tabela você pode adicionar células/linhas/colunas dinamicamente a vontade. O código vai funcionar.
Answer: Não sei ao qual versão do Internet Explorer, mas muitos problemas são causados devido ao QuircksMode, para ajudar a evitar problemas deste tipo recomendo que use está meta-tag:
<meta http-equiv="X-UA-Compatible" content="IE=Edge">

No entanto o problema pode ser com a datatables como você citou, eu não tenho a estrutura HTML do seu código (os inputs e classes usadas neles, então vou postar um exemplo genérico e você pode adapta-lo).
Primeiro acho que ao invés de overflow-x: hidden; você deveria usar overflow-y: hidden;, pois você quer um scroll horizontal e não vertical, estou certo? (apesar que o script que postei irá funcionar em ambos casos).

Como o problema só ocorre no InternetExplorer você pode usar if ($.browser.msie) { para evitar aplicar o efeito em outros navegadores.

$(function() {
        var tabela = $("#Tabela");
        var fields = $("input[type=text]", tabela);

        fields.focus(function () {
            var $this = $(this);

            var fieldX  = $this.offset().left;
            var tableX  = tabela.offset().left;
            var scrollX = tabela.scrollLeft();
            var tdWidth = Math.round($this.parent().width() / 2);

            setTimeout(function() {
                //Delay para previnir o scroll automatico do navegador atrapalhar o $.animate
                tabela.stop().animate({
                    "scrollLeft": fieldX - tableX + scrollX - tdWidth
                }, 200);
            }, 10);
        });
});
#Tabela {
    overflow: scroll;
    overflow-y: hidden;
    display: block;
    white-space: nowrap;
    border: 1px #ccc solid;
}

<meta http-equiv="X-UA-Compatible" content="IE=Edge">

                id
                Coluna 1
                Coluna 2
                Coluna 3
                Coluna 4
                Coluna 5
                Coluna 6
                Coluna 7
                Coluna 8
                Coluna 9
                Coluna 10

                1
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">

                1
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">

                1
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">
                <input type="text">

Problema com a tabela customizada
O seu problema aqui não é com a tabela, o problema é que você criou duas, uma é exibida 50% e fica sobreposta, e a outra (aonde se encontram os inputs) ocupa "100%", mas fica por de baixo da primeira citada. Ou seja ela funciona perfeitamente, o problema é que alguns inputs sempre vão ficar abaixo da tabela sobreposta. Então o problema não é com a tabela, mas sim com uma coisa especifica que você criou. Seu código possui inúmeros estilos inline além de vários itens que parecem não ser necessários, mas irei tentar reaproveitar o código, veja se funciona.
O elemento que parece usar o scroll é o dataTables_scrollBody então o seletor deve ser algo como .dataTables_scrollBody. Como o primeiro TD a possuir input na sua tabela é o quinto, então terá que usar este seletor td.itemEnviado:nth-child(5) input.data (altere se adicionar mais TDs). O código js deve ficar assim, ele irá levar o scroll da tabela de volta a esquerda:

Se quiser usar um efeito animado:

Exemplo no jsfiddle: http://jsfiddle.net/krph0dh0/embedded/
Comment: http://pt.stackoverflow.com/questions/72630/navegar-tab-input-com-valores
Answer: Como o scroll navega apenas em input sem valor, resolvi da seguinte forma:
 $('input').focus(function () {
    var val = "";
    var attr = $(this).attr('placeholder');
    if (typeof attr !== typeof undefined && attr !== false) {
       val = $(this).attr("placeholder")
    } else {
       val = $(this).val();
    }
    $(this).val('');
    $(this).attr("placeholder", val);
 });

  $('.data').blur(function () {
        $('.data').each(function () {
            var attr = $(this).attr('placeholder');
            if ($(this).val() == "") {
                if (typeof attr !== typeof undefined && attr !== false) {
                    $(this).val($(this).attr("placeholder"));
                } else {
                    $(this).val(0);
                }
            } else {
                $(this).attr('placeholder', $(this).val());
            }
        });
});

A lógica é até que simples. No focus atribuo um valor nulo para o input e armazeno o valor antigo em um placeholder.
No blur vejo se houve uma entrada de valor, caso sim, atribuo esse novo valor ao placeholder.
Assim o input estará vazio toda vez que pressionar tab
Além disso, utilizei uma das function que o Guilherme Nascimento passou. Apenas realizei uma pequena modificação.
$(function() {
    $("td:nth-child(5) input.data").focus(function() {
        $(".dataTables_scrollBody").animate({
              "scrollLeft": 0
        });
    });
});


Java Generate Random number {-1,0,1}

Question: I need a function that will return a random integer that can be only -1, 0, or 1.
Thanks?
Answer: As Apocalisp wrote, you could do something like:
import java.util.Random;

Random generator = new Random();
int randomIndex = generator.nextInt( 3 ) - 1;

Comment: Yes, it does.  I was hoping to edge out Justin with the javdoc, though.  Next time, I should just go for "First P0st!!!111!!@@One!!"
Comment: First post. Then edit it with pointless code and links to the JavaDoc (just in case anyone doesn't have their favourite JavaDoc location bookmarked). Then replace it with a paraphrase of the second person's correct answer.
Comment: Ha!  You beat me by seconds!  ;-)
Comment: Awesome! At least everyone else can be confident the code works since its the same one-liner :)
Comment: Oh I didn't notice you linked to the javadoc... :(. I voted for this guy cause he had the import statement, which I usually forget to do, causing me to waste 10 minutes trying to find the problem.
Comment: But I dont even think the import statement is needed here... w/e
Comment: Yeah, my two line solution was waaaaaay better because of the javadoc link....  ;-)  To be honest, I never ever think about import statements anymore.  Whatever IDE you're using (Netbeans or Eclipse at our office) will just import if / when necessary.
Answer: How about generating a random from 0 to 2 and subtracting 1?
Comment: Thought about submitting an Enterprise solution, but it's proprietary.
Comment: Why not generate a random number from 17 to 19 and subtract 18?
Comment: @Bombe, you've opened the door to a very dark place.  Random number from 0 to 1000 modulus 3 - 1?  ;-)
Answer: This should help:
Random random = new Random();
int value = random.nextInt(3) - 1;

Java Generate Random number {-1,0,1}


Solving $8a^2(a+b)=4ab(a+b)+b^3$ over the integers

Question: Solve in  $\ \mathbb{Z^2}$:
$$8a^2(a+b)=4ab(a+b)+b^3$$
Answer: true if both $a,b=0.$ Otherwise, take $a \neq 0$   and $x = \frac{b}{a}.$ Your equation asks for a rational root of
$$ x^3 + 4 x^2 - 4 x - 8 $$ but there are none.


Using Gradle with R project

Question: I am beginning work on a project that makes heavy use of R. I've used R in the past, but only in a casual mode, whereas I'm now interested in following a more rigid practice of test/source control/continuous integration. I'm hoping to use Gradle with this project if possible, but I can't find any evidence that it is possible to use Gradle with R. Is it possible to create an R project with Gradle, and if so, where can I find steps to help me get started?
Answer: There appears to be a third-party plugin (https://github.com/jamiefolson/gradle-plugin-r). Alternatively, if R provides some command-line tools or Ant tasks, you can call into them from Gradle.
Answer: We have been working on gradle-R-plugin. (link to source is here https://github.com/arekbee/gradle-R-plugin). We have used it for CI/CD with TeamCity. gradle-R-plugin is base on devtools R package. I am happy to help you with this plugin.

Using Gradle with R project


Splitting Text and Integer from values in a Drop Down List

Question: I have a Drop down list with values:
Dogs - £100
Cats - £30
etc
I am trying to split the string "Dogs" and the amount "£100" and store each one in a different fields in access database.
I know a way of doing it with IF statements but is there a command of doing it?
Answer: Try This:
<code>String [] str=drpdownList.SelectedItem.ToString().Split('-');
String str1=str[0].Trim();
String str2=str[1].Trim();
</code>


Pushwoosh - native Android - not receiving notifications

Question: I went through all steps in documentation. All permisions added to AndroidManifest.xml, GCM enabled for my application ID.
No errors or warnings in console:
<code>
03-09 18:34:50.701 27716-27897/.*****.****** I/Pushwoosh: [RequestManager] | Pushwoosh request:| Url: https://cp.pushwoosh.com/json/1.3/registerDevice| Payload: {"request":{"device_type":3,"jailbroken":1,"userId":"882480c50abde42e","android_package":".*****.*****","timezone":3600,"v":"220.127.116.117","app_version":"1.0","sounds":[],"device_model":"Samsung SM-G920F","device_name":"Phone","push_token":"fvalCSNQGro:APA91bHb7_phOm9NuBrTsAGg65-LeJy54d4346ujpuAF8j4kVJm2cNIoWf3MOGB2qUjiMzK573Xd1-yfUwr6mf4rnAzjAIm89WvYtZkvReK69q25OZas3mm1iQjh4Raan04Cl66mprEc","os_version":"5.1.1","language":"en","application":"A7FD7-0B3C0","hwid":"882480c50dade42e"}} Response: {"status_code":200,"status_message":"OK","response":null}x
03-09 18:34:50.701 27716-27897/.*****.****** D/Pushwoosh: [RequestManager] registerDevice response success
03-09 18:34:50.701 27716-27716/.*****.****** V/Pushwoosh: [RegistrationPrefs] Setting registered on server status as: true
03-09 18:34:50.711 27716-27716/**.*****.****** W/Pushwoosh: [DeviceRegistrar] Registered for pushes: fvalCSNQGro:APA91bHb7_phOm9NuBrTsAGg65-LeJy54d434453fruAF8j4kVJm2cNIoWf3MOGB2qUjiMzK573Xd1-yfUwr6mf4rnAzjAIm89WvYtZkvReK69q25OZfs3mm1iQjh4Raan04Cl66mprEc
</code>
I have all of my devices registered successfully
Do you have any ideas why I dont get any notifications ?
Answer: I've found a solution!
GCM was unauthorized because of wrong API key. I had to change it to Server Key at console.developers.google.com
Answer: What does push status says in the "Push history" page? That's the best place to see what is actually happens with pushes when you send them.
Comment: Are you on WiFi? Sometimes ports required for GCM are closed on the routers. Try to switch to 3G?
Comment: Also tried this. 3G and WiFi - no results.
Everything works just fine with my iOS application.
Comment: Another idea. Do you have Google Play Services updated on a device? Open Google+ to check (it will prompt if the services is out of date).
Comment: Thank you for your ideas.
Unfortunately still nothing... The weirdest thing is that even their sample app from Pushwoosh documentation doesn't work.
I test with 3 or 4 devices.


Getting "HttpServletRequest" in soapMessageContext - Axis Handler

Question: I am trying to get "HttpServletRequest" in an AxisHandler's "handleMessage" method.
My AxisHandler implements "SOAPHandler" as seen below code..
I need to get "HttpServletRequest" in "InBoundDirection", but it returns "null".
How can I get "HttpServletRequest" in "InBoundDirection" of SOAPHandler ?
Thank you..
<code>@Override
public boolean handleMessage(SOAPMessageContext soapMessageContext) {
    boolean direction = ((Boolean) soapMessageContext.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY)).booleanValue();
    if (direction) {
        System.out.println("direction = outbound");
    } else {
        System.out.println("direction = inbound");
        HttpServletRequest servletReq=(HttpServletRequest) soapMessageContext.get(MessageContext.SERVLET_REQUEST);
        // BECAUSE servletReq is null the following line returns a "nullPointerException"
        System.out.println(servletReq.getRemoteHost());
    }
    return true;
}
</code>
Answer: See this post jax ws getting client ip for a very good explanation. Looks like if one wants to have a generic handler (in my case to extract the client certificate) one needs to implement the same logic for both EE container hosted webservices as well as SE hosted containers.


PHP pedir confirmação antes de deletar

Question: Oi
Em um curso que estou fazendo a pessoa não ensinou como fazer para apagar um registro no bd primeiro pedir uma confirmação antes de deletar. Então eu fiz esse código.
<?php
session_start();
header('Content-Type: text/html; charset=utf-8');
include_once("../../controle/conexao.php");
include_once("../../controle/seguranca.php");
$id = $_GET['id'];

$consulta = "SELECT * FROM ordem_producao WHERE op_clientes = '$id'";
$resultado_consulta = mysqli_query($conn, $consulta);
$row = mysqli_fetch_assoc($resultado_consulta);

if(mysqli_affected_rows($conn) != 0){
        echo "<META HTTP-EQUIV=REFRESH CONTENT = '0;URL=../../paginas/layout/dashboard.php?link=12'>
            ";
    }else{
    }?>

Minha duvida agora como eu coloco a mensagem de deletar no else, e também o código DELETE FROM cadastro_clientes WHERE id='$id';
Obrigado
Comment: Você quer que o usuário confirme para deletar algo no banco de dados através do bloco do `else`?
Answer: Este tipo de validação, habitualmente é feita no lado cliente. Você pode fazê-la com JavaScript no evento onclick da tag do seu html, que chama seu método.
Ex.
Excluir

Comment: Raramente um usuário "normal" está com o JS desligado. Apenas complemento (mas fora da questão da pergunta!), é ideal incluir um `token`/`código` de segurança junto ao `id`, por exemplo: `deletar?id=1&token=123456789`. O tal código pode ser gerada de maneira pseudo-randômica, no servidor. Depois, quando o usuário confirmar, o servidor verifica se ambos os códigos coincidem (tanto o enviado pelo cliente, quanto o armazenado em session pelo servidor). Isso evita que alguém lhe envie um link (principalmente encurtado) para deletar algo. Porque se enviar `deletar?id=1` não haverá o token. ;)
Comment: E se o javascript, por algum motivo, estiver desativado no navegador?
Comment: Bom isso é muito incomum, visto que 99% das páginas é feita com JS, porém você pode fazer um método recursivo, que chama a mesma página com um novo parâmetro e colocar uma validação antes desse método de deletar. Ex.  if (isset($_GET['confirmado])){ // seu método de deletar}
Comment: Obrigado vou testar aqui.
Comment: @Inkeliz Boa dica, cara
Answer: Antes de tudo quero dizer que essa linha no bloco do else
</script>";

está errada e causaria um erro de interpretação no código. Você tinha que ter colocado a aspa antes do primeiro byte '<': "</script>", e de qualquer maneira causaria um erro de interpretação já que não há um statement que precisa de uma string (se fosse no JavaScript, seria diferente, "</script>" seria retornado no console, ou se fosse igual à "use strict" iria ao modo estrito, ou ignorado; edit: no PHP a string é ignorada). Use echo para jogar uma string no HTML.

Eu entendi que você quer exibir uma caixa de confirmação para deletar algo no banco de dados. Nesse exemplo vou mostrar a função confirm do JavaScript.
confirm é global, ou seja, é localizado no objeto window. Ao chamar essa função -_- a página é travada enquanto o usuário não confirma (não responde) a caixa de confirmação que foi aberta com a própria função confirm, e assim que for confirmada retorna true se a resposta do usuário foi "Sim", ou false se a resposta foi "Cancelar", ou algo do tipo. Então com essa função podemos fazer uma condição tipo if(confirm("Quer me responder?")) alert("Então você quer me responder"); else confirm(":(");, ou confirm("Quer me responder?") && alert("Uau! Você é incrível! :D Herói!").
O objetivo é que o usuário responda "sim" à caixa de confirmação e que algo seja removido de uma tabela do banco de dados. Você não pode fazer isso diretamente do JavaScript, por isso vai ter que usar AJAX, que vai executar o arquivo ao lado do servidor (o arquivo *.php). Vai ampliar muito a resposta se eu explicar sobre isso, mas deixo o link de uma pergunta respondida que vai te ajudar.
E outra coisa, não vejo sentido em usar PHP para construir a página HTML e executar JavaScript. Para responder sua pergunta, experimente colocar isso dentro do seu else.
echo '';

E o arquivo delete.php deveria ter um id especificado no URL -. -, na verdade existe o método POST além do GET. Não vou explicar muito isso porque a pergunta é um pouco ampla, mas vamos ver se compreende:
<?php

// se o id foi declarado no URL, e.g: *url*/?id=num
if(isset($_GET['id'])) {
    // pega e converte o id no url para número (caso vier como uma string, mas impossível de acontecer, eu creio)
    $id = intval($_GET['id']);

    // obs: isso é inseguro se você não
    //detectar o usuário que está deletando algo do db
    // remova algo do db usando $id
}

Comment: Muito obrigado pela explicação.
Comment: Duro que nestas aulas que aprendi o professor não utilizou ajax. usar ele agora mais vai me confundir do que me ajudar.
Comment: @Junior Entendo. AJAX é mais usado para não ter a necessidade de recarregar a página.
Answer: Sugestão de como fazer
if (mysqli_affected_rows($conn) != 0) {
        echo "<META HTTP-EQUIV=REFRESH CONTENT = '0;URL=../../paginas/layout/dashboard.php?link=12'>
            ";
}else{

        $sql = "DELETE FROM op_clientes WHERE id = '$id'";
        $executa = mysqli_query($conn, $sql);

    ?>

<?php
}
?>

nota: Me abstenho em comentar sobre a logística ou segurança e métodos técnicos. No entanto, recomendo estudar o modelo de negócios e o básico sobre lógica de programação e as ferramentas em uso. Analise primeiramente o business model, se realmente é bom o que está fazendo (ex: excluir cliente permanentemente)
Comment: Concordo com a "nota". Acredito que NUNCA deva deletar nada, se não para poupar espaço ou compactar (ou seja, armazenar de outra forma o mesmo dado), inclusive remover a permissão. O "ideal", para mim, é criar um dado para `Status`, ao menos booleano. Da forma que 1 seria um usuário ativo (padrão) e 0 um usuário/dado que é "excluído". Isso também pode ser melhor para backups e monitoramento e exclusões acidentais (ou afins). Isso é o que geralmente uso (não sendo booleano), deve haver outras soluções, até melhores. Mas, realmente o fato é excluir o dado diretamente é importante a ser notado.
Comment: Entendi, muito obrigado pela explicação
Answer: Utilizo a confirmação via javascript, mas nesse caso somente para confirmar a ação, não faz verificações. De qualquer forma é essencial para envitar ações acidentais.
onclick="return confirm('Tem certeza que deseja editar este registro?')"

PHP pedir confirmação antes de deletar


Characterization of the polynomial ring $R[x_1, ..., x_n]$

Question: Hungerford's theorem III.5.5 says:
Let $R$ and $S$ be commutative rings with identity and $\phi : R \rightarrow S$ a homomorphism of rings such that $\phi(1_R) = 1_S$. If $s_1, ..., s_n \in S$, then there is a unique homomorphism of rings $\bar{\phi} : R[x_1, ..., x_n \rightarrow S$ such that $\bar{\phi} | R = \phi$ and $\bar{\phi}(x_i) = s_i$ for $i = 1, 2, ..., n$. This property completely determines the polynomial ring $R[x_1, ..., x_n]$ up to isomorphism.
In the proof, he defines $\bar{\phi}$ by $\bar{\phi}(f) = \phi f(s_1, ..., s_n)$ where $\phi f(s_1, ..., s_n)$ is defined as follows:
We have $f = \displaystyle\sum_{i = 0}^{m} a_{i} x_{1}^{k_{i1}}...x_{n}^{k_{in}}$. Then we set $\phi f(s_1, ..., s_n) = \displaystyle\sum_{i = 0}^{m} \phi(a_{i}) s_{1}^{k_{i1}}...s_{n}^{k_{in}}$. Then we are supposed to verify that $\bar{\phi}$ is a morphism. I can prove that $\bar{\phi}(f + g) = \bar{\phi}(f) + \bar{\phi}(g)$. But the product is tougher. Apparently I need to use the binomial theorem, but I don't see how. Any hints?
Comment: No need for the binomial theorem - just a Cauchy product [http://en.wikipedia.org/wiki/Cauchy_product] will do.
Comment: I set $f = \sum_{i = 0}^{m} a_{i} x_{1}^{k_{i1}}...x_{n}^{k_{in}}$ and $g = \sum_{i = 0}^{m} b_{i} x_{1}^{k_{i1}}...x_{n}^{k_{in}}$ (we may WLOG choose them to be that way). I'm not sure how to write the product $fg$ in a way that each monomial appears only once, though.
Answer: Write $f = \sum_{i=1}^s f_i$ and $g = \sum_{j=1}^t g_j$ where
$$
f_i = a_ix_1^{k_{i1}}x_2^{k_{i2}}\ldots x_n^{k_{in}}
$$
$$
g_j = b_jx_1^{l_{j1}}x_2^{l_{j2}}\ldots x_n^{l_{jn}}
$$
Then by what you have already proved
$$
\overline{\phi}(fg) = \sum_{i,j}\overline{\phi}(f_i g_j)
$$
Hence, it suffices to prove that $\overline{\phi}(f_i g_j) = \overline{\phi}(f_i)\overline{\phi}(g_j)$. Now note that
$$
f_ig_j = a_ib_jx_1^{k_{i1}+l_{j1}}x_2^{k_{i2}+l_{j2}}\ldots x_n^{k_{in}+l_{jn}}
$$
$$
\Rightarrow \overline{\phi}(f_jg_j) = \phi(a_ib_j)s_1^{k_{i1}+l_{j1}}s_2^{k_{i2}+l_{j2}}\ldots s_n^{k_{in}+l_{jn}}
$$
And
$$
\overline{\phi}(f_i)\overline{\phi}(g_j) = \phi(a_i)s_1^{k_{i1}}s_2^{k_{i2}}\ldots s_n^{k_{in}}\phi(b_j)s_1^{l_{j1}}s_2^{l_{j2}}\ldots s_n^{l_{jn}}
$$
Now compare these two expressions and use the fact that $\phi$ is a ring homomorphism.
Comment: Your proof also shows that $R$ is commutative hypothesis not needed. Though $S$ must be commutative to "rearrange" elements of $S$ in $\bar{\phi }(f_i) \bar{\phi }(g_j)$ so that it is equal $\bar{\phi }(f_ig_j)$.
Answer: Cauchy product too is overkill. Use distributive property in $R[x_1,…,x_n]$,
$$\begin{align} fg &= \left( \sum_{i=1}^sf_i \right) \left( \sum_{j=1}^t g_j \right) \\ &= \sum_{i=1}^sf_i \left( \sum_{j=1}^t g_j \right) &&\text{Right distributive } \\ &= \sum_{i=1}^s\sum_{j=1}^tf_ig_j &&\text{Left distributive} \\ &= \sum_{(i,j)\in [s]\times [t]} f_ig_j
\end{align}$$
where $[s]=\{1,…,s\}$ and $[t]=\{1,…,t\}$. Thus you have polynomial $fg$ as finite sum of monomials such that coefficient and power of $x_i$ are in terms of that of $f$ and $g$. Now its easy to write $\bar{\varphi}(fg)=\varphi (fg)(s_1,…,s_n)$.


$modal.open(), problema com declaração do parâmetro "controller"

Question: Estou tentando abrir um modal através da view, pelo método showModal(), o problema é que recebo um erro referente a declaração do controller "editCrtl", o qual é muito estranho, pois já esta carregado no index e está perfeitamente criado. Alguém pode me ajudar?
Stacktrace:

Error: [ng:areq] http://errors.angularjs.org/1.4.3/ng/areq?p0=editCrtl&p1=not%20a%20function%2C%20got%20undefined

Códido do controller da view:
app.controller('listCtrl', function($scope, Crud, filterFilter, $modal) {

    $scope.veiculos = Crud.getList();

    $scope.currentPage = 1;
    $scope.totalItems = $scope.veiculos.length;
    // Itens por página
    $scope.entryLimit = 6;
    $scope.noOfPages = Math.ceil($scope.totalItems / $scope.entryLimit);

    $scope.$watch('search', function(newVal, oldVal) {
        $scope.filtered = filterFilter($scope.veiculos, newVal);
        $scope.totalItems = $scope.filtered.length;
        $scope.noOfPages = Math.ceil($scope.totalItems / $scope.entryLimit);
        $scope.currentPage = 1;
    }, true);

    $scope.remove = function(veiculo) {
        var index = $scope.veiculos.indexOf(veiculo);
        if (index != -1) {
            Crud.remove(index);
        }
    }

    $scope.showModal = function(veiculo) {
        var modalInstance = $modal.open({
            animation : true,
            templateUrl : './app/view/vehicle-register.html',
            controller : 'editCrtl',
            resolve : {
                veiculo : function() {
                    return veiculo;
                }
            }
        });

    };

});

Controller do Modal
app.controller('editCtrl', function($scope, $modalInstance, veiculo) {

});

Comment: na declaração do teu controller está escrito assim: `editCtrl` e na declaração do teu modal está assim: `editCrtl`
Comment: Complementando, no link do erro diz o seguinte: `Argument 'editCrtl' is not a function, got undefined` ou seja, `"editCrtl é um argumento indefinido`, com isso você conseguiria achar o problema  sem precisar elaborar a questão =D
Answer: Não está encontrando o controller "editCrtl", acredito que você tenha escrito errado o nome. Não seria "editCtrl"?


Automating exporting of a view

Question: I'm running a system where has a view with export functionality in order to export results in xls format.
Is there anyway I can automate it so every week it auto generates a report and email it.
I'm guessing I can use rules to do it but dont know how.
Thanks
Comment: Try to set a cron job by using [elysia_cron](https://www.drupal.org/project/elysia_cron)
Comment: thank for your quick reply @mchar . I can try installing the elysia_cron but what sort of commands/script do I need to use to export data from a view.
Comment: I'm not sure how to even configure rules to do this.
Comment: Are you able to install additional software to your server? E.g. mailx/mutt/mpack? And most importantly, are you interested in a *nix/terminal-based solution?
Comment: Another important question: Which contrib module are you using to generated the XLS in the first place?
Comment: @StefanosPetrakis I'm using views_data_export to export the results. I'm happy if I can schedule a job to download the results on server instead of emailing them.
Comment: I'm also aware that views_data_export supports Drush so now trying to find a way so I can use cron to execute a drush command in order to automate the download at a specific location within the server.
Comment: Yes, that's what I was going for. Still open: Can you install some additional software on your server like mail/mailx/mutt/mpack? Or, do you have one of them already available?
Comment: @StefanosPetrakis I've already got email working fine and can add any additional modules if need to.
Comment: Let us [continue this discussion in chat](http://chat.stackexchange.com/rooms/51446/discussion-between-stefanos-petrakis-and-ozyy).
Answer: If you are using the views_data_export module and you have command line access you can try the following:
cd [your_drupal_docroot]
drush views-data-export [view-name] [display-id] > [path-to-output-file]

You could then add this to cron as a one-liner, e.g. this would run every Monday at 5:59 AM:
59 5 * * 0 cd [absolute_path_to_drupal_docroot] && drush views-data-export [view-name] [display-id] > [path-to-output-file]

Automating exporting of a view


Dificuldade com web scraping

Question:

    25/06/2014 20:37
    25/06/2014

        BROOKFIELD INCORPORAÇÕES S.A.

        Disponibilização do Laudo de Avaliação da pretendida oferta pública para a aquisição das
        ações de emissão da Companhia em circulação no mercado

Utilizando a biblioteca BeautifulSoup eu consigo ler a seguinte página:
http://siteempresas.bovespa.com.br/consbov/ExibeFatosRelevantesCvm.asp?site=C
Estou com dificuldade para ler via python o número de protocolo do html acima '430489'. Este número será utilizado para baixar um pdf. Pretendo criar uma função que terá como argumento este número e que automaticamente baixará o pdf no meu mac.
Comment: Rodrigues, é uma pergunta antiga mas, alguma das respostas resolveu o problema?
Answer: Você pode fazer isso de diversas maneiras, como mencionado pelo mgibsonbr,
para extrair um pedaço de uma string o uso de expressões regulares é comumente utilizado para esse fim, tal como manipular a string.
Assumindo que tenhamos a variável conteudo que armazena o html tenha as seguintes informações:
conteudo = '''

    25/06/2014 20:37
    25/06/2014

        BROOKFIELD INCORPORAÇÕES S.A.

        Disponibilização do Laudo de Avaliação da pretendida oferta pública para a aquisição das
        ações de emissão da Companhia em circulação no mercado

'''

Manipulação da string
from BeautifulSoup import BeautifulSoup

def getProtocol(html):
   soup = BeautifulSoup(conteudo)
   href = unicode(soup.a['href'].partition('AbreArquivo')[2])

   numero = [int(i) for i in href if i.isnumeric()]
   return int(numero)

protocolo = getProtocol(conteudo)
# Fazer a requisição do PDF aqui

Acima utilizamos o método partition para dividir a string na primeira ocorrência do separador(no caso é AbreArquivo).
A string a qual queremos dividir vem do seguinte modo: Javascript:AbreArquivo('430489');. Ao usar partition('AbreArquivo')[2] teremos como resultado: ('430489');
É criado uma lista chamada numero que conterá apenas números, percorremos caractere por caractere e verificamos se é um número, se for, é adicionado na lista.
Expressões Regulares
Para extrair um número você pode usar a expressão \d+ ou [0-9]+ para capturar um ou mais números.
from BeautifulSoup import BeautifulSoup
import re

def getProtocol(html):
   soup = BeautifulSoup(html)
   href = soup.a['href']

   numero = re.findall(r'\d+', href)[0]
   return int(numero)

protocolo = getProtocol(conteudo)
# Fazer a requisição do PDF aqui

Vale ressaltar que, se o conteúdo a tratar vier num formato diferente você provavelmente terá que adaptar o modo de tratar a string ou a expressão.
Answer: Estou assumindo que você já conseguiu uma referência para o elemento  desejado, e consegue também extrair o conteúdo do atributo href (se estou enganado nessas suposições, acrescente mais detalhes na pergunta). O problema então se resume a extrair o número 430489 da string Javascript:AbreArquivo('430489');, certo?
Não existe solução generalizada para isso, uma vez que o href suportaria a princípio qualquer JavaScript válido. Entretanto, se você sabe que seu HTML virá sempre nesse formato, basta usar uma simples função de substring para extrair a parte desejada:
href = soup.tr.a['href']
arq_str = href[len("Javascript:AbreArquivo('") : -len("');")]
arq_int = int(arq_str)

Caso não esteja familiarizado com a operação de substring (sublista), x[inicio:fim] cria uma nova string/lista iniciando na posição inicio e terminando logo antes da posição fim. Se fim for negativo, ele começa a contar do final da string (i.e. len(x) - fim).
Fazendo inicio = len(prefixo) e fim = -len(sufixo) garante-se que somente o "meio" será selecionado, sem depender de "números mágicos". Aí é só converter para número, se aplicável.
Answer: Somente Beautifulsoup
from bs4 import Beautifulsoup

conteudo = '''

    25/06/2014 20:37
    25/06/2014

        BROOKFIELD INCORPORAÇÕES S.A.

        Disponibilização do Laudo de Avaliação da pretendida oferta pública para a aquisição das
        ações de emissão da Companhia em circulação no mercado

'''
soup = Beautifulsoup(conteudo, 'html.parser')
print(soup.select('a[href*="AbreArquivo"]')[0]['href'].split("'")[1])

#430489

Dificuldade com web scraping


HQL with parameters NoSuchMethodError

Question: I am sure I am overlooking something obvious
the following static query works fine
hqlQuery = "select user from User as user where user.id = 'userid' ";

but when I parametrize the query
hqlQuery = "select user from User as user where user.id = :me ";
Query query = session.createQuery(hqlQuery);

I get a nasty stack dump from building the query.
What am I overlooking?
Exception in thread "main" java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
at org.hibernate.hql.ast.HqlSqlWalker.generateNamedParameter(HqlSqlWalker.java:940)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.parameter(HqlSqlBaseWalker.java:4997)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1413)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4471)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3947)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2047)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:831)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:617)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:244)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:254)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:185)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1770)

Answer: Problem here is there is a conflict between the two ANT jar files(namely: antlr-2.7.6.jar from Hibernate Jar library & antlr-2.7.2 from struts-1.3) in your project. This appears to be a peculiar problem with Struts-1.3 & Hibernate applications.
Please remove antlr-2.7.2.jar from your project(/WEB-INF/lib folder)& it should work fine.. Let me know if it works..
Comment: The project changed direction, and the question is now moot (to me). I am using struts 1.2. source for bad jar could be from Weblogic Server 9.x
Answer: Looks like you mixed incompatible versions of Hibernate jars (probably ANTLR jar has a wrong version).
Answer: You can this:
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts-core</artifactId>
    <version>1.3.10</version>

    <exclusions>
        <exclusion>
            <groupId>antlr</groupId>
            <artifactId>antlr</artifactId>
        </exclusion>
    </exclusions>
</dependency>

Comment: Your answer would be considerably improved if you could explain what's happening and why.
Answer: Try add this dependency in your pom.xml:
    <dependency>
        <groupId>antlr</groupId>
        <artifactId>antlr</artifactId>
        <version>2.7.7</version>
    </dependency>

HQL with parameters NoSuchMethodError


CSS - Pyramid type of Text -

Question: Question:  CSS. How do you get a Pyramid style of your Text using CSS? I mean not -text-center- Look a the Letters. Each Row has different padding.

I know using Padding left and Right You can get this :

padding-left: 30%;
padding-right: 30%;

Answer: Do you mean
text-align: center;
p {
  text-align: center;
}

text is text-align: left; by default.
Here is a jsFiddle example: https://jsfiddle.net/sheriffderek/x58nejLL/
The rows do not have different padding. - it may appear that way.
Comment: No. I mean not center. Look at the letters. The style isn't determined by the length of words.. its using different padding for each row.
Comment: I didn't downvote you. But I will - not spend any more time with you. : )
Comment: @Nancy Nope. I did not. If I though your question was not valuable - I would vote it down and I would not add an answer. As you can see, I spent time trying to help you instead. There are many many many people looking at these posts and downvoting or upvoting them... not just the people here trying to help you. If you could shift your attitude a bit, I think you would be much more successful in your journey to learn web development. If you'd ever like to get an overview: https://www.codementor.io/sheriffderek
Answer: This is the problem that css shapes was being designed to solve. Unfortunately, we are a long way from having good implementations in browsers right now. As far as I know, the only approach is the hacky one of preceding the text with a stack of left and right floated elements.
Like this:

article { line-height:20px; width:400px;  text-align:center; }
article > p { margin:0; }
article > div::before { float:left; clear:left; }
article > div::after { float:right; clear:right; }
article > div::before, article > div::after { content:'\A0'; }
article > div:nth-of-type(1)::before, article > div:nth-of-type(1)::after {
  width:55px;
}
article > div:nth-of-type(2)::before, article > div:nth-of-type(2)::after {
  width:15px;
}
article > div:nth-of-type(3)::before, article > div:nth-of-type(3)::after {
  width:30px;
}

Mark Zuckerberg likes his privacy, but he's in an increasingly public battle with a would-be neighbor in Palo Alto, Calif., that threatens to expose details of his personal life and conduct.

Answer: If it's a static string, you could use  to break it down your self into proper lengths with a little bit of trial and error. You could even try viewport units to scale the text uniformly with screen size.

p {
  text-align: center;
}

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
 eiusmodtempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation
ullamco laborisnisiut aliquip ex
ea commodo consequat.

If the text is dynamic, you can run it through a loop and insert
 after counting character

CSS - Pyramid type of Text -


How do you theme the node edit page?

Question: What filename do you use to theme the node edit page in Drupal 7?
Comment: I think this will help. It explains both the module and template.php solution: https://drupal.org/node/1092122
Answer: If you are asking about theme()ing the page on which the node edit form is displayed, you would use page--node--edit.tpl.php.
More information on Drupal 7 Template Suggestions can be found here.

How do you theme the node edit page?


Does NFSv3 respect ZFS ACL's?

Question: NFSv3 of course doesn't support ZFS ACL's, but what will happen if I have the following setup?:
+-----------------------------------------+            +-------------+
|           FreeBSD ZFS serv1             |    NFSv3   | Linux serv2 |
| user1:      read/write to /zfs/project1 | <--------- | user1       |
| user2: deny read/write to /zfs/project1 |            | user2       |
+-----------------------------------------+            +-------------+

ZFS ACL's have been set on serv1 and serv2 mounts over NFSv3.
Question
I assume uers1 will be able to read/write as that is what NFSv3 world normally do.
But will user2 be denied?
Comment: I'd try it and see. Easy to test.
Answer: Ben Rockwood (solaris guru) blogged about this in greater detail:  NFS ZFS ACL's.  The part that pertains to your question is a few sections down.
In short, it won't work.  You need to upgrade to NFSv4 (eh), or use POSIX ACL's on a different FS (boo!).
I say "eh" about NFSv4 b/c I tried to figure it out a few times & failed.  It seems to require a very homogenous environment centered around LDAP & Kerberos, which is actually great from a security standpoint, but a bummer if you just want to test stuff & don't have all those things.  Hopefully you'll have better luck.
Comment: `user2` will be denied, possibly even `user1`, depending on what the POSIX permissions are.  All `serv2` will see are the POSIX permissions; it will not see the ZFS ACL's at all.
Comment: what doesn't work? I know I can't manage ACL's over NFSv3, but the permissions have already been set on the server. Will `user2` be denied or given access?
Comment: I *think* that blog post is now here: [Solaris ACL's Today](http://cuddletech.com/?p=459).  (The blog was redesigned at some point and the old URLs don't appear to have been preserved.)

Does NFSv3 respect ZFS ACL's?


Avartan in Western music score

Question: What is the term closest to avartan of Indian classical music in Western music score? Is it a phrase, or is it a bar? Or is there another term which denotes the cyclic ticking of musical time? How is it notated in the staff notation?
An avartan refers to one complete cycle of musical time in Indian classical music, just like we have a cycle of 60 seconds to measure one complete cycle of a minute. A percussionist plays the avartan again and again to keep track of the time, while singer moves through the octaves to merge back into the cycle at the first beat.
For more clarity, an avartan is divided into sections called vibhags which detail the rhythmic structure.
Perhaps it is similar to 3/4 or 4/4 rhythms, but I am not sure.
Comment: I think, [this article](https://chandrakantha.com/articles/indian_music/avartan.html) answers your question reasonably well.
Comment: Hi, can you explain in simple terms what is a meter?
Comment: @sinhayash, with regard to the article provided, a cycle is a collection of bars (also called measures) that form a single, repeatable unit. It is different compared to a melody in that a cycle has a number of voices being repeated as opposed to a single voice (instrument) being repeated. Basically, it is a collection of phrases (where a phrase is a collection of bars) that form together a single logical unit.
Comment: Hi, it would be helpful if you were to provide a definition of "avartan" and how it relates to the meter of a song.
Comment: @Pyromonk, what is a Western cycle? Can you please elaborate? https://en.wikipedia.org/wiki/Cycle_(music) says there are several meanings.
Comment: @Pyromonk can you please also tell how a cycle is notated in a score in staff notation?
Comment: @sinhayash, metre is the rhythmical frame of a musical piece. 4/4 and 8/8 are examples of common metres. It denotes which beats receive more accent (depends on musical genres, some utilise off-beats more than others, such as ska and reggae).
Comment: @Pyromonk Is it inviolate, as the article mentions? https://www.britannica.com/art/tala says metric cycle has no western counterpart
Comment: @Pyromonk Can you please differentiate the usage of bar, phrase and cycle? Similarly, in Indian classical music, there is vibhag, avartan and theka
Answer: How about if you compared it to a "12-bar blues"?
This is a common form with a fixed pattern [though with a billion variations]. It was the simple building block upon which all "Rock & Roll" was constructed, though it has many more forms that that.
4 bars of root chord, 2 bars of the 4th, 2 bars of the root
1 bar of the 5th, one bar of the 4th, 1 bar of the root, [1 bar of the 5th or stay on the root, optional].
Because it's so ubiquitous in 20th century Western music, it of course has more variations than could ever be listed.
If you remove all except the root & 5th in each chord [& probably even remove the 5th & just play the sequence of root notes], all Western musicians would still recognise it & be able to play along.
Played by a band, everybody knows the structure - you don't change that ever.
Though you probably never actually play the same thing twice, only the form remains the same, the contents change with every iteration.
Once as an intro, then once as a vocal passage, then a solo, then some more vocals, then someone else gets a solo… & round & round it goes until someone decides to call an end.
I've seen drunken open mic nights where this can go round for an hour, with people getting on & off stage as they decide they need another beer or another chance to shine.
Let's call it … informal.
So, 12 bars of an immutable chord sequence.
The bar is the bit that you count, "1, 2, 3, 4"
The cycle is each section of 12 bars.
A phrase is harder to define - maybe, any melodic structure played by any one player, that could be done in one breath [even if the instrument doesn't breathe].
I'll let the man himself close the show
"Well, it's a one for the money…"
Comment: So what is it's staff notation?
Comment: I don't understand the question. It would depend entirely on what the song was. There's no "12-bar blues" notation specifically.
Comment: For example, is there a symbol that denotes start of a cycle?
Comment: No, because we don't have 'cycles' in that way.
Answer: I don't know if there is an exact equivalent to the concept of aavartan in Western music, or what it would be called, but in practice, I make use of time signatures in a way that each measure functions as a single aavartan.
For instance, if I am notating a composition in Teentaal, I will use the time signature 16/4, where each matra is a quarter note. Similarly, for Ektaal, I use the time signature 12/4.
The denominator does not have to be 4, of course. I use it for convenience so that I can notate longer-duration syllables as half notes or whole notes, and shorter-duration syllables as eighth notes, etc., easily.
Here is an explanation of how I notate bandishes on the staff. I am not an expert at this by any means, but please feel free to make use of some of my ideas if you like.
Answer: TL;DR
"Avartan" is a special case of "Form," which is an abstraction without direct notational equivalent.

Elaboration
@Pyromonk, in referencing this article on Avartan, and @Tetsujin and @Raagjazz in their answers, all address the same fundamental ideas, which I'll try to elaborate further here.
"Form"
In the Western-music analogies to avartan made so far, "12-bar blues" comes up several times. "12-bar blues" is an example of what is more generally termed "Form."1 The "Form" of a piece of music is an abstract description of that piece's melodic, harmonic, and time structures, something like the floor plan of a building. Being an abstraction, however, "Form" which does not have a direct notational equivalent.
Form and Avartan
The particular form called the 12-bar blues, in traditional performance, is treated cyclically.2 Such a performance would begin with a standard melody based on the underlying 12-bar blues form, followed by a variety of improvisations over that same form, and ending with a restatement of the original melody. Each time through the form would be analogous to avartan.
A difference
A significant difference is in the conception of time. The time sub-units (called "bars" or "measures") of a 12-bar blues are always of identical duration -- comprising the same number of equally-timed beats.3 The "avartan" of a 12-bar blues "in four" would be a total of 48 equal-in-duration beats, divided into 12 groups ("bars") of 4. Similarly, a 12-bar blues "in three", would contain a total of 36 beats, divided into 12 measures of 3 beats each. The time-signatures (3/4, 4/4) you mentioned specify the beat-duration of each measure.
EDIT: Addendum
One indication of cycles in staff notation is the repeat sign.
X:0
T:Repeat Sign
K:none
M:none
|: y y y :|

Typically the music notated between the repeat signs would be repeated one time (i.e., played a total of twice), but can be indicated for more or even indefinite repetions.
X:0
T:Specified number of repetitions
K:none
M:none
|: y y "repeat 3 times"y :|

X:0
T:Unspecified number of repetitions
K:none
M:none
|: "repeat until cue"y y y :|

Based on your question, you might find Melharmony of interest as an intersection between Indian and European musical concepts. Melharmony, developed initially by N. Ravikiran and further elaborated by Robert Morris, interprets harmony and counterpoint from the perspective of melodic development as found in Indian music (among other cultures).
Wikipedia has some basic information, and my own introduction came from this article in Perspectives of New Music.4

1 "12-bar blues" is itself a group of related forms that share certain common traits. But for our purposes, I'm going to treat it as a single, archetypal form.
2 Forms need not be cyclical. For example, a "fantasia" is a piece specifically without strict adherence to a canonical structure.
3 In theory, a 12-bar blues could be performed with measures of variable durations, adhering only to an agreed upon total number of beats in each cycle. However, this would be a rare exception historically speaking.
A recording that approaches this idea is Wynton Marsalis's interpretation of "Autumn Leaves" from the album "Marsalis Standard Time, Vol. 1" As composed, the piece begins with eight measure of four beats each. However, in this recording, the measure itself is the basic unit of time. The first measure is expressed with one beat; the second with two beats; the third with three; and so forth until reaching a eight-beat eighth measure. This process in then reversed in the second eight measures.
4 Chitravina N. Ravikiran. "Robert Morris and the Concept of Melharmony." Perspectives of New Music 52, no. 2 (2014): 154-61. Accessed August 24, 2020. doi:10.7757/persnewmusi.52.2.0154.
Answer: The only 'cyclical' equivalent I can think of would be jazz lead sheets where the 'theme' is presented with chords and repeated with variations on the pattern listed.
Fundamentally the issue here is that transcription of Indian music is not really standardised and it's still a relatively unusual teaching method to learn from written music rather than by ear from a teacher or Ustad.
Ultimately most western music is not cyclical in the way that Indian classical music is and most forms of western music do not allow a theme to enter within a set timeframe and to be 'revised' by the performer through improvisation.
Given to play a full raga you would need to start by notating the alap- I'm not sure what you'd write down to cover that!

Avartan in Western music score


Se o usuário digitar tal número no console fará uma ação

Question: Como faz para quando o usuário digitar tal número no Console fará uma ação?
Por exemplo:
Console.WriteLine("Escreva 1 para acontecer algo, 2 para acontecer outra coisa");

No caso não preciso do que vai acontecer pois já tenho código, só estou com a dúvida de como fazer para verificar se o usuário digito 1 ou 2, e dar uma ação para determinado número
log.WarnFormat("1 ou 2");
string escreveu = Console.ReadLine();
var numero = 1;
if (numero == 1) cupons();
if (numero == 2) cuponsusuario();

Comment: Você pode usar estruturas condicionais... dê uma olhada neste post
https://pt.stackoverflow.com/a/41504/11404
Comment: Okay tentei fazer mas não obtive sucesso, não consigo fazer ele verificar se é 1 ou 2
Comment: certo, coloque o trecho do código que você está obtendo a entrado do usuário e a forma como está fazendo para validar os dados de entrada
Comment: log.WarnFormat("1 ou 2");
                                string escreveu = Console.ReadLine();
                                var numero = 1;
                                if (numero == 1) cupons();
                                if (numero == 2) cuponsusuario();
Answer: Você precisa ler a entrada usando Console.ReadLine(). O Console.ReadLine sempre retorna uma string. Então, se quiseres fazer alguma comparação numérica terá que converter para inteiro antes.
Por exemplo:
Console.WriteLine("Escreva 1 para acontecer algo, 2 para acontecer outra coisa");
var strEntrada = Console.ReadLine();

int input;
if(int.TryParse(strEntrada, out input))
{
    switch(input)
    {
        case 1:
            FazerAlgo();
            break;
        case 2:
            FazerOutraCoisa();
            break;
    }
}
else
{
    Console.WriteLine("Valor inválido");
}


A simple question on inverse trigonometry

Question:
$$ \arctan \frac{2x+1}{ \sqrt{3}} + \arctan \frac{2y+1}{ \sqrt{3}} = ??$$

Isnt the formula $\arctan x + \arctan y = \arctan \frac{x+y}{1-xy}$ ?
My answer doesn't match with the textbook's
Thank you in advance
Comment: Sorry, the 2nd one was y. thanks edit made
Answer: The formula you wrote is correct. Maybe calculation mistakes?
The answer is ugly.
$$\arctan\frac{\sqrt 3(x+y+1)}{-x-y-2xy+1}.$$
Comment: k mine is correct. my text got no sqrt 3 it says $\arctan \frac{x+y+1}{1-x-y-2xy}$
Comment: thanks for the quick answer
Comment: @chndn. If you textbook does got give you mathlove's answer, then your textbook is wrong !
Answer: Add the following for practice in simplification and confirm text-book print error:
$ arctan  ( 1 + x + y +  \sqrt{1 - 2 x + x^2 - 2 y - 6 x y + y^2})/2 $
$ arctan ( 1 + x + y -  \sqrt{1 - 2 x + x^2 - 2 y - 6 x y + y^2})/2 $


How to avoid "..." when convert a pandas matrix to string?

Question: For example,
when the matrix is too wide, is there a way to suppress the "..." in the string format of pandas matrix to show all the detail of each column.
          adj_close_reg_1   ...         adj_low_reg_5
count     23954.000000      ...         23954.000000
mean          0.999850      ...             0.999501
std           0.019801      ...             0.043667

Answer: You can play with set_option
import pandas as pd
pd.set_option('display.height', 1000)
pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)

OR use:
pd.set_option('display.expand_frame_repr', False)


How to derive a distance function based on multiple variables for cluster analysis?

Question: I am not a statistician, so please excuse my lack of statistics knowledge/terminology.
I have bunch of network nodes that I want to run cluster analysis on and identify clusters. So as far as I understand, I can follow the following steps to run a hierarchical agglomerative analysis (HAC):

Identify variables
Define a distance function
Run the algorithm to join closer clusters and create one big cluster
Cut the dendrogram tree at the height that makes meaningful clusters based on context

My question is related to the second step even though it is not yet clear for me how I am going to do the last step.
The data I want to analyse is bunch of computer network nodes which are down (not responding). I have the following information for each network node:

location (longitude, latitude)
time node went down
network provider

These are the most relevant information I believe I have to take into consideration for my clustering. Basically I want to cluster the nodes that went down probably because of the same reason in a region.
For example if bunch of nodes went down at about the same time and physically they are close to each other and they have the same provider, so probably they fall into the same cluster.
Now the question is how do I derive my distance function and include all these variables in it such that it would make sense? In other words what is the mechanism to derive a distance function based on multiple variables?
Also as you notice the variables are of different types. So, in the distance function should I take care of this by considering Gower's coefficient of similarity? How?
Any examples or suggestion regarding whether I am in the right direction or not can be very helpful too.
Answer: Latitude and longitude are scale variables. Time is scale, too (I hope it is linear, not cyclic). Provider is nominal variable. I see two options:

Use Two-step cluster analysis. This is the method of choice if you have many (thousands) of objects (nodes) to cluster. This method has a nice option to detect outliers automatically; aside from this it is quite coarse method.
Use Hierarchical cluster analysis basing it on Gower coefficient (look here for links where you could compute it). This clustering is appropriate if the number of objects is, say, up to 500. You should choose among several agglomeration methods. With Gower coefficient, since it is not euclidean/metric, only average, single, complete methods should be considered consistent (but not Ward or centroid or median). You probably choose between average and complete (or try both), for single produces too oblong clusters.

There exist, of course, other clustering methods potentially apropriate (for example, a modification of K-Means that can take nominal variables), but I haven't use them, so can't recommend.
A good way to decide on the proper number of clusters is to use some internal clustering criterion, such as Silhouette statistic, cophenetic correlation, BIC, etc. (if you use SPSS, find macros to compute them on my web-page). In clustering, you produce and save a range of cluster solutions (say, from 20-cluster solution to 2-cluster solution) which are variables of cluster membership, and then check by one or more clustering criterions which of the solutions represent the most well-separated clusters - ideal solution is when density inside clusters is high and between them is low.
Comment: Tnx. But I am not using SPSS or any stat. software. I am going to choose the suitable method and implement the algorithm in a programming language. The question is how you write the distance function when you have multiple variables of different types? Like how do  you implement Gower's coefficient in your distance function?
Comment: You want to know formulas how Gower is computed? By my link above there you find some links to papers in english that provide it. The description for my macro also give it, but it's in russian.
Comment: On a second thought, I may just use R to take care of the clustering (to avoid reinventing the wheel.) I posted a new question [http://gis.stackexchange.com/questions/17638/how-to-cluster-spatial-data-in-r] which is more about how the spatial cluster analysis can be done in R. Do you know about useful packages in R for spatial cluster analysis? tnx.
Answer: For the geographic distances, it will make sense to combine latitude and longitude into a single quantity.  A formula from this page should help:
http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/TSPFAQ.html
where code is given to compute distance along the surface of the Earth, rounded to the nearest kilometer.  You will probably want to leave out the rounding.
Then combine distance with the other quantities.


how to deal with possible special characters when iterating files with for command in windows *.cmd file?

Question: the code is:
setlocal EnableDelayedExpansion
FOR /f "usebackq tokens=*" %%X in (`dir /a-d /s /b "!search_path!" 2^>^&1`) DO @(
  set file_path=%%X
  rem do other stuff
)

Delayed expansion is on because the source path might have special characters like backticks percentages exclamation and ^ escape sing. All these characters are allowed in windows paths and I don't know if and where they will be present.
The problem arise what to do with double percent parameter %%X, how to pass it to another variable without expansion. If DE is on the exclamation sings will be treated as variables with and that would result with a range of weird errors. The same thing is if I disable DE - the same situation, but this time with percentages.
Any idea how to make these lines safe for every possible allowed path that can be found in windows system with no matter how weird characters ?
The problem boils to how to safe pass data from double percent for parameter into normal %variable% so the data can safe passed through delayed expansion from that moment.
Comment: "Windows" "CMD" (as you tagged your question) doesn't have a `grep` command, does it?  I'm pretty sure I provided a viable solution to your question.
Comment: the solution below works, no?
Comment: Well I have another metod with grep where grep changes particular characters like `!` and `^` to `!x!` and `!e!`. And before I have set local variables, so the error works against itself.
Comment: Ok , you're right in case of using only wha'ts provided in CMD. And I made mistake above, it was not grep but sed, particulary ssed (supersed) mod for windows.
Answer: I would try to adapt FOR /R to your needs, which will solve some of your escape efforts.  You can check the format/match of the file listing in your loop vs. in the dir.
FOR /R will traverse your directory tree (which you're doing anyway) and return the files that match the pattern you give.
Quick example to list all files of type TXT in a directory and it's sub-directories goes like this:
UPDATED:
This prints the contents of two files in my directory that have exclamation points in them:
@echo off
for /r %%i in (ex*!*.txt) do (
   type %%~i
)

Note the absense of delayed variable expansion.  Add'l variable references are found at the bottom of the for /? listing.
Comment: @rsk82, no, I'm not seeing the problem on my machine.  `For /r` is designed to work like that.  I just created a file named `%folder%`, and it printed just fine.
Comment: It won't solve how to safe pass data from `for` parameter into normal `%variable%`. There is the real problem.
Comment: Can you provide a sample `set` command that's not working for you?
Comment: a normal set command, that is `set file_path=%%X` isn't working when path contains `!`, the same is with percentages if DE is off, and `call set` isn't working with for double-percent parameters, this parameter always is expanded and processed before putting it into command, doubling `%` or putting percent sign into variable like `%%%%X` doesn't work.
Comment: to your updated examle: ok, but what if path contains `%` character itself ? a folder might be named `%folder%` ... see the problem ?
Comment: You may need to wrap the file name in quotes in case of spaces in the path/file, or you could just use the `%%~si` to limit it to short file names.


Calculating quantiles for chi squared distribution

Question: For chi squared distribution, how would I find quantiles for the following three cases:
A) $P(X^2> X^2_{\alpha})=0.01$ when $v = 21$
B) $P(X^2 < X^2_{\alpha})=0.95$ when $v =6$
C) $P(X^2_{\alpha} < X^2 <23.209) = 0.015$ when $v = 10$
Here $X^2_{\alpha}$ is the $\alpha$-quantile of the $\chi^2_{v}$ distribution.
Comment: Is $X^2_\alpha$ meant to be a quantile of the chi-squared distribution?
Comment: @Rob Hyndman yes that is what it is mean to be
Answer: By hand, you need to refer to a tabulated distribution of the $\chi^2$, which should be found easily on the web (e.g., this one). Let x denotes the quantile of interest, and v the degrees of freedom of the chi-square distribution.
You just have to know that the total area under the curve (i.e., the density) equals 1 (this will help you to work through the third case), and that such Tables generally gives P(X < x) = p, for a certain v. Knowing x (resp. p), you can find the approximated value of p (resp. x). In the aforementioned Table, the first cell reads: P(X < 1.32) = 0.25, for a 1-df chi-square.
If you have R, the qchisq() function gives you the requested quantiles (look at the on-line help to be sure of what is returned, esp. the lower.tail argument). For the preceding example, we would use qchisq(0.25, 1, lower.tail=FALSE).
It is always a good idea to draw the corresponding density curve, as illustrated below. Note that p3 is also 1-P(X < q2).


A multivariable non-linear recurrence relation

Question: The question comes from an interview problem that reads as follows:

There is a bag with $w$ white balls and $r$ red balls. You iteratively
  extract one ball per time from the bag until only one is left. What is
  the probability that the last ball is red?

How to solve the problem above?
My approach is to write down a recurrence relation:
$$p(w,r) := \mathbb{P}(\text{last ball is red }| \;w \text{  white balls and } r \text{ red balls} ),$$
then
$$p(r,w) = \frac{r}{r+w}\,p(r-1, w) + \frac{w}{r+w}\,p(r, w-1)$$
with initial conditions
$$p(r,0) = 1, \qquad p(0,w) = 0.$$
Looking at a few examples one comes up with and verifies that
$$p(r,1) = \frac{r}{r+1}.$$
To solve the general case I considered the generating function
$$G(x,y) := \sum_r \sum_w p(r,w) x^r y^w,$$
but, since the recurrence relation is non-linear, it is not obvious to me how to find a functional equation for it.
On a side note: In the link it is claimed that the solution is $p(r,w) = \frac{r}{r+w}$; but this does not satisfy the recurrence relation and seems to be wrong.
Comment: Are you sure $p(r,w)=\frac{r}{r+w}$ does not satisfy the recurrence?
Answer: Imagine the balls are distinct (numbered) and we order them according to the extraction order.
Then the number of total arrangements are $(w+r)!$ and the successfull ones are $ r  (r+w-1)!$
Because all arrangements are equiprobable the probability of success is then
$$ \frac{r  (r+w-1)!}{(w+r)!}=\frac{r}{w+r}$$
More simply: by symmetry, the probability of the last ball being red is the same of the first ball being red. Which is $\frac{r}{w+r}$
Your recursion is ok, and the solution above satisfies it.
Comment: Thanks! I'm a little embarassed for my wrong computation...


Gerar Classe a Partir XSD - CTE para Webservice SEFAZ

Question: Referente a geração de classes NFE e CTE a partir do XSD para utilização nos Webservices do SEFAZ.
Tenho tido alguns problemas de ambiguidade no nome das classes geradas.
Utilizei a ferramenta do Visual Studio Tools para gerar a classe a partir do XSD.
No entanto quando importo uma segunda .cs gerada para a solution ( mesmo que em projeto diferente ) ele acusa diversas ambiguidades entre as classes.
Como posso corrigir isso sem afetar o schema final na geração do xml?
Comment: Esta linha de comando pode ser usada para gerar as Classes, tendo os Schemas da NF-e: Veja https://pt.stackoverflow.com/a/218780/5704
Answer: Se o xsd.exe está gerando classes cujo nomes estão em conflito com outras classes do seu projeto, você pode especificar um namespace diferente quando chamá-la:
xsd.exe /namespace:Meu.Novo.Namespace <outros parametros>

Um projeto pode ter classes com o mesmo nome, contanto que estejam em namespaces diferentes.
Comment: Obrigado @carlosfigueira consegui resolver facilmente com esse comando era isso mesmo o problema.


Let $Y ∼ U[0, 1]$, and let $X_n = Y^n$. Prove that $X_n\to 0$ in probability.

Question: Let $Y ∼ U[0, 1]$, and let $X_n = Y^n$. Prove that $X_n\to 0$ in probability.
I guess I need to use $\lim_{n\to\infty} P(|X_n − Y| ≥ \epsilon) = 0.
$
Comment: What is $Y_n$? You only defined $Y$...
Comment: Sorry it should be Xn = Y^n
Comment: Did you try calculating $P(|X_n-Y|\geq \epsilon)$?
Comment: Please note that the body of the question should contain the question itself. You should also explain some context, what your approach was so it is easier for people to understand what part of the question you have problems with. Also, your question should be formatted in MathJax, see here for a tutorial https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference
Answer: Since $0<Y<1$ almost surely we have $X_n=Y^{n} \to 0$ almost surely. Convergence with probability $1$ implies convergence in probability. Aliter: $P\{X_n > \epsilon\}=P\{Y >\epsilon^{1/n}\}=1-\epsilon^{1/n} \to 1-1= 0$ as $n \to \infty$.
Answer: You want to show that $X_n$ converges to $0$ and not to $Y$, so you need to show that $$P(|X_n-0|\ge\epsilon)\to 0$$
and not $P(|X_n-Y|\ge \epsilon)\to0$. You have that
$$P(|X_n-0|\ge \epsilon)=P(X_n\ge \epsilon)=P(Y^n\ge \epsilon)=P(Y\ge \epsilon^{1/n})=\int_{\epsilon^{1/n}}^1dt=1-\epsilon^{1/n}$$
Answer: You need to prove that for any $\varepsilon>0$ we have
\begin{align*}
\lim_{n\to\infty} \mathbb P[Y^n>\varepsilon]=0
\end{align*}
Observe that
\begin{align*}
\lim_{n\to\infty} \mathbb P[Y^n>\varepsilon]&=\lim_{n\to\infty} \mathbb P[Y>\varepsilon^{\frac{1}{n}}]\\
&=1-\lim_{n\to\infty} F_{Y} (\varepsilon^{\frac{1}{n}})\\
&=1-F_Y(1)\\
&=0
\end{align*}
Which proves convergence in distribution. In this case we can also prove almost sure convergence because for any $\omega\in\Omega$, $\lim_{n\to\infty}Y(\omega)^n=0$ unless $Y(\omega)=1$ so
\begin{align*}
\mathbb P[\lim_{n\to\infty} Y^n = 0] &= 1-\mathbb{P}[Y=1]\\
&=1
\end{align*}
Almost sure convergence gives you convergence in probability.


Static Route Dual LAN CARD Centos 6

Question: First let me explain the scenario. I have two internet connection (Lease LINE and BroadBand).
I have a CENTOS 6 Server which is used for VOIP calling (GOAUTODIAL). Now I want everyone in the LAN to use the broadband and the server should use the lease line but then again the server should also be accessible locally.
So, say I feed the broadband to a router and setup it up to have a LAN Network 192.168.0.0/24.
Next I feed the Lease line to the SERVER and set the static LIVE IP on eth0 say 22.214.171.124
Now, I am looking for a solution to put the server on 192.168.0.0/24 Network.
In order to do this the cheapest solution would to have another LAN CARD installed in the server and set a 192.168.0.0/24 IP on it. Say 192.168.0.254
Now, all the outgoing calls through the server is connected to a static IP say 184.108.40.206
Now, I want all the outgoing or incoming request from 18.104.22.168 to be handled by eth1 (22.214.171.124 - Lease LINE). Apart from this every thing else should be handled by the eth0(192.168.0.254).
For Example I have NFS server running on the server machine. It should be accessible from the 192.168.0.0/24 Network.
I am sorry if this was too long, please guide me through this hurdle.
I know I have to play around with route-eth0 and route-eth1. But I am not sure how to go about it.A bit of guidance or a link to a tutorial would be highly appreciated.
Thanks
Regards.
Answer: If the server has 2 NICs and eth0 is the 'pubic' one and eth1 the 'local' one, then you don't need to do anything special.
You simply configure eth0 with your public IP and a default gateway and eth1 with 192.168.0.254 IP (or whichever else you want from your local subnet) and every device on that same LAN will be able to reach your server without any special static routes.
I didn't fully understand the part about the incoming requests from 188.8.131.52 though.
Is this server some kind of SIP Server/Proxy?
Comment: Yes, it is a SIP server.

Static Route Dual LAN CARD Centos 6


Rectifiability implies continuity

Question: Consider a rectifiable curve $\gamma:[0,a] \rightarrow S$ on a compact and metric space S.
I wonder since the path length of $\gamma$ is finite, it implies that $\gamma$ is continuous?
Thanks in advance
Answer: Continuity is usually a requirement in the definition of a curve.
Let $x_0$ and $x_1$ be two different points in $S$ and let $\gamma\colon[0,1]\to S$ be given by
$$
\gamma(t)=\begin{cases}x_0& \text{if }0\le t\le 1/2,\\x_1 &\text{if } 1/2<t\le1.\end{cases}
$$
Then $\gamma$ is a discontinuous curve, but for any partition $0=t_0<t_1<\dots<t_n=1$ of $[0,1]$
$$
\sum_{k=1}^n d(\gamma(t_{k-1}),\gamma(t_{k}))= d(x_0,x_1).
$$
Comment: Dear @Julián Aguirre many thanks for your answer. This counter example is nice.

Rectifiability implies continuity


How do I control the internet access in a private network?

Question: I'm administering a small private network and for legal purposes I need to do the following:

Restrict the internet access to a few machines uniquely identified by a username and password
Log the internet-traffic of every user and save the logs corresponding to the user

I was thinking about some kind of server which I plug between the Web and my users? Anyone able to give me a hint?
Comment: Given that you don't seem to know much about System Administration I would *highly recommend* a packaged solution, a device or software specifically meant for the type of situation you're in (quite a few compliance solutions exist, some are even quite cheap).
Comment: I'm not a network admin. But i am a theoretical physicist, so i reckon i can cope with the situation. Also i have the freedom to fiddle around a bit, and learn. No one is done any harm. But thx for the concern
Answer: A proxy server.
Something like Squid on Linux, or a self-contained OS distribution that has it included.
Comment: Never configured a proxy-server. But if this is what im looking for, im trying this out. Thank you very much.
Answer: What you want is a proxy server.
Squid will work on both windows and linux.


Existe problema de desempenho em utilizar muitas chaves estrangeiras (FK)? Se sim, é ruim ter atributos estrangeiros sem ser FK?

Question: Para esclarecer o quanto pode ser "muitas chaves estrangeiras", explicarei o contexto:
Em um sistema, quero armazenar por quem um determinado registro foi editado ( updatedBy) ou criado (createdBy). Isso pode acontecer por:

Um usuário, autenticado no sistema;
Pelo sistema, numa ação automática, por exemplo.

As tabelas (que hoje são 8, mas imagino essa situação em qualquer sistema) parecem algo como:
 _____________________________________________________
| ... | createdBy | createdAt | updatedBy | updatedAt |
|     |           |           |           |           |
|_____|___________|___________|___________|___________|

Pensei em três alternativas sobre como armazenar os campos createdBy e updatedBy:

Armazenar o nome do usuário;
Armazenar algum identificador do usuário, não necessariamente a chave primária, e sem criar chave estrangeira;
Armazenar a chave primária criando uma chave estrangeira.

Os problemas que eu vejo em cada alternativa:

O usuário pode mudar o nome, então o dado tornaria-se inconsistente;
Não me parece correto ter um atributo que funciona como chave estrangeira mas não é uma chave estrangeira, porém não tenho conhecimento para elaborar esse ponto e é a opção que estou utilizando agora (em ambiente de desenvolvimento);
Parece o modo mais correto, porém todas as tabelas teriam conexão com a tabela Usuario (inclusive ela com ela mesma), createdBy e updatedBy seriam chaves estrangeiras opcionais.

E então vamos às perguntas:

Sobre a alternativa 2: Existe fundamento em dizer que é ruim utilizar atributos que funcionam como chaves estrangeiras mas não o são?
Sobre a alternativa 3: Existe problema de desempenho em utilizar muitas chaves estrangeiras?

Se houver uma alternativa melhor que eu não tenha citado, com certeza agregará na resposta.
Caso a escolha do banco de dados seja relevante para a resposta (devido ao SGBD), estou utilizando MySQL.
Comment: Eu diria pra criar uma tabela de auditoria, mover esses campos para lá e fazer FK para essa tabela de auditoria... No final das contas, sem um histórico, de nada servem estes campos...
Comment: "Existe fundamento em dizer que é ruim utilizar atributos que funcionam como chaves estrangeiras mas não o são?", você tem certeza de que quis dizer isto mesmo que escreveu? Se não são chaves estrangeiras é completamente errado qualifica-los como tal. É óbvio que o uso de chaves estrangeiras afeta o desempenho mas você terá um modelo mais robusto e com dados coerentes, resta a você avaliar o quanto isso é importante em seu sistema.
Comment: Esses atributos, na prática, não seriam FK, mas consultas seriam feitas como por exemplo `SELECT * FROM Usuario JOIN Roupa WHERE Usuario.username = Roupa.updatedBy`, foi isso o que quis dizer com "funcionam como chaves estrangeiras mas não o são"
Comment: Não me parece um requisito muito comum que precise ser guardado o usuário que criou/modificou um registro (e o que apagou também, pelo menos em muitos lugares isso é só marcado no registro, e não deletado efetivamente). Poderia dizer por que você precisa disso? A alternativa ao meu ver seria que o próprio schema já permita ter essa informação, dependendo de como ele é modelado.
Comment: Trabalhei em um projeto que resolveram desse jeito, então foi o jeito que "aprendi". Esse tipo de informação também seria exibido no *client*, em algumas situações, por isso imagino que precise estar no BD. Não entendo o que você quis dizer com "o próprio schema já permita ter essa informação", então não sei dizer se atenderia minha necessidade. Se tiver alguma referência pode compartilhar que eu leio :), ou se quiser montar uma resposta com isso, acredito que seja válido também como "uma alternativa melhor", conforme citei no fim da pergunta.
Comment: @RafaelTavares Quis dizer a própria modelagem já indicar qual é o usuário que fez a modificação (em uma outra tabela, diferente daquela que tem o registro em questão). Mas não tenho um exemplo à mão.
Answer: A primeira opção realmente não é muito boa, mas há casos para uso. A segunda diminui o tamanho do campo mas tem o mesmo problema da primeira. Ela não garante a canonicidade da informação, mas pode ser feito manualmente.
A terceira costuma fazer mais sentido na maioria dos casos, mas não sabemos se faz no seu caso. Não temos detalhes, pode ser que isso tudo nem seja o mais adequado.
Haverá algum custo de performance em manter chaves estrangeiras, mas não costuma ser nada muito grande. Há casos que pode haver ganho, mas em geral só comparado com fazer o mesmo manualmente.
Em geral faz-se o que precisa, o que é mais correto, e se tiver problemas de desempenho começa fazer otimizações, se for possível sem prejudicar o funcionamento. Meça para tomar a decisão, não tome porque parece o melhor. Isso é otimização prematura porque o intuitivo nem sempre funciona, especialmente em bancos de dados.
Eu percebo que muitas pessoas estão preocupados com performance sem nem sequer chegar perto de isso ser um problema.
Se precisa da performance mais que qualquer outra coisa então faça o rápido e não se preocupe com outra coisa, mas isso pode complicar o desenvolvimento, nem todo mundo sabe lidar com isso para realmente deixar rápido. Não vá fazer manualmente o que o banco de dados faz automático quando tem FK, aí é pior.
Não é tão comum mas algumas pessoas preferem nem usar chaves estrangeiras e fazer validações só quando é necessário. Dependendo de como a aplicação é desenvolvida pode ser uma boa e uma otimização viável. Não é o fim do mundo não ter FKs, desde que saiba o que está fazendo.
Obviamente que eu parto do princípio que tudo está configurado adequadamente, principalmente existem índices adequados para facilitar a vida do SGDB verificar as tabelas estrangeiras. Não vou considerar o erro porque isso inviabiliza qualquer opção. Feito isso o custo é baixo.
Não existe receita de bolo que funciona sempre, sabendo fazer cada caso pode funcionar. Tem que entender o que acontece em cada situação, os compromissos de cada escolha dentro do seu contexto.


Vagrant: Não sincroniza pasta

Question: Estou usando:
Windows 10 64bits
Vagrant 1.9.7
VirtualBox 5.1.22
Box Debian Jessie 64bits
Plugins Vagrant:
  >vagrant-vbguest
  >vagrant-share

Minha configuração do Vagrantfile:
Vagrant.configure("2") do |config|
  config.vm.box = "debian/jessie64"

end

Entro na pasta do vagrant no sistema virtualizado (cd /vagrant), dou ls e ele lista o Vagrantfile, mas quando crio uma pasta (no caso, quero usar o Jekyll, e uso o comando: jekyll new my-awesome-site), a pasta é criada, e quando eu dou o comando ls o sistema lista a pasta juntamente com o Vagrantfile, mas não aparece no meu sistema a pasta, dou um vagrant reload mas mesmo assim não funciona (não aparece a pasta no meu sistema, e some ainda, depois de reiniciar o sistema).
Já testei as boxes: ubuntu/trusty64, hashicorp/precise64, hashicorp/precise32. Mas nada.
E só depois de que tentei essas outras boxes que eu instalei os plugins para ver se resolvia alguma coisa, mas mesmo assim nada.
Como posso resolver?
*Lembrando que isso ocorre apenas quando eu crio um arquivo/pasta no sistema virtualizado (debian no caso), mas não o contrario. Quando eu crio uma pasta no windows e inicio/reinicio o sistema, ele aparece na pasta /vagrant do sistema virtualizado.
Answer: Consegui resolver usando as configurações desse repositório no GitHub: https://github.com/jsturtevant/jekyll-vagrant
Comment: Mas não consegui encontrar o motivo de ter dado certo..

Vagrant: Não sincroniza pasta