Como identificar e evitar memory leak no .NET?

Question: Sei que o CLR conta com ferramentas como garbage collector, responsável pelo gerenciamento da memória nas aplicações .NET. Uma das funções do coletor de lixo, GC, é evitar o consumo desnecessário da memória.
Mesmo com a ferramenta, por diversos motivos, surge o vazamento de memória. É a memória alocada de forma desnecessária que com o tempo pode causar um OutOfMemoryException. O problema maior é que essa exceção não será disparada aonde está o memory leak, e sim na linha de código que o programa não tiver mais memória suficiente pra poder alocar.
Como identificar esses vazamentos na aplicação .NET e que práticas adotar para evitá-los?
Answer: O que é memory leak?
Podemos dizer que o vazamento de memória ocorre toda vez que existe uma memória alocada mais tempo que o necessário. Isso costuma ocorrer porque o código (ou mais precisamente o programador que o escreveu) se perdeu e esquece de liberar a memória depois que ela não é mais necessária. Há desperdício de memória, e o acumulo de desperdícios pode levar a inviabilizar a execução por causa de tanta memória que a aplicação está ocupando.
Na verdade tem um problema até maior que é liberar memória prematuramente que ainda precisa ser acessada, mas o assunto aqui é outro.
Com um coletor de lixo do mais comum é normal os objetos não serem liberados logo em seguida que eles não são mais necessários. A coleta ocorre de tempos em tempos conforme a necessidade de memória. Há um certo desperdício, mas ele é by design. Quando se usa algo como um garbage collector abrimos mão de ter a maior economia de memória possível. Mas não podemos abrir mão de ter memória não mais necessária ficar sem liberação.
Quando há um GC a definição de vazamento de memória varia um pouco. Apenas os objetos que sobrevivem a uma coleta mesmo não sendo mais necessário de fato é que é considerado vazamento. Antes de ter uma coleta é considerado normal que o objeto esteja ali mesmo não sendo necessário mais.
Se tiver muito vazamento, mais cedo ou mais tarde receberá uma OutOfMemoryException.
Em aplicações que rodam por pouco tempo pode ter vazamentos que nunca são percebidos, alguns inócuos, outros nem tanto.
Que fique claro que não há vazamentos que são alocados na stack, essa memória tem gerenciamento automático.
Por que o GC não coleta algo que já é desnecessário?
Não é porque ele é ruim. É porque o código tem algum problema e mantém pelo menos uma referência para um objeto que de fato não é mais necessário, mas o que o código está dizendo é que ele é necessário. Isso pode ocorrer por algumas razões que veremos abaixo.
Tenho que reiniciar o computador para liberar a memória vazada?
Não. Ao final da aplicação o sistema operacional liberará toda memória vinculada a ela, mesmo que sua aplicação não o faça. Ele faz isso perfeita e completamente todas as vezes, até porque foi ele que deu memória para sua aplicação, ele sabe tudo o que foi dado para pegar de volta.
Memória gerenciada
De fato o .NET trabalha com um gerenciador de memória, que contrariamente ao nome, se preocupa mais com a forma de alocação do que a liberação de memória. Isso facilita muito o desenvolvimento da aplicação já que é um enorme transtorno gerenciar a memória corretamente, especialmente quando usamos recursos mais avançados da linguagem e biblioteca.
O .NET possui um GC muito esperto e permite alocações ao custo próximo ao da alocação em stack (que é absurdamente rápido) e não tem custo de liberação. Mas tem as pausas de coleta. Além disso ele mantém a memória sem fragmentos, o que ajuda manter localidade de referência que proporciona melhor performance.
O problema é que muitos programadores acham que por causa disso não precisamos nos preocupar com nada no uso da memória. Temos várias perguntas aqui no SOpt onde usuários relatam vazamento de memória.
Memória não gerenciada
Nem toda memória alocada na sua aplicação é gerenciada pelo coletor de lixo. Você pode usar bibliotecas e serviços do sistema operacional que alocam memória por conta própria e o .NET não tem controle direto sobre essa alocação, só esse componente que alocou pode liberar a memória e normalmente ele precisa ser avisado que sua aplicação não precisa mais desse conteúdo alocado.
O mecanismo que o .NET adotou para dar esse aviso é o disposable pattern. Todo objeto que acesse recursos externos à memória gerenciada deve implementar o método Dispose() da interface IDisposable. Neste método é feito todo o trabalho necessário para liberar todos recursos alocados fora da memória gerenciada.
Note que a memória gerenciada do objeto não é liberada, isso só ocorrerá quando o GC disparar uma coleta.
Para garantir que o Dispose() seja sempre chamado é importante colocá-lo dentro de um finally de um try. Ou melhor ainda, usar o statement using que monta um escopo onde o objeto precisa da memória não gerenciada e garantidamente chama o método ao seu final.
Se criar um objeto disposable sem o using ou chamar o método manualmente de forma garantida, haverá vazamento de memória.
Tem muitas perguntas sobre o assunto:

Método para executar ao destruir instância de uma classe
Quais tipos de recursos são liberados em uma declaração "using"?
Quando é recomendável que uma classe implemente IDisposable?
Método Dispose()
Devo sempre utilizar Dispose()?
Liberar memória de objetos
Como garantir que a instanciação de uma classe seja feita apenas através do "using"?
Diferença entre instanciar classe e using
O HttpClient deve, ou não deve, ser utilizado dentro de um bloco using?

Ufa, que bom que eu sempre faço isso e não corro riscos
Não é bem assim. Tem objetos que você tem que implementar o Dispose(). É verdade que isso não é tão comum na maioria das aplicações, em geral você só consome essas classes, afinal quase sempre o acesso ao recurso será feito por uma API em C ou outra linguagem não gerenciada. Mas se tiver que fazer uma classe assim terá que liberar o recurso gerenciado de maneira apropriada de acordo com o componente que está usando. O método não libera nada magicamente. Liberar corretamente memória não gerenciada nem sempre é intuitivo. Mas há casos que é simples e o próprio sistema operacional faz para você simplesmente sinalizando que está encerrando.
Como eu disse, esse padrão é um sinalizador que algo deve ser feito para jogar fora algo não mais necessário.
Um dos erros mais comuns que vejo as pessoas fazerem é criar uma classe para gerenciar conexão. Alguém ensinou isso errado um dia e todo mundo passou fazer errado. Primeiro que em geral essa classe não ajuda muito, e segundo que ela tem um recurso que deve ser descartado. Esse padrão de dispose é viral, ou seja, se você usá-lo em um objeto ele obrigatoriamente deve se tornar disposable.
E se eu esquecer de usar o using fico com o vazamento até o fim da aplicação?
Talvez não. Todos objetos do .NET possuem um método Finalize() que acaba sendo chamado pelo GC quando um objeto é coletado e se ele estiver escrito certo acabará matando o vazamento, mas ainda podemos dizer que houve vazamento por ter ficado vivo mais tempo do que deveria.
Nada garante que o finalizador será executado alguma vez. E é até um pouco comum que ele não seja chamado por nunca ter o objeto coletado. O objeto gerenciado não faz cosquinha na memória, por isso não causa grande pressão no GC, mas o recurso não gerenciado que ele referencia costuma ocupar bastante espaço e causa estrago. Sem falar que ele talvez deveria ser fechado para outro usar, quando é exclusivo, e isso não ocorre.
Outro problema de deixar para liberar o recurso durante a coleta é que ela demorará mais.
É raro acontecer, mas um código pode suprimir a finalização indevidamente. Não tão raro assim é um finalizador impedir outros de executarem.
Objetos referenciados
Eventualmente algum objeto, especialmente grande, acaba sendo referenciado por outro objeto que vive mais tempo que esse primeiro objeto precisa sobreviver. Isso pode ser considerado, por alguns, como um vazamento.
Pode ser que colocou uma referência para ele em um objeto estático que provavelmente terá o tempo de vida por toda aplicação. Ou é referenciado em um objeto que fica circulando pra todo lado na aplicação sem necessidade. Ou ainda em um objeto não gerenciado que nunca é liberado.
Alguns componentes do .NET ou de bibliotecas de terceiros possuem situações assim. Ou porque foram mal feitos ou porque não existe possibilidade de fazer corretamente. É raro, mas existe. E você tem que tomar um cuidado adicional.
Um outro erro comum é o programador colocar um null para acabar com a referência. Quase sempre que se faz isso tem alguma coisa errada no código. Claro que existem casos que a semântica do objeto nulo é válido.
Eventos
Um caso típico é o uso do evento. Para quem não conhece o event é a implementação do padrão Observer. Nele você referencia um delegado de outro objeto que deseja ser notificado. Se o objeto observado sobreviver mais tempo que o observador precisa, ele segurará o observador vivo sem necessidade.
var obj = new Classe();
// ...
obj2.Event += obj.objEventHandler;
// ...
obj = null //deveria librar para o GC coletar, mas ainda tem referência p/ ele

Isso pode ser resolvido removendo a assinatura de notificação quando o observador não precisa mais ficar vivo. E é raro que o tempo de vida desses objetos sejam diferentes, mas é uma possibilidade, atenção a isso. Algo assim deve ser feito:
obj2.Event -= obj.objEventHandler;

Coloquei no GitHub para referência futura.
Closures
Se você cria uma closure, ou seja, um delegado que faz uso de uma variável criada fora do seu escopo, essa variável será criada no heap (cria uma classe para sustentar a(s) variável(is)) e só perderá a referência quando o delegado deixar de existir. Isso pode demorar mais do que deveria ou nunca acontecer.
De certa forma é o mesmo problema de ter uma referência em um objeto qualquer. Mas muitas pessoas não percebem que a variável será "promovida" para o heap e que o delegado pode sobreviver mais do que ela pensa inicialmente.
Concatenação de coleções
Se tiver que concatenar muitas strings, cada passo na concatenação gera um novo objeto e o anterior é descartado. Isso não é exatamente um vazamento de memória clássico, mas não deixa de produzir lixo demais. Nesse caso é melhor usar um StringBuilder.
O mesmo pode ocorrer em um List e outras coleções, mas o problema é um pouco diferente do ocorrido com string. Essas coleções foram feitas para adicionar novos itens. A coleção não gera um novo objeto em cada adição, mas gera um novo objeto logaritmicamente e podem ser objetos grandes a serem descartados. O ideal é evitar isso já reservando espaço pelo menos próximo ao que se espera que irá consumir (é Java, mas o .NET é semelhante).
Se reservar espaço demais podemos considerar um pouco como vazamento, afinal algo alocado e não usado também não é bom, isso deve ser minimizado.
Ocorre com qualquer objeto imutável que exija muitas mudanças ou mudanças grandes em alguns momentos.
Não são vazamentos per se, mas agem quase como se fossem, acho que é importante entender porque esse tipo de uso pode causar mais problemas que alguns vazamentos reais.
Alocar no heap sem necessidade
Também não é um vazamento de memória per se, mas criar um objeto no heap  (talvez por boxing indevido) alocará algo que sequer precisaria estar lá e portanto não precisaria ser coletado. É um vazamento temporário, mas pode ser ruim se feito em quantidade, e até pode por pressão indevida no GC.
Hoje tem várias formas de evitar isso, um deles é o Span.
Cache
Cache deve ser acessado por uma referência que morrerá muito rapidamente ou por uma referência fraca que permite a liberação do objeto referenciado. Se isso não ocorrer poderá segurar um objeto indevidamente não só ocupando memória geral, mas também o espaço do cache que poderia ter alguma coisa mais útil.
Frameworks
O WPF e WinForms podem vazar memória no binding, no Textbox undo, EventHandler e outros.
Isto não é uma lista completa, só citei exemplos, vários frameworks de vários tipos vazam memória dependendo de como você usa, então ler a documentação por completo, com cuidado é necessário antes de fazer. Fazer rápido não pode ser desculpa para pular essa exigência.
Thread
Se uma thread não encerrar quando deveria, se entrar em deadlock, não só os objetos referenciados dentro dela podem viver mais do que deveria, mas a própria memória necessária para esta thread mantém-se viva (só a stack pode ter 1MB e fica todo ali, mesmo que não tenha alocações nele).
Pode ocorrer um deadlock por diversos motivos, inclusive esquecer de dar um Monitor.Exit().
Código gerado dinamicamente
É raro fazer isso, mas se gerar muito código em tempo de execução (pode ser feito de diversas maneiras) é provável que toda memória necessária para sua criação não seja mais liberada mesmo que não precise mais deste código.
Fragmentação do LOH
O Large Object Heap (veja mais abaixo) não é propriamente compactado. Se o reaproveitamento dos buracos deixados forem bem menores que o ocupado antes haverá um enorme desperdício. É verdade que não ocorre tanto porque se tiver vários menores, é possível que dê para encaixar dois ou mais blocos novos no lugar de um antigo. Isso é uma preocupação rara e não exatamente um vazamento de memória, mas um desperdício que pode comprometer em casos extremos.
Cuidado extremo
Recentemente aprendi uma "boa prática" :D para aplicações que rodam com um coletor de lixo geracional onde os objetos devem morrer jovens ou sobreviver para sempre.
Esses gerenciadores de memória possuem uma geração 0 curta (algo como 256KB) para garantir que a coleta dela seja feita de forma muito rápida (na casa dos microssegundos). Obviamente ele tende a encher relativamente rápido (nem tanto assim, já vi estatísticas que a maioria das aplicações possuem objetos com tamanho médio de incríveis 35 bytes já que os grandes não entram nessas gerações) e quando isto ocorre a coleta é disparada copiando todos objetos que ainda possuem referências para a geração 1. Idealmente não deveria copiar qualquer objeto. Claro que isso é quase impossível, mas devemos tentar que isso ocorra.
Quanto mais objetos são copiados para a Gen 1 mais rápido ele enche. Ele também é um pouco curto (uns 2MB). É feito assim para ser rápido (1 ou 2ms) e não dar pausa perceptível. Quando ele enche, tem que copiar tudo que ainda deve sobreviver para a geração 2. Novamente o ideal é copiar o mínimo possível.
A Gen 2 não tem limite teórico de tamanho. Claro que ele tenta manter tudo dentro da RAM. Mesmo a memória virtual tem seu limite, em 32 bits é de 4GB e em 64 bits é 16 Exabytes (raras as máquinas que conseguem passar de 1 TB hoje, que são 7 ordens de magnitude menores que o máximo permitido, ou se preferir, é mais ou menos toda RAM disponível em todos computadores do mundo hoje).
Demora muito, mas se essa última geração encher, a pausa será potencialmente longa. É verdade que existem técnicas para minimizar isto, como a concorrência de parte do processo, e também deve ser mais raro ter uma coleta disparada. O ideal é que raros objetos cheguem nessa geração.
Se muitos objetos chegam na Gen 2 seria melhor criar um object pooling preferencialmente grande o suficiente para cair no LOH e nunca ser copiado ou coletado, por exemplo pode usar Memory.
Os objetos acima de 85000 bytes são alocados no LOH - Large Object Heap e só são compactados junto com a coleta da Gen 2. Na verdade ele não compacta no sentido de reduzir os fragmentos de memória, ele apenas libera o que não está sendo usado. Por serem objetos grandes os buracos não são um problema para a performance como o ocorre com objetos pequenos. Os buracos entram em uma free list para serem usados de novo por novos objetos que caibam ali, mais ou menos como ocorre na memória gerenciada pelo sistema operacional.
Claro que nem todo tipo de aplicação precisa dessa preocupação toda, a maioria não dá a percepção que existem paradas.
E o mais importante, como toda boa prática, tem que usar onde faça sentido, seja útil, e só depois de entender todas implicações. Criar um pool de objetos pode causar o vazamento de memória.
O que isto tem a ver com vazamento de memória?
Não que isso seja exatamente um vazamento clássico de memória, mas este padrão de uso de memória pode diminuir a pressão no garbage collector. Deixar um objeto sobreviver mais do que o necessário, mesmo que ele acabe sendo coletado não deixa de ser uma vazamento temporário.
Como detectar
Cada problema demanda uma técnica específica. O que vai ajudar são os perfiladores de memória. Já respondi algo sobre isto e listei alguns profilers.
Achei uma técnica interessante para testar.
Artigo no Code Project.
Dicas do .NET Memory Profiller.
Pergunta sobre o assunto no SO.
Em 2021/22 o GC foi reformulado e agora trata melhor certos padrões de uso dando mais eficiência em alguns casos.
Dúvidas específicas podem ser perguntadas.
Comment: Não conheço a implementação específica para falar, mas tem boa possibilidade. Claro que talvez tenham pensado nisso e achado uma solução.
Comment: O WPF, por prática, abusar o padrão Observer (`INotifyPropertyChanged`) para data binding, deve sofrer com isso. Ou estou enganado?


E-Book creation using MSWord (in HTML), how to include references

Question: I'm converting a previously published book to an e-book, which will be self-published on Amazon. Things are going well, I'm using several online guides to correct stylistic errors and the like. One issue has arisen: The book is on nutritional science, and the print version contains over 200 references (included in the text as superscript). What are my options as far as hyperlinking them to the ebook text? I would prefer the references to appear as hyperlinked superscript, which could pull up a popup box when selected (much like the dictionary function on most e-books). Is this possible? Or should I use the bookmark/hyperlink functions within word and put references in their own end section?
Answer: Popup functionality for footnotes is not a built-in part of the epub spec. Apple has implemented it for iBooks as long as you mark the code up properly with epub:type declarations. You'll want the superscripted number set up like 24 and the corresponding footnote to be
Content goes here

The important bits are the epub:type declarations. Note that use of epub:type implies that you're using epub 3.0 rather than epub 2.0.1. If you're just using MS Word,then you're out of luck on that score.
Further details can be found on Liz Castro's blog: http://www.pigsgourdsandwikis.com/2012/05/creating-pop-up-footnotes-in-epub-3-and.html


Time series tracking queue optimization problem

Question: In order to track prices of many different products from different sources, I must optimally schedule a group of trackers dedicated to price collection (ie. collect one price at a time for each product per source). The goal is to be always aware of the current price of each product-source despite the limited number of trackers. A price may change rarely (ie. 8 hours) or be more volatile (ie. 20 minutes) depending on the product, context, source... It's not possible to fetch prices every minute of all products from each source, it would require far too much trackers in parallel and it would be worthless (many prices do not change for a while).
Here come the optimization problem. How can I optimally schedule/update the trackers' job queue in real-time in order to:

minimize the lead time between the price change and its collection by tracker, for all products (within our limited trackers constraint).
minimize the number of "prices collected albeit they didn't change".

My current simple solution is to maintain different online time series ML models (combine prediction from a local model for each product-source and a global model of all products-sources) in order to get the probability each price would change within the next X minutes. This prediction output requires the latest features available for each product-source. Its a binary classification problem based on time-series. A similar model would be to predict how much a price should change within the next X minutes, it is then a regression problem similar to the probability from the classification problem but it would prioritize important price changes.
The age of features for a product-source may be old so the prediction must be linked to their age. This age can mean that features are outdated but mainly how likely it will change soon (ie. "25 minutes ago, probability of change within 30 minutes was 90%" > "1 minute ago, probability of change within was 90%").
Then I use this simple score: (probability of change within X minutes threshold) x (age of features in minutes / X minutes threshold).
So I arrange the price collection queue as follows: Y% of prices ranked by top change score, Z% of prices ordered by oldest collection request first. Z should be as small as possible but still guarantee that old prices will always be collected. There's a min interval filter for a new collection request on a same price.
Two questions:

I am new in ML and this current simple solution (change forecast probability x forecast age / forecast timeframe) seems clunky to me. Is it ? A better simple approach ?
Y and Z are currently fixed but I plan to use one-armed bandit Epsilon-Greedy algo to optimally balance Y and Z (schedule based on forecast VS standard schedule) using the average price collected with change as the reward. Is it the right way to go ?

Thanks a lot for any help.
Xavier
Answer: From my experience in the beer business I would make the following observations:

95% or more of the products in a grocery store maintain the same price for at least several months.  Therefore, I would focus only on the 5% or less items that are promoted.
Generally, promotion prices were maintained for at least five days. Price changes are commonly accompanied by feature ads or displays that take time to create.  So I wouldn't worry about price changes for less than a day.
Many retail outlets, like liquor stores in Indiana, never promote anything.  You could leave these out.

This could simplify your optimization to sampling only those stores and items that are commonly promoted.  You might also look in newspapers for feature ads.  These are usually published a day before the promotion.
Comment: Yes, "price change frequency" is a good prior or a key feature. I already use it but it could be an option to also use it for cold start by adding it to the multi-armed bandit: ML forecast score VS frequency score VS standard schedule. Contextual data are also good features which I dig into.


ASP.NET MVC3 fill in form again after post using FormCollection

Question: So what I do is, I have a controller that checks if the input in my form is correct. If it's not, it puts an error message in the ViewBag and returns the view. Like this (unimportant stuff left out):
var name = formCollection.Get(cr.Category.name + "-name-" + i).Trim();
var dateOfBirth = formCollection.Get(cr.Category.name + "-dateOfBirth-" + i).Trim();
var passportno= formCollection.Get(cr.Category.name + "-passportno-" + i).Trim();

if (name.Equals("") || dateOfBirth.Equals("") || passportno.Equals(""))
{
     ViewBag.ErrorMessage = "Please fill in all required fields at " + cr.Category.naam;
     return View("BulletinForm3");
}

And my view looks like this (unimportant stuff left out):
<input name="@(cr.Category.naam)-name-@i" value="" />
<input name="@(cr.Category.naam)-dateOfBirth-@i" value="" />
<input name="@(cr.Category.naam)-passportno-@i" value="" />

@if (ViewBag.ErrorMessage != null)
{

@ViewBag.ErrorMessage

}

So what happens when you forget to fill in a required field? It returns the view and displays the error message, BUT all the fields that were already filled in are empty again... So what I want to do is use the FormCollection to fill them back in after it returns the view. I put the FormCollection in the ViewBag like this:
ViewBag.ErrorMessage = "Please fill in all required fields at " + cr.Category.naam;
ViewBag.FormCollection = formCollection;
return View("BulletinForm3");

And changed this in the view:
<input name="@(cr.Category.naam)-name-@i" value="@if (ViewBag.FormCollection != null) { ((FormCollection)ViewBag.FormCollection).Get(cr.Category.naam + "-name-" + i);}" />

However, it doesn't fill in the input fields with the values of the FormCollection... The FormCollection isn't empty (tested it) and the names are the same (the counter (i) doesn't change or something).
What am I doing wrong?
Thanks in advance
Answer: I think of this as a cyclical thing.
When I use the view for a create, I send in an empty view model
return View("_CreateUserForm", new CreateUserViewModel());

I use the html helper "for" methods to write the form, which populates the control if there's a value (or default)
@Html.CheckBoxFor(m => m.FindCriteria.TermsHaveBeenAccepted)
@Html.HiddenFor(m => m.MyHiddenValue)

On post back, mvc automagically populates my model based on the form values
ActionResult SaveNewUser(
  [Bind(Prefix = "")] CreateUserViewModel editUserViewModel)

On (validation) error, I can send this model to my view and it will populate the controls for me
return View("_CreateUserForm", editUserViewModel);

Comment: That's what I do in my other views, yes. But this view is different, it's kind of a static view, it creates instances of different models. Not only Individual (what I showed) but there are input fields for an Organization, a Team, etc etc. Then Individuals are added to Organizations in the Controller, etc. So there isn't 1 model, but multiple.
Answer: As I couldn't find a solution, I decided to use Javascript validation instead of validating in the controller. Now, there is no postback so no need to fill the fields in again.


Colored text in console

Question: I would like to make colored text in console for each char (text). I tried to use
system("COLOR <COLOR_CODE>");
but it takes effect for all text. Can I color only some text?
Thank you very much for help :)
Comment: Possible duplicate of [Color text in terminal applications in UNIX](http://stackoverflow.com/questions/3585846/color-text-in-terminal-applications-in-unix)
Answer: In the Window console, to color text you need to call SetConsoleTextAttribute.
For example,
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN | FOREGROUND_BLUE);

Make sure to include <windows.h>.
Answer: I wrote a cool header a while back:
#include <Windows.h>
enum colors {
    black = 0,
    electric = 1,
    leaf = 2,
    lightblue = 3,
    red = 4,
    darkpurple = 5,
    gold = 6,
    lightgrey = 7,
    grey = 8,
    blue = 9,
    green = 10,
    aqua = 11,
    lightred = 12,
    purple = 13,
    yellow = 14,
    white = 15,
};
namespace color {
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

    void print(std::string text, const int font = colors::lightgrey, const int background = colors::black) {
        bool inv = false;
        if (text[text.length() - 1] == '\n') {
            text.pop_back();
            inv = true;
        }
        int color;
        color = background * 16 + font;
        SetConsoleTextAttribute(hConsole, color);
        printf(text.c_str());
        SetConsoleTextAttribute(hConsole, 7);
        if (inv)
            printf("\n");
    }

    void printM(std::string text, const int color) {
        bool inv = false;
        if (text[text.length() - 1] == '\n') {
            text.pop_back();
            inv = true;
        }
        SetConsoleTextAttribute(hConsole, color);
        printf(text.c_str());
        SetConsoleTextAttribute(hConsole, 7);
        if (inv)
            printf("\n");
    }

    void map(const char* e = NULL)
    {
        for (size_t i = 0; i < 256; i++)
        {
            printM(std::to_string(i), i);
            printf(e);
        }
    }
};

The only downside is that if you're doing multithreading some stuff will get colored with other.
Answer: Put
#define color(param) printf("\033[%sm", param)
  #define green "32"
  #define white "0"
at the beginning of your file.
Then, use color(green) before your printf.
32 is for green, feel free to try other numbers to find what you like.
Comment: Those are ANSI color codes, and they haven't worked in Windows since about Windows XP.

Colored text in console


First span text overflows to second

Question: My first span text overflows to the second when first span text is lengthy.How can i move second span downwards if first span text ids lengthy.
Here is my code

    <img src="<?=base_url()?>/images/1.jpg" width="100px" height="100px">

 texttexttexttexttexttexttexttexttexttext
 Developer

css:

.users-wrapper {
padding: 10px;
min-height: 500px;
width:auto;
height: auto;
-moz-box-shadow: 0 0 5px #888;
-webkit-box-shadow: 0 0 5px#888;
box-shadow: 0 0 5px #888;
}

.column {
position: relative;
min-height: 1px;
padding-right: 15px;
padding-left: 15px;
margin-bottom: 23px;
float: left;
width: 33%;
height: 110px;
word-break: break-word;
}

.column .name {
font-size:14px;
font-weight:bold;
line-height:20px;
margin-left:128px;
margin-top:-105px;
padding-right:40px;
position:absolute;
color: #3366CC;
word-wrap:break-word;
}

.column .job {
font-size:13px;
font-weight:normal;
line-height:20px;
margin-left:128px;
margin-top:-87px;
padding-right:40px;
position:absolute;
color: #808080;
}

.user_thumbnail,
.img-user_thumbnail {

height: 110px;
padding: 4px;
margin: 7px;
width:
line-height: 1.428571429;
background-color: #ffffff;
border: 1px solid #dddddd;
border-radius: 4px;
-webkit-transition: all 0.2s ease-in-out;
      transition: all 0.2s ease-in-out;
}

.user_thumbnail {
display: block;
}

.user_thumbnail > img,
.img-user_thumbnail {
display: inline-block;
max-width: 100%;
}

a.user_thumbnail:hover,
a.user_thumbnail:focus {
border-color: #428bca;
}

.user_thumbnail > img {
margin-right: auto;
margin-left: auto;
}

.user_thumbnail .caption {
padding: 9px;
color: #333333;
}

The height of the outer class column is fixed and not supposed to be auto scale.Here the string name overflows to the string Developer.How can i solve this?
Thanks
Comment: you can use float for not overflowing , but if you want to move the _job_ down, wouldn't that increase the height of the div anyway? since it won't be a section of one line anymore but two lines
Comment: Could you post the CSS you are applying to this?
Comment: i have updated the css am using.please check.
Answer: use css to break the word so its automatically break down the word and does not overflows to another span.
.name{word-wrap:break-word;}

Comment: actually the word break is working, but the name overflows the job, how can i move my second span down..automatically.
Answer: use the css for second span get downwords .
.user_thumbnail {
  float: left;
}
.name {
  clear: both;
  float: left;
}
.job{
  clear: both;
  float: left;
}

First span text overflows to second


Why drush sql-sync fails with mysqldump unknown variable error?

Question: I am having issues trying to sync my staging server with my local server using drush sql-sync command.
I've set my aliases right and the same configuration is working with my development server and local machine.
Here are the issues I get once I type in:
drush sql-sync @stag @local

I get the standard warning about backing up my target database.
Then I'm having this error:
stdin: is not a tty
mysqldump: unknown variable 'table_cache=67108864'
Database dump failed

So I am pretty sure this has something to do with MySQL configuration on the staging server.
From what I've googled/read, a large value for the table_cache is not necessarily a good one for the server and can slow it down. But I am not sure what a "good" value is.
Comment: here is the nice documentation about `table_cache` http://dev.mysql.com/doc/refman/5.0/en/table-cache.html
Comment: @sirish, thanks for the link.

After a bit more searching around, I found this link. looks like the table_cache should be replaced by table_open_cache after a version 5.1.3...

So I replaced it and restarted mysql. No change.
Answer: This does look like an issue with mysql, not Drush.  Run your Drush command again with the -s flag (simulate);
drush sql-sync @stag @local -s

Drush will then print out the shell commands that it would execute, without doing anything.  You can copy the mysqldump command into your shell, and experiment with the options until the dump works.
Comment: thanks for the tip. Did not know about the simulate flag.
Comment: One thing I found out while testing issues with mysqldump on the stag server is that it is having issues with the parameters listed under [mysqldump] in my.cnf.

So,once I commented out the error variable under mysqldump and ran mysqldump again,the error ends up being the next parameter in the list.(There are around 15-20 parameters under this list)
So I tried using mysqldump with the --no-defaults argument which ended up working. Now I need to find a find a way so that sql-sync call can be made using the argument or I probably should comment out all the my.cnf parameters for mysqldump,
Comment: To anyone that might bother, commenting out the mysqldump config parameters in my.cnf worked for me(for now).

Not sure sure if that as the right way to go about it


Enough injectives in the category of torsion abelian groups

Question: Claim: The category of torsion abelian groups has enough injectives.
I thought I had a proof of this, but discovered a mistake in my proof. I was trying to use the techniques of the usual proof that the category of abelian groups has enough injectives, such as the proof at this page: https://stacks.math.columbia.edu/tag/01D8. This proof constructs a canonical embedding
$$
M \to F(M^\vee)^\vee
$$
where $M^\vee = \operatorname{Hom}_{\mathbb{Z}}(M,\mathbb{Q}/\mathbb{Z})$. However, $F(M^\vee)^\vee$ is not generally torsion, and even if $M$ is torsion, I suspect $F(M^\vee)^\vee$ may not be torsion. Is there a simpler way to show that a torsion abelian group $M$ embeds into a torsion injective (equivalently, divisible) abelian group?
Comment: Don't be greedy. Make with the injectives you have!
Answer: Let $I$ be an injective abelian group and let $T(I)$ be its torsion subgroup.  Then $T(I)$ is injective.  Indeed, $T(I)$ is divisible since $I$ is divisible (and if $nx\in T(I)$ then $x\in T(I)$).
So, if $M$ is torsion, then it embeds into the torsion subgroup of $F(M^\vee)^\vee$, which is still injective.

Alternatively, it is pretty easy to directly prove that any (torsion) abelian group $M$ embeds into a divisible (torsion) abelian group.  The key step is the following:

Lemma: Let $M$ be an abelian group, $x\in M$, and $n\in\mathbb{Z}\setminus\{0\}$.  Then there is an abelian group $N$ which contains $M$ as a subgroup and an element $y\in N$ such that $ny=x$.  If $M$ is torsion, so is $N$.

Proof: Let $N=M\oplus\mathbb{Z}/K$ where $K$ is the subgroup generated by $(x,-n)$.  Then the natural homomorphism $M\to N$ is injective since $n\neq 0$, and if $y$ is the image of $(0,1)$ in $N$ then $ny=x$.  Since $N$ is generated by $M$ and $y$ and $ny\in M$, it is clear that if $M$ is torsion, so is $N$. $\blacksquare$
Now given an abelian group $M$, you can embed it in a divisible abelian group by just using the Lemma repeatedly by transfinite recursion, adjoining new elements to correct every failure of divisibility until there are none left.  If $M$ is torsion, then each step of the construction will also be torsion.

Both of these ideas generalize to modules over any ring, replacing "divisible" with "satisfying Baer's criterion for injectivity".  In particular, over any integral domain, you can conclude that the category of torsion modules has enough injectives (either since the torsion submodule of an injective module is still injective, or alternatively because if you start with a torsion module and adjoin elements to it in order to satisfy Baer's criterion, the result is still torsion).


DiscordBot online but doesn't respond to command (js)

Question: I have no experience with dc bots so I followed a yt tutorial but discord.js he used was an older version (v12) so I fixed the code for my version v14. The Bot goes online but when I type a command it won't respond. There are no errors it just goes online and gives the console message that's it.
Maybe it's because of the version but I can't find any answers for this version. (Maybe it's something else as I said I've never done that before)
This is my main.js:

const { Client, GatewayIntentBits } = require('discord.js');

const client = new Discord.Client({
    intents: [
      GatewayIntentBits.Guilds,
      GatewayIntentBits.GuildMessages,
    ]
  })

  const prefix ='!';

  const fs = require('fs');
  client.commands = new Discord.Collection();

  const commandFiles = fs.readdirSync('./commands/').filter(file => file.endsWith('.js'));
  for (const file of commandFiles){
    const command = require(`./commands/${file}`);

    client.commands.set(command.name, command);
  };

client.once('ready', () => {
    console.log('Bot is online!');
});

client.on('message', message =>{
  console.log("1")
    if(!message.content.startsWith(prefix) || message.author.bot) return;
    console.log("2")

    const args = message.content.slice(prefix.length).split(/ +/);
    const command = args.shift().toLowerCase();

    if(command === 'ping'){
        client.commands.get('ping').execute(message, args);
    }
});

client.login('TOKEN');

The console.log() 1 and 2 are to check if it works but it won't show in the console just the "Bot is online".
Then I have a folder /commands with ping.js:
module.exports = {
    name: 'ping',
    description: "this is a ping command!",
    execute(message, args){
        message.channel.send('pong!')
    }
}

Answer: You should request the message content intent. See how:
const { Client, GatewayIntentBits } = require('discord.js');

const client = new Discord.Client({
    intents: [
      GatewayIntentBits.Guilds,
      GatewayIntentBits.GuildMessages,
      GatewayIntentBits.MessageContent
    ]
  })

Note that you may also need to enable it in the Discord Developer Portal:
Comment: When i add that it gives me an error: throw new Error(unrecoverableErrorCodeMap[error.code]); Error [DisallowedIntents]: Privileged intent provided is not enabled or whitelisted.

I did enable the stuff in the Developer Portal
Comment: Yes that's what I mentioned in my message ahah, you should enable the intent at https://discord.dev
Comment: oh sorry now error is gone I did enable it I guess it took some time to work haha but the Bot still doesn't respond
Comment: add console.log(message.content)
Comment: Console stays empty it only gets "bot is online"


Meu site fica bagunçado no Microsoft Edge, Firefox e no Safari. Como Resolver esse problema?

Question: Meu site pega no Chrome e Opera, mas quando testo nesses outros navegadores fica bagunçado, mais, no Edge.
Edge-

Safari-

Firefox é o que tem menos erros-

Meu Código:

/*--------------------Confgurações primarias css--------------------*/
@import url(https://fonts.googleapis.com/css?family=Open+Sans);
@import url(https://fonts.googleapis.com/css?family=Open+Sans:700);
@import url(https://fonts.googleapis.com/css?family=Roboto:700);

*{margin:0; padding:0; border:0; list-style:none; vertical-align:baseline;}
img{max-width:100%;}
*, *:before, *:after{-webkit-box-sizing: border-box; -moz-box-sizing:border-box; box-sizing: border-box;}
a{text-decoration:none; list-style:none;}

.clearfix:after, .clearfix:before{content:""; display:table;}
.clearfix:after{clear:both;}
/*--------------------Confgurações do topo--------------------*/

header{background-color:#222; width:100%; height:70px;}
.topo{width:1110px; height:auto; margin:0 auto 0 auto;}
.logo{width:184px; margin:0 auto; float:left; margin-top:10px;}

/*--------------------Confgurações da caixa de busca--------------------*/

.container-buscar{width:1110px; margin:0 auto;}
.search-box{min-width:130px;float:right; margin-top:-41px;}/*71px;*/
.search-area{width:150px; height:36px; outline:none; border:none; position:relative; z-index:9999; background:#FFF; font-family:'Open Sans', sans-serif; font-size:1em; margin-right:-1px;}
.search-button{width:35px; height:36px; position:relative; z-index:9999; left:-4px; top:2px; outline:none; border:none; background:#FF7F00; cursor:pointer; z-index:9999;;}
button:hover{background:#000;}

/*--------------------Confgurações do menu--------------------*/

nav{width:100%; height:42px; background-color:#4682B4; font-family:'Open Sans', sans-serif; font-size:16px; color:#fff;}
.nav-menu{max-width:1110px; margin:0 auto; width:100%; text-align:left;}
nav ul {list-style-type:none; padding:0; margin:0; position:relative; min-width:200px;z-index:99;}
nav ul li{display:inline-block;}
nav ul li:hover{background-color:#000;}
nav ul li a, visited{color:#FFF; display:block; padding:10px; text-decoration:none;}
nav ul li:hover ul{display:block;}
nav ul ul{display:none; position:absolute; background-color:#222;}
nav ul ul li{display:block;}
nav ul ul li a:hover{color:#fff;}
.menu-fixo{top:0; position:fixed !important; z-index:999;}

/*--------------------Confgurações Destaques--------------------*/

.main{width:1150px; padding:20px; margin:0 auto; height:500px; overflow:hidden;}
.slideshow{width:100%; display:block; height:auto;}
.sld-left{width:65%; height:auto; float:left;}
.sld-right-top{width:35%; height:auto; float:right;}
.sld-right-bottom{width:35%; height:auto; float:right; margin-top:-4px;}
.slideshow a, visited{text-decoration:none; color:#FFF;}
.sld-left h2{float:left; font-size:40px; line-height:43px; font-family:'Roboto', sans-serif; position:relative; top:-150px; left:10px; right:-10px;}
.sld-right-top h2{float:left; font-size:25px; line-height:27px; font-family:'Roboto', sans-serif; position:relative; z-index:99; margin-top:-90px; margin-left:5px; margin-right:-5px;}
.sld-right-bottom h2{float:right; font-size:25px; line-height:27px; font-family:'Roboto', sans-serif; position:relative; top:-90px; left:5px; right:-5px; z-index:1;}
.slideshow h2:hover{text-decoration:underline;}

/*--------------------Configurações dos artigos--------------------*/

.container-conteudo-db-at{width:1110px; margin:0 auto; height:auto;}

.corpo-artigos{width:100%; height:auto; margin:80px 0 0 0; clear:both; float:left;}
.title{margin:0 auto;}
.title p{font-size:25px; font-family:'Open Sans', sans-serif; position:relative; top:-30px;}
.line{border-top: 1px solid #ccc; width:550px;}
.artigos{height:auto; margin:0 auto 90px;}
.artigos a{color:#000;}
.loop{width:600px;}
.artigos h1{font-size:20px; font-family:'Open Sans', sans-serif; font-weight:700; margin-left:200px; margin-top:-120px;}
.artigos h1:hover{color:#4682B4; text-decoration:underline;}
.categoria p{font-size:14px; font-family:'Open Sans', sans-serif; color:#FFF; margin-left:5px; margin-right:-5px;}
.categoria{position:absolute; background:rgba(255,127,0,0.8); width:56px; height:21px; margin-top:101px; margin-left:-56px;}

/*--------------------Configurações da sidebar--------------------*/

aside{background:#ccc; width:332px; height:auto; float:right; margin:-1535px 0 0 0; }
.text-1-sdb{background:#4682B4; float:left; width:332px; height:33px;}
.text-1-sdb p{font-size:20px; font-family:'Open Sans', sans-serif; margin-left:115px; margin-top:1px;}
.social-ctn img{margin-left:5px; margin-top:10px;}
.social-ctn{margin-left:60px;}
.social li{display:inline-block;}
.text-2-sdb{background:#4682B4; float:left; width:332px; height:33px; margin-top:5px;}
.text-2-sdb p{font-size:20px; font-family:'Open Sans', sans-serif; margin-left:100px; margin-top:1px;}
.container-mais-lidas{height:auto;}
.mais-lidas{margin-left:5px;}
.mais-lidas img{width:100px; height:70px; margin-top:4px; position:relative;}
.txt-ctn{float:right; width:250px; margin-right:-28px; margin-top:3px}
.mais-lidas h2{font-size:16px; font-family:'Open Sans', sans-serif;}
.mais-lidas a{color:#000;}
.mais-lidas h2:hover{color:#4682B4; text-decoration:underline;}
.categoria-sdb p{font-size:14px; font-family:'Open Sans', sans-serif; color:#FFF; margin-left:5px; margin-right:-5px;}
.categoria-sdb{position:absolute; background:rgba(255,127,0,0.8); width:56px; height:21px; margin-top:53px; margin-left:-56px;}

/*--------------------Configurações do rodapé--------------------*/
.ir-ao-topo{float:right; cursor:pointer;}

/*--------------------Configurações ver-mais--------------------*/
.container-vmais{width:1110px; margin:0 auto;}
.ver-mais{font-size:22px; font-family:'Open Sans', sans-serif; font-weight:700; float:left; color:#000; margin-top:35px;}
.ver-mais:hover{color:#4682B4; text-decoration:underline;}
/*--------------------Configurações do rodapé--------------------*/

footer{background:#222; width:100%; height:72px; float:left;}
.copy-do-site p{width:460px; margin:0 auto; font-size:13px; font-family:'Open Sans', sans-serif; color:#FFF; margin-top:45px;}
.copy-do-site a{color:#FFF;}
.copy-do-site a:hover{text-decoration:underline;}
.nav-rdp{width:500px; margin:0 auto;}
.nav-rdp ul li{display:inline-block; float:left; font-size:16px; font-family:'Open Sans', sans-serif; padding:7px 0 0 25px;}
.nav-rdp a{color:#FFF;}
.nav-rdp :hover{text-decoration:underline;}
<!doctype html>

<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta charset="utf-8">
<meta content= "Se informe com notícias sobre tecnologia, games, internet, diversão, segurança, informática, programação." name="description">
<title>Dominção Tech</title>
<link rel="stylesheet" href="css/style.css" type="text/css" media="all">
<link rel="icon" href=""/>
<link rel="stylesheet" type="text/css" href="css/jquery.bxslider.css">

Home

Games

Notícias

Playstation

Xbox

Nintendo

Reviews

Mobile

Notícias

Android

IOS

Windows phone

Dicas e ajudas

Informática

Notícias

Windows

Mac

Linux

Computadores

Componentes

Dicas e ajudas

Internet

Notícias

Segurança

Redes Sociais

Diversão

TI

Programação

Novas tecnologias

Dicas e tutoriais

Mercado financeiro

  <form action="search.html" class="search-box clearfix" method="get">
   <input class="search-area" name="q" placeholder="Buscar..." required/>
   <button class="search-button" type="submit" value="Buscar"></button>
 </form>

Lorem Ipsum é simplesmente uma simulação de texto da indústria

Lorem Ipsum é simplesmente uma simulação

Lorem Ipsum é simplesmente uma simulação

Lorem Ipsum é simplesmente uma simulação de texto da indústria

Lorem Ipsum é simplesmente uma simulação

Lorem Ipsum é simplesmente uma simulação

Últimas Notícias

Games

Um usuário conseguiu desbloquear oficialmente o PS4

Games

Um usuário conseguiu desbloquear oficialmente o PS4

Games

Um usuário conseguiu desbloquear oficialmente o PS4

Games

Um usuário conseguiu desbloquear oficialmente o PS4

Games

Um usuário conseguiu desbloquear oficialmente o PS4

Games

Um usuário conseguiu desbloquear oficialmente o PS4

Games

Um usuário conseguiu desbloquear oficialmente o PS4

Games

Um usuário conseguiu desbloquear oficialmente o PS4

Games

Um usuário conseguiu desbloquear oficialmente o PS4

Games

Um usuário conseguiu desbloquear oficialmente o PS4

Siga-nos

As mais lidas

Um usuário conseguiu desbloquear oficialmente o PS4

Games

Um usuário conseguiu desbloquear oficialmente o PS4

Games

Um usuário conseguiu desbloquear oficialmente o PS4

Games

Um usuário conseguiu desbloquear oficialmente o PS4

Games

Um usuário conseguiu desbloquear oficialmente o PS4

Games

 Ver Mais conteúdo

Anuncie

Contatos

Sobre nós

Política de privacidade

© Copyright 2016 - Todos os direitos reservados ao dominacaotech.com.br

Comment: Bem-vindo! Conheceu o mal que assombra todo desenvolvedor front end **:)** Tem muito código para analisar, mas provavelmente um dos motivos são essas declarações com valores em *pixels*. Se você quer criar um layout fluído, vá de [porcentagem](https://www.youtube.com/watch?v=nWJZRbhKosM).
Comment: Olá, esse problema deve ser devido aos valores em pixels, conforme foi falado na resposta acima. Mas mesmo que você não use porcentagem, pode estar resolvendo isso utilizando algum framework, como o Bootstrap que já tem todo um esquema de grid que reduz quase a 0 esses problemas de quebra de layout em outros navegadores. Link para o Bootstrap: [getbootstrap.com]
Comment: Amigo, tente usar isso: https://necolas.github.io/normalize.css/
Comment: Já tentou usar Bootstrap ou grid 960?
Comment: Não pq nãos sei usar ele.
Comment: @GilmarSantos ao invés de usar o protocolo file, use um servidor local como o Apache e teste novamente, navegadores interpretam diferente a localização de resources css.
Comment: Vou criar responsivo, e que eu fiz primeiro para desktop.
Comment: Então tenho que passar para medidas relativas. @JoãoVictor
Comment: Amigo já usei o ccs normalize, mas não adiantou.
Comment: Uma dica que posso te dar, usar bootstrap nunca fará você aprender por que acontece isso. Se quiser aprender resolva seus problemas sem framework, se for algo pra produção que não tem tempo de aprender, aí sim é um motivo válido pra usar bootstrap.  Você tem algum link com essa página online? Analisando o HTML completo é bem mais fácil de encontrar o defeito.
Answer: Pela experiência que tenho, um CÓDIGO BEM ESCRITO tem o mesmo efeito em qualquer navegador, podendo apenas ter alguma pequena variação na renderização da fonte ou outros detalhes mas que não alteram o layout desejado.
Analisando o seu código, ele me pareceu muito pesado e poluído, não respeitando as possíveis variações de interpretação do CSS e das tags que podem ocorrer entre um navegador e outro.
Sugiro que refaça todo o código, de forma concisa e limpa, construindo uma área após a outra (topo, corpo, coluna lateral, rodapé...) e ir testando nos navegadores um por um, e caso haja alguma diferença, procurar saber o que está errado até que fique igual em todos, e em seguida, passar para a próxima área e assim por diante.
Trabalho com front-end há mais de 10 anos e raramente testo meus códigos em outros navegadores (uso o Chrome) pois já sei o que um suporta e o outro não, e assim consigo fazer um código conciso em que o layout fique EXATAMENTE igual em todos.
Não estou julgando seu nível de conhecimento se você um profissional da área ou apenas está se aventurando, mas pelo o que estou vendo, precisa se aprimorar muito ainda. Boa sorte!
Comment: Hoje em dia está mais fácil fazer isso, duvido que ficava igual na época do Internet 6 ou 7 hehe, mas enfim, seria legal você adicionar algumas dicas técnicas mais focadas para o problema dele, por exemplo, como criar estruturas no HTML para estilos diferentes e organização do código, etc, ficaria com a reposta mais completa e agregaria um valor maior à comunidade.
Comment: +1. dentro do que a pergunta diz, não conseguiria imaginar muito mais o que dizer. Entendo a pergunta como ampla demais para ser respondida em uma postagem apenas. Seria legal se o autor da pergunta resolvesse um problema por vez, em perguntas separadas, e fosse fazendo o site passo a passo, conforme o conhecimento permite.
Comment: Ainda sou novo em desenvolvimento de sites, ainda estou estudando css e html, obrigado pelo concelho


React js src attribute is not updating

Question: I have a Component Img that receives an image file. The component reads the file and puts a base64 result into my state.base64 variable.
When I forceUpdate the state and log the values, the result is there, but in browser it looks empty. Here is my code.
Jsbin code
Comment: your jsbin is missing an "app" id in the HTML.
``
Answer:
The problem is with this part of the code:
return (

);

If you log this.props, you'll see there is a src prop with a value of null. So, {...this.props} is overwriting the explicit src prop you're setting.
You can either change the order so the more specific props come last:
return (

);

or create an object from this.props with the src attribute removed.
See http://jsbin.com/rutokutemi/2/edit for a working example.

React js src attribute is not updating


Como utilizar TFDJSONDataSets no Delphi XE4?

Question: Explicação
Hoje eu estava vendo um exemplo chamado FireDACJSONReflect na pasta Samples do Delphi XE6 e eu vi que era muito interessante a forma que o servidor se comunicava com o cliente e eu gostaria de utilizar esse meio na minha aplicação utilizando TFDMemTable para popular os dados da minha DBGrid, e também vi que era a única maneira "direta" de realizar comunicação com minha TIWDBGrid(componente de DBGrid dos componentes IntraWeb(IW)).
** Minha aplicação é um servidor feito em delphi-xe4 e um cliente feito em delphi-xe6 **
Problema
Todavia, minha aplicação não usa delphi xe4, por isso nao sei como fazer essa comunicação pelo fato que o delphi xe4 não possui o Data.FireDACJSONReflect para adicionar no uses por isso não tenho o objeto TFDJSONDataSets e aí que está meu problema...

Tem como utilizar o TFDJSONDataSets no Delphi XE4?
Tem como popular os dados do  TFDMemTable sem o uso do TFDJSONDataSets?

Algum código
Aqui eu possuo algumas linhas de código que utilizadas em um servidor datasnap delphi xe6 funcionariam porem o meu está em xe4:
function TDSSMetodoFinanceiro.getCotacaoLista : TFDJSONDataSets;
var
  FDQCotacaoLista : TADQuery;
begin
  Result := TFDJSONDataSets.create;
  TFDJSONDataSetsWriter.listAdd(result, FDQCotacaoLista);
end;

E la vem a pergunta, porque eu quero que minha função retorne um TFDJSONDataSet?
Isso é porque eu tenho um TFDMemTable na minha aplicação cliente no delphi xe6 e eu preciso popular ele com dados utilizando .appendData e isso aparentemente precisa de um TFDJSONDataSet para fazer isso (talvez exista outra forma e eu gostaria muito de saber caso exista, mas até o momento só conheço esta).
Comment: @PauloRoberto como o mínimo é 100 pra poder por um bounty meu nessa, vou pensar num plano B pra vc nao perder todo o investimento.
Comment: Cara, dei uma pesquisada e falei com um pessoal que manja de Delphi e, pelo que entendi, você só consegue fazer isso do XE5 em diante
Comment: Pois é, só que eu gostaria de uma solução alternativa para realizar a comunicação direta entre minha aplicação xe6 e o meu servidor xe4
Comment: Upgrade do seu datasnap para o XE5 em diante resolveria... o que é uma otima coisa...
Comment: O problema é que eu realmente não posso fazer isto @Daniloloko
Comment: Ninguém vai responder? os 150 pontos de reputação irão expirar...
Comment: @Bacco tá certo, infelizmente ninguém achou nada então ao menos vc trouxe um conteúdo existente pra ca(a resposta do soen)
Comment: @PauloRoberto vc ainda está com este problema pra resolver, ou resolveu de outra forma?
Comment: resolver de outra forma eu resolvi porém eu gostaria de fazer da forma que eu pedi acima...
Answer: TFDJSONDatasets foi introduzido no XE6, infelizmente não há como usar no XE4.  talvez o caminho seja uma FDMemtable em vez disso.
Ha um tutorial de XE5 que talvez sirva pro XE4.
Aqui tem um exemplo usando ClientDataset, tente e veja se serve.


Finding isometries of a manifold $M$ which has Euclidean geometry

Question:
How do you find the isometries of a manifold $M$ with metric $ds^2=\frac{du^2}{u^2}+\frac{dv^2}{v^2}?$

Observe that $ds^2$ is of the form $ds^2=g(u)du^2+f(v)dv^2.$ This means that the metric must describe a Euclidean geometry. In fact with more work we can show that $ds^2$ is a transported metric from the familiar $\Bbb R^2$ to $M:=\Bbb R^2_+$ via $\exp.$ I calculated the pullback via an immersion here:
\begin{align}
 (f^{-1})^* (dx^2 + dy^2) &=( d((f^{-1})^*x))^2 + ( d((f^{-1})^*y))^2 \\
&= (d (x\circ f^{-1}))^2 +(d (y\circ f^{-1}))^2 \\
&= (d \log u)^2 +(d\log v)^2 \\
&= \left( \frac{1}{u} du\right)^2 +  \left( \frac{1}{v} dv\right)^2 \\
&= \frac{1}{u^2} du^2 + \frac{1}{v^2} dv^2.
\end{align}
Now I know that the isometries of $M$ are basically the isometries of $\Bbb R^2$ in disguise.
I figured out that translation in $\Bbb R^2 \implies (x+a,y+b)$ has analogue in $M \implies (ax,by).$

Rotation in $\Bbb R^2 \implies
\begin{bmatrix}
\cos \theta & -\sin \theta \\
\sin \theta & \cos \theta \\
\end{bmatrix}(x,y)$ has what analogue in $M?$

I couldn't figure this one out.
Answer: You have shown that:
\begin{align}
f \colon (\mathbb{R}_+^*\times \mathbb{R}_+^*,g) &\longrightarrow (\mathbb{R}^2,\mathrm{can})\\
(u,v) & \longmapsto (\ln u, \ln v)
\end{align}
is an isometry. Let $\theta \in \mathbb{R}$ and $R_{\theta}$ be the corresponding rotation in $\mathbb{R}^2$. Then:
\begin{align}f^*R_{\theta}(u,v) &= f^{-1} \left(R_{\theta}f(u,v)\right)\\
&= f^{-1}\left(\cos \theta \ln u +\sin\theta \ln v, -\sin \theta \ln u + \cos \theta \ln v \right) \\
 &= \left(\exp \left(\cos \theta \ln u +\sin\theta \ln v \right), \exp\left( -\sin \theta \ln u + \cos \theta \ln v\right) \right)\\
&= (u^{\cos \theta}v^{\sin \theta}, u^{-\sin\theta}v^{\cos\theta}).
\end{align}
Also, translations $(x,y) \mapsto (x+a,y+b)$ become $(u,v)\mapsto (e^au,e^bv)$.


Node form redirect based on submit button value

Question: I've read and experimented with several ways to redirect a form once submitted. However, I only want to redirect a node form if the operation is t('Save').
If I set $form['#redirect'] = 'blah' in form_alter, it will redirect on all types of form submits. If I add a submit handler and then set $form_state['redirect'], this just gets overridden by drupal's node_form_submit.
What is the correct way to redirect a node submit only if the submit operation was say t('Save')?
NOTE: I found out that the generic form_alter attempt of $form['#redirect'] interferes with the node delete submit handler, as it has to redirect to node/%node/delete. So hence I am looking for a more accurate method.
Answer: The answer was to attach my submit handler to the submit button rather than the form, and then the $form_state['redirect'] would work as needed.
Comment: @zerolab you are correct, yet I am only allowed to do this after a certain time period ;)


Compute $\int_{|z|=1}\frac{\log z}{z}dz$.

Question: Here is a question about contour integration in complex analysis:

Compute
  $$\int_{|z|=1}\frac{\log z}{z}dz$$

I am not sure if I understand the question since the logarithm must be defined in a simply connected domain $\Omega$ with $0\notin\Omega$ and $1\in\Omega$. Hence, we cannot define $\log$ for every value in the circle $|z|=1$; there must be at least one point where it is not defined. However, if I forget this and consider the principal branch, I can compute
$$\int_{|z|=1}\frac{\log z}{z}dz = \int_{-\pi}^\pi \frac{\log e^{i\theta}}{e^{i\theta}}ie^{i\theta}d\theta = \int_{-\pi}^\pi i\theta id\theta=-\frac{\theta^2}{2}\bigg\vert_{-\pi}^\pi=0$$
Is this right?
Comment: Yes. Now choose a different parameter interval, say $[0,2\pi]$.
Comment: Strange. The integrand isn't well-defined, it cannot be defined continuously on the contour, lots of problems one would expect some words about.
Comment: You can try the interval $[\frac{\pi}{4},\frac{9\pi}{4}]$.
Comment: @DanielFischer We always get the same result. Can we prove it in general then?
Comment: Aaargh, I understand. I meant you should adapt the branch of the logarithm to the parameter interval. Anyway, it's an ill-defined integral. In what context did you come across it?
Comment: @DanielFischer This came from a practice exam for a course in complex analysis. I copied the question as is. There is no other information...
Comment: @DanielFischer OK. In the same "practice exam" the professor ask to compute an integral using residue. But I checked and the integral isn't even convergent !!! I think this practice exam is just total crap. Sorry to waste your time. I just hope the exam will not be as crappy !
Comment: @Spenser How not-convergent is the integral? Maybe it ought to be interpreted as a principal value, that often makes sense.
Comment: @DanielFischer The integral is: $$\int_{-\infty}^{\infty}\frac{x[\sin^2(2x) + \cos(2x)]}{x^2+3}dx$$
Comment: That makes sense as a principal value. **BUT** the integrand is odd, so the PV is $0$, it's a terrible example for using the residue theorem.
Answer: The analysis is not quite complete because, generally, the contour must not enclose the branch point at $z=0$.  Because the example above does, you are getting any number of "answers."  Consider the case when $\arg{z} \in [0,2 \pi)$.  A naive evaluation of the integral produces
$$i \int_0^{2 \pi} d\theta \, e^{i \theta} \frac{i \theta}{e^{i \theta}} = -2 \pi^2 \ne 0$$
The problem of course lies in the multivaluedness of the integrand.  A correct approach excludes the log from the interior of the contour.  One approach is to consider a keyhole contour $C$ of outer radius $1$ and inner radius $\epsilon$ about the positive real axis:
$$\oint_C dz \, \frac{\log{z}}{z}$$
This contour integral is equal to
$$i \int_0^{2 \pi} d\theta \, e^{i \theta} \frac{i \theta}{e^{i \theta}} + \int_1^{\epsilon} dx \frac{\log{x}+i 2 \pi}{x}  + i \epsilon \int_{2 \pi}^0 d\phi \, e^{i \phi} \frac{\log{\epsilon}+i \phi}{\epsilon e^{i \phi}} + \int_{\epsilon}^1 dx \frac{\log{x}}{x}$$
which in turn is equal to
$$-2 \pi^2 + i 2 \pi \log{\epsilon} -i 2 \pi \log{\epsilon} + 2 \pi^2 = 0$$
as expected, as there are no poles in the interior of $C$.  This type of analysis works for any branch cut definition for the log.
Answer: $\newcommand{\bbx}[1]{\,\bbox[15px,border:1px groove navy]{\displaystyle{#1}}\,}
 \newcommand{\braces}[1]{\left\lbrace\,{#1}\,\right\rbrace}
 \newcommand{\bracks}[1]{\left\lbrack\,{#1}\,\right\rbrack}
 \newcommand{\dd}{\mathrm{d}}
 \newcommand{\ds}[1]{\displaystyle{#1}}
 \newcommand{\expo}[1]{\,\mathrm{e}^{#1}\,}
 \newcommand{\ic}{\mathrm{i}}
 \newcommand{\mc}[1]{\mathcal{#1}}
 \newcommand{\mrm}[1]{\mathrm{#1}}
 \newcommand{\on}[1]{\operatorname{#1}}
 \newcommand{\pars}[1]{\left(\,{#1}\,\right)}
 \newcommand{\partiald}[3][]{\frac{\partial^{#1} #2}{\partial #3^{#1}}}
 \newcommand{\root}[2][]{\,\sqrt[#1]{\,{#2}\,}\,}
 \newcommand{\totald}[3][]{\frac{\mathrm{d}^{#1} #2}{\mathrm{d} #3^{#1}}}
 \newcommand{\verts}[1]{\left\vert\,{#1}\,\right\vert}$
$\ds{\bbox[5px,#ffd]{}}$

\begin{align}
&\bbox[5px,#ffd]{\oint_{\verts{z}\ =\ 1}
{\ln\pars{z} \over z}\,\dd z}
\\[5mm] = &\
\lim_{\epsilon\ \to\ 0^{+}}\,\,\left[-\int_{-1}^{-\epsilon}{\ln\pars{-x} + \ic\pi \over x}\,\dd x -
\int_{\pi}^{-\pi}{\ln\pars{\epsilon} + \ic\theta \over \epsilon\expo{\ic\theta}}\,\epsilon\expo{\ic\theta}\ic\,\dd\theta\right.
\\[2mm] &\
\phantom{\lim_{\epsilon\ \to\ 0^{+}}\,\,\left[\,\,\right.}\left.
-\int_{-\epsilon}^{-1}{\ln\pars{-x} - \ic\pi \over x}\,\dd x
\right]
\\[5mm] = &\
\lim_{\epsilon\ \to\ 0^{+}}\,\,\braces{%
-2\pi\ic\ln\pars{\epsilon} + \ic\int_{-\pi}^{\pi}
\bracks{\ln\pars{\epsilon} + \ic\theta}\dd\theta} =
\bbx{0} \\ &
\end{align}


File executable Segmentation Fault

Question: I have following type of file:
File Type: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped
MIME Type: application/x-executable,
with
Permission:  -r-xr-xr-x 1 root root 16725 Apr  9 23:08 /var/www/irisreg
Getting the 'Segmentation Fault' error when executing through terminal (./irisreg).
The server is 64-bit Ubuntu LTS 12.04
Answer: It's a 32-bit binary that you're trying to run on a 64-bit host.
Did you install the 32-bit shared libraries? I don't have access to a test system at the moment, but I believe the package name is "ia32-libs" or similar.
Comment: That already installed.

File executable Segmentation Fault


Help interpreting short / truncated calibration curve

Question: How is the "shortness" of the curve interpreted? I have seen studies that just crop this plot and declare "good calibration," but is it?  The classifier never predicts above 0.6 in either the training or testing data.  The classes are imbalanced, by the way: might this have something to do with the fact that $P(X|Y) \propto  P(Y|X)P(X)$ and $P(X)$ is very low?
Answer: Your method appears reasonably calibrated up through 0.6, but you don't know much for higher predicted probabilities...looks like your model just isn't very confident..but it's calibrated
Comment: @user99889 that it appears effective at ruling out disease but not detecting it.
Comment: @user99889 ok. Say your classifier predicts 5%, then, because its well calibrated you know there is a low chance of disease. However, either the algorithm or your training set do not allow a confident diagnosis (>95%) of the presence of the disease.
Comment: @user99889 yes, because your model appears to be calibrated at the low range.
Comment: Suppose the model is estimating the probability of a disease.  What can we conclude based on this then?
Comment: could you elaborate more formally  in your answer on how you came to these conclusions? Especially examples might help.
Comment: Aha. Ty.  But if it predicts 1% for patient A and 5% for patient B, we can say that B has a 5-fold higher risk of the disease?


Show/Hide Column in Views Table

Question: Is there any way I can show/hide entire column in Views Table?
Exclude from Display completely excludes the column which is not possible to show again, so, I am using Views Dynamic Fields Module to exclude the column initially and showing it when the filter is checked. Like in the picture, the initial view when Column is hidden using Views Dynamic Fields module.

When the Nick Name checkbox is checked the column is shown like:

However, I want to hide the Name Column entirely when Nick Name is shown.
I initially tried it with jQuery like:
// Hide the Name Column when Nick Name is shown
$('#edit-dyfield-field-girls-nickname').change(function() { // id of checkbox
                if ($('#edit-dyfield-field-girls-nickname').is(':checked')) {
                    $('.views-field-title').hide(); // Title points to Name field so all the th td have this class in Name
                }
            });

But it hides both Name and Nick Name for a while, and shows both fields again.
Any solution Drupal based or some tricks with jQuery/JavaScript would be fine, thank you.
Answer: I am not sure if this is The Drupal Way to fix this, but I fixed it with jQuery hide() and show().
// Hide the Name Column when Nick Name is shown
$('#edit-dyfield-field-girls-nickname').change(function() {
                if ($('#edit-dyfield-field-girls-nickname').is(':checked')) {
                    $(document).ajaxStop(function() { // Forcefully stopping Ajax function in the page as other ajax load was main culprit in my case
                        $('.views-field-title').hide();
                    });
                }

                if ($('#edit-dyfield-field-girls-nickname').is(':not(:checked)')) {
                    $(document).ajaxStop(function() {
                        $('.views-field-title').show();
                    });
                }

            });

Note: In the above example jQuery toggle() doesn't work, so, I have to put 2 if(){} statements for Check and UnCheck.
Answer: You could use Views MediaTable module.
Not sure if this is the exact use case you are after. this will allow the user to select the columns they want to see.

Views MediaTable integrate the functionality of
  MediaTable(http://consulenza-web.com/jquery/MediaTable/) into the
  Views module Table display, allowing the creation of dynamic &
  responsive Views tables where end users can choose to show or hide
  certain columns. This module also allows certain table column to
  behave responsively, hiding the less relevant data in smaller screen
  sizes.

The js code you used should also do the trick. But the issue you are facing is due to ajax loading. so you will have to put in drupal behavior so it gets called even after the ajax call.
You can check out the below link for more information regarding adding js
Managing JavaScript in Drupal 7
Comment: I have already used that module, its great for responsive table when the size of viewport shrinks, it hides the columns entirely, but it doesn't have option to use how I want with checkbox.
Comment: Can you please elaborate this line **you will have to put in drupal behavior so it gets called even after the ajax call** I guess I am stuck here, if you could help me do this then `jQuery` trick is fine. BTW I have that **jQuery** code inside
`(function($, Drupal, window, document, undefined) {
Drupal.behaviors.my_custom_behavior = {
        attach: function(context, settings) {
// Mycode
})(jQuery, Drupal, this, this.document);`
Comment: Let me get your requirement correct. you want a check box and when it is clicked you want to hide name and display nickname. and when unchecked you want to display the name and hide the nickname. Is that right?
Comment: yes sir, that's what I have been trying to acheive

Show/Hide Column in Views Table


Where can I get this HTML editor

Question: Hey I see a HTML editor here killerthoughts.com. Where can I get it?? Or anything like it?
Thanks
Comment: I can't believe I didn't check the src:-/. Thanks
Answer: The page source says that it's CKEditor.
Answer: Its a WYSIWYG editor.
You can take a look at
CKEditor
TinyMCE
YUI Rich text editor.
Answer: This is the ckeditor
http://ckeditor.com/
Answer: It's called the CKEditor.

Where can I get this HTML editor


Jtable cell selection and highlighting

Question: I have an attached code, it working but with a little issue. I'm able to highlight a cell with blue color. What I want is after highlighting a single cell with a blue color I want to be able to un-highlight the same cell by clicking it again. For example when I highlight cell 1, it will be highlighted with blue but when I click it again it won't be un-highlighted  unless I click another cell then click cell 1 again.
How can I fix this problem.
In the code I'm only testing cell 1 to 4.

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

public class myJTable extends JFrame {

    Container container;
    JTable table;
    JScrollPane pane;

    static String oneSelected = "";
    static String twoSelected = "";
    static String threeSelected = "";
    static String fourSelected = "";

    int oneCount = 0;
    int twoCount = 0;
    int threeCount = 0;
    int fourCount = 0;

    public myJTable() {

        container = this.getContentPane();
        container.setLayout(new BorderLayout());

        String[] columnNames = {"No.1","No.2", "No.3", "No.4"};
        Object[][] rowData = {{"1", "2", "3", "4"},
            {"5", "6", "7", "8"},
            {"9", "10", "11", "12"},
            {"13", "14", "15", "16"},
            {"17", "18", "19", "20"}};

        table = new JTable(rowData, columnNames);
        table.setRowHeight(50);
        table.setDefaultRenderer(Object.class, new TableRenderer());
        table.setCellSelectionEnabled(true);
        pane = new JScrollPane(table);
        container.add(pane);

           table.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(final MouseEvent e) {
        if (e.getClickCount() == 1) {
        final JTable jTable= (JTable)e.getSource();
        final int row = jTable.getSelectedRow();
        final int column = jTable.getSelectedColumn();
        final String cellValue = (String)jTable.getValueAt(row, column);
        //textfield.setText(valueInCell);

        if (cellValue.equals("1") && oneCount == 0) {
        oneSelected  = cellValue;
        oneCount++;
        System.out.println("cell value is " +oneSelected);
        System.out.println("one count is " +oneCount);
        }
        else if (cellValue.equals("1") && oneCount >= 1) {
        oneSelected  = "";
        oneCount = 0;
        System.out.println("cell value is " +oneSelected);
        System.out.println("one count is " +oneCount);
        }

            if (cellValue.equals("2") && twoCount == 0) {
          twoSelected  = cellValue;
          twoCount++;
          System.out.println("cell value is " +twoSelected);
        }
            else if (cellValue.equals("2") && twoCount >= 1) {
        twoSelected  = "";
        twoCount = 0;
        System.out.println("cell value is " +twoSelected);
        System.out.println("two count is " +twoCount);
        }

            if (cellValue.equals("3") && threeCount == 0) {
          threeSelected  = cellValue;
          threeCount++;
          System.out.println("cell value is " +threeSelected);
           }
            else if (cellValue.equals("3") && threeCount >= 1) {
        threeSelected  = "";
        threeCount = 0;
        System.out.println("cell value is " +threeSelected);
        System.out.println("three count is " +threeCount);
        }

            if (cellValue.equals("4") && fourCount == 0) {
         fourSelected  = cellValue;
         fourCount++;
         System.out.println("cell value is " +fourSelected);
           }
            else if (cellValue.equals("4") && fourCount >= 1) {
        fourSelected  = "";
        fourCount = 0;
        System.out.println("cell value is " +fourSelected);
        System.out.println("four count is " +fourCount);
        }
        }
        }
        });
    }

    public static void main(String[] args) {

        myJTable frame = new myJTable();
        frame.setTitle("JTable Example");
        frame.setVisible(true);
        frame.setSize(700, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

class TableRenderer extends DefaultTableCellRenderer {

    @Override
   public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {

    String oneSValue = myJTable.oneSelected;
    String twoSValue = myJTable.twoSelected;
    String threeSValue = myJTable.threeSelected;
    String fourSValue = myJTable.fourSelected;

    Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

        if (value.equals(oneSValue) || value.equals(twoSValue) || value.equals(threeSValue) || value.equals(fourSValue)) {
            c.setBackground(Color.BLUE);
            c.setForeground(Color.WHITE);
          }
        else {
        c.setBackground(Color.WHITE);
        c.setForeground(Color.BLACK);
        }

        return c;

    }
}

FIRST EDIT:
I've edited the code and used the boolean variable isSelected to print whether the cells boolean 2D array changes from false to true but does not change
class TableRenderer extends DefaultTableCellRenderer {

@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {

boolean cells[][] = new boolean [4][4];

Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

if(isSelected) {
if(cells[0][0] == false) {
System.out.println("cell 0 0 is " + cells[0][0]);
cells[0][0] = true;
}
else if(cells[0][0] == true) {
System.out.println("cell 0 0 is " + cells[0][0]);
}
}

return c;
}
}

Comment: *when I highlight cell 1, it will be highlighted with blue but when I click it again it won't be un-highlighted unless I click another cell then click cell 1 again* - So Is the requirement that only one cell can be highlighted at a time?
Comment: I want to highlight cells one by one, then un-highlight each cell by clicking on it again. The problem is when I click a cell it is highlighted but when I click it again to un-highlight it, it won't be un-highlighted unless I click another cell. I do have a condition set within a mouse listener.
Comment: Keeping variable like "oneCount, twoCount..." is the wrong approach as this can get unmaintainable as the grid size increases. I would keep a 2D Array of boolean values to indicate whether a cell should be highlighted or not. A mouse pressed on the cell would toggle the value. The renderer would check the value do the the highlighting.
Comment: I'm a bit confused, can you please elaborate or give some example
Comment: In your renderer you keep a 2D Array to represent the state of each cell. You already have a MouseListener. You already know the row/column of the cell. So you then toggle the state of the cell in the renderer and invoke repaint() on the table.. You add code to the renderer to highlight the cell based on the state of the cell.
Comment: I initialized the 2D boolean array and it should be false by default. When I assign it to true I get the exception "java.lang.ArrayIndexOutOfBounds Exception"

boolean cells[][] = new boolean[row][column];
cells[row][column] = true;

How should I add it in a mouse listener and renderer?
Comment: In the constructor of your renderer you need to create the 2D Array based on the size of your table, which appears to be 4x4.  In your renderer you also need a method like "toggleCellHighlight(row, column). Now, in the MouseListener you invoke this method for the specific row/column. Also, you can't just set it to "true" because you also need the ability to reset it to "false" when you click on the cell again. Post a proper [mre] showing your attempt if you need more help.
Comment: I've edited the code and used the boolean variable isSelected to print whether the cells boolean 2D array changes from false to true but does not change so I can use the boolean on the change color method.
Comment: @camickr _In your renderer you keep a 2D Array to represent the state of each cell_ ehh .. no: I would argue that keeping table state is __not__ the task of a renderer, all it might do is compare it's own location with some state of the table and configure itself accordingly. Maybe misunderstanding both the requirement and and your comment, though :)
Comment: also unrelated: please keep the your tags focused .. uitableView is clearly documented to be about iOS ..
Comment: @kleopatra don't disagree that normally a renderer is generic and can be used by any table so it should not track state information. In this case we need custom data to track the highlight state of each cell. We then need the ability to toggle the state and finally render the state. I was thinking that it might be easier to have a single class handle this functionality, instead of having the logic split in multiple classes. In any case I made a simple example below which maybe you can improve upon.
Answer: In the example below the "state" of the highlight is contained in a 2D Array that has been added as data to the table by using a "client property".
The MouseListener is used to toggle the highlighting state every time you click on a cell.
The renderer will then query the highlighting state in order to paint the background.
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.event.*;

public class TableHighlight extends JPanel
{
    public TableHighlight()
    {
        setLayout( new BorderLayout() );

        JTable table = new JTable(4, 4);
        add( new JScrollPane( table ) );

        boolean[][] highlights = new boolean[4][4];
        table.setDefaultRenderer(Object.class, new TableRenderer());
        table.putClientProperty("highlights", highlights);

        table.addMouseListener(new MouseAdapter()
        {
            @Override
            public void mousePressed(final MouseEvent e)
            {
                JTable table = (JTable)e.getSource();
                int row = table.getSelectedRow();
                int column = table.getSelectedColumn();

                boolean[][] highlights = (boolean[][])table.getClientProperty("highlights");
                highlights[row][column] = !highlights[row][column];

                table.repaint();
            }
        });
    }

    private class TableRenderer extends DefaultTableCellRenderer
    {
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {

        Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

        boolean[][] highlights = (boolean[][])table.getClientProperty("highlights");
        boolean highlighted = highlights[row][column];

        if (highlighted)
            c.setBackground(Color.BLUE);
        else
            c.setBackground(Color.WHITE);

        return c;
    }
}

    private static void createAndShowGUI()
    {
        JFrame frame = new JFrame("TableHighlight");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new TableHighlight());
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.pack();
        frame.setLocationByPlatform( true );
        frame.setVisible( true );
    }

    public static void main(String[] args) throws Exception
    {
        java.awt.EventQueue.invokeLater( () -> createAndShowGUI() );
    }
}

Comment: as long as the state is not kept in the renderer, any solution is good (or bad) as the other - particularly as long as we (or me at least ;) can't be really certain that highlight != selected :)
Comment: Sorry to respond late. Thank you for the answer and everyone's contributions.

Jtable cell selection and highlighting


Bash: Read into multiple local scope variables

Question: According to this answer: https://stackoverflow.com/a/1952480/582917
I can read in and therefore assign multiple variables.
However I want those variables to be local to a bash function so it doesn't pollute the global scope.
Is there a way to do something like:
func () {
    local read a b <<< $(echo 123 435)
    echo $a
}
func
echo $a

The above doesn't work. What is a good way of reading into local variables?
Answer: You were almost there: you just have to define the variables as local, but beforehand instead of in the read declaration:
func () {
     local a b
     read a b <<< $(echo 123 435)
     echo $a
}

Test
$ func
123
$ echo $a
$

Answer: Just declare the variables to be local on one line, and use them on a separate line:
$ a=5
$ func() {
    local a b
    read a b <<< "foo bar"
    echo $a
}
$ func
foo
$ echo $a
5


Access php arrays within arrays

Question: I am trying to access arrays within arrays but don't know how so plz help me.
The values  $row[0],$row[1],....  are representing columns of database and I am inserting all of it in $rows[] array.
Now I want to access these values and don't know how.So please help me.
<code>        while($row=mysql_fetch_array(self::$results))
        {
            $rows[] = array ('CompanyID' => $row[0],
                             'CompanyName' => $row[1],
                             'CompanySlogan' => $row[2],
                             'CompanyDescription' => $row[3],
                             'CompanyRating' => $row[4],
                             'CompanyDpPath'  => $row[5],
                             'CompanyOtherInfo' => $row[6],
                             'CompanyFollowers' => $row[7]);
        }
</code>
The data is being hold in the following manner
<code>Array ( [0] => Array ( [CompanyID] => 3 [CompanyName] => s [CompanySlogan] => s [CompanyDescription] => and so on.
</code>
Comment: before the while loop add an variable wich equals an empty array to dump those subarrays in it. $buffer = array(); . And in the while loop use that array {

$buffer[] = array(....

}
Answer: As simple as
<code>$rows[0]['CompanyID']
</code>
Comment: @Mj1992 Then it is really 22. The data doesn't lie.
Comment: @Mj1992: `var_dump($rows);` - this function helps you to become a real programmer: the guy who doesn't guess but knows for sure
Comment: thnx for the answer but what if I want only single value because I've two records of companyId and it is returning me both of them.like if companyid is 2 it is giving me 22 as answer and I want single 2 at a time
Comment: `Array ( [0] => Array ( [CompanyID] => 3 [CompanyName] => s )) Array ( [0] => Array ( [CompanyID] => 3 [CompanyName] => s ))` it is showing data in the following manner you can see that companyID is appearing multiple times and I want to access the first one and second one differently
Comment: @Mj1992: it is not `var_dump` for `$rows`. It is `var_dump` for some another variable (or you've shown us another code)
Comment: Sry I didn't understand what you said.
Comment: @Mj1992: I asked for `var_dump($rows);`. And you've shown something other. Have you read php documentation about how to work with arrays? http://nz.php.net/manual/en/language.types.array.php
Comment: thnx understand what you said.`var_dump` is very helpful.

Access php arrays within arrays


Generating a random UUID and getting the version

Question: I am trying to generate a UUID to a string, so that when I enter uuidcreaterandom, it will create a random UUID. I have pasted below what I tried, and am I missing something ? Any pointers much appreciated. Thank you..
public UUID uuidCreateRandom() {
    return UUID.randomUUID();
}

public UUID uuidCreateFromHexString(String uuid) {
    return UUID.fromString(uuid);
}

public String uuidCreateRandom(UUID uuid) {
    return uuid.toString();
}

public int uuidGetVersion(UUID uuid) {
    return uuid.version();
}

public UUID get_uuid() {
    return _uuid;
}

public String get_uuidString() {
    return _uuidString;
}

public int get_uuidVersion() {
    return _uuidVersion;
}

public void set_uuid() {
    _uuid = UUID.randomUUID();
}

public void set_uuidString(UUID uuid) {
    _uuidString = uuid.toString();
}

public void set_uuidVersion(UUID uuid) {
    _uuidVersion = uuid.version();
}

Answer: It's not super clear what you're asking but the following code will generate a random UUID and get the string representation and version:
Scanner scanner = new Scanner(System.in);
while (true) {
   String line = scanner.nextLine().trim();
   if (line.equals("uuidcreaterandom")) {
      UUID uuid = UUID.randomUUID();
      String str = uuid.toString();
      System.out.println(str);
   }
}


Puppet masterport

Question: You can have Puppet listen on a custom port as port 80 instead of 8140 as I have seen it.
It can be set in etc/puppet/puppet.conf as

masterport=80

There is a command, don't know if I use it right puppet agent --server puppetmaster --masterport 80 to tell the agent to listen on port 80. Yet after changing the conf file on the master and restarting puppet it still listens on port 8140 on the master.
Reference:

Puppet Configuration
Answer: The change needs to be done in these two configuration files:
/etc/puppet/puppet.conf
[main]
...
user=root
masterport=80

/etc/default/puppet
...
PORT=80

Puppet masterport


What is this "< >" behind a method means?

Question: Like this:
var result1 = GetData<double>(someString);
var result2 = GetData<string>(someString);

What is this meant?
< >

How to return data?
public object GetData<Type>(string a)
{
    // How do I know I should return this...

    return 2.2;

    // or this?

    return "2.2";
}

Answer: What you're seeing here is called Generics. You can read about them in detail at the MSDN. In short, you can specify a Type Parameter along with your method. Based on the type, different code paths can be adopted. Read the link for examples and such.
In your particular case, the return type is independent of the type parameter. You are dealing with two different things. So, while returning, you can use any of those two statements.
return 2.2;

This will return a long 2.2. While the other statement will return a string which is "2.2". Since your return type is Object, both are acceptable. Though you haven't said that in problem, what you're looking for is something like this:
//Your generic GetData method
public TEntity GetData<TEntity>(string arg1)
{
    var toReturn;
    //Do some calculations
    return (TEntity)toReturn;
}

Now, when you make a call like this:
var t = GetData<string>(string1);

variable t will hold a string. If you do a call like this:
var t = GetData<int>(string1);

variable t will hold and int.
Answer: This is a type parameter for generic method.
Comment: You mean the type *argument*. The type *parameter* occurs at the declaration. (For example, `T` is a type parameter in the declaration for `List`, but `string` is the type *argument* in the use of `List`.)
Answer: The term you're looking for is Generics. These are type arguments into the method, which mean that the method/class can work with specific types in a type-safe manner rather than falling back to everything being object (which also has a performance impact with boxing/unboxing).
From the C# guide:

Generics allow you to define type-safe data structures, without
  committing to actual data types. This results in a significant
  performance boost and higher quality code, because you get to reuse
  data processing algorithms without duplicating type-specific code.

A few quick links:

.NET Generics in a Nutshell
An Introduction to C# Generics
Answer: That symbol after a method called Generic Method. It will defer the type inference during runtime.
Your GetData may be rewritten as below provided that you control the calling method as
GetData<float>("2.2")
GetData<string>("2.2")

public static T GetData<T>(string a)
        {
            return (T)Convert.ChangeType(a, typeof(T));
        }


Catch the English name of a translated taxonomy term (token)

Question: I'm building up a multilingual website (Drupal 7) with Locale and Content translation modules enabled for nodes. The node category is managed thru a content_area field (taxonomy term thru Entity Reference module), which is translated with Entity Translation and Title modules in order to have a translated path in URL (using Pathauto module). Everything goes as expected, the content_area is translated in URL, in the breadcrumb and in the tags area.
As each node manages more images, shared among languages, we've built a file folders structure which comply with paths (not equal but similar) in order to keep a clean images structure, using File (Field) Paths module.
Problems arise: if the content_area field (taxonomy term) is untranslated (i.e. English), we have only one folder for images of all languages (as expected), but if we translate the content_area field we get a translated folder keeping images, as we do not want.
When setting up File (Field) Paths for images field in File path, we expected to find a token related to the untranslated/translated [node:field_content_area:name], with no luck. Even [node:source:field_content_area] cannot work and do not work, as we cannot know if the editor building up the node content will begin ('source') from English or from another language.
I hope I have been clear, it is my first post.
Thanks in advance
Comment: Did you try i18n_taxonomy module?
Comment: I did try, but when I enabled it, without entity translation, I was not able to get a translated path. Should I try both modules enabled (18n_taxonomy AND entity_translation + title for taxonomy term)? My idea was to look for a token language-related
Comment: I've tried again the i18n_taxonomy module, together with entity_translation for taxonomy term (we need path translated) and problem with translated folder for images remains, no token for English-only folder to apply to File (Field) Paths
Answer: Decipher's blog suggested the answer: I initially created a custom module to define a custom token to use in FileField Paths, and then I installed Custom Tokens module, and created same token as before.
Both methods worked, and at the end I'll use second method (installing Custom Tokens module, without my custom module), as it will be easier to create other tokens when needed.
Method 1:
<code>/**
 * Implements hook_token_info().
 * gw_content_area_en is the token used as [node:gw_content_area_en]
 */
function MODULENAME_token_info() {

    $info['tokens']['node']['gw_content_area_en'] = array(
      'name' => t('Gw Content Area EN'),
      'description' => t('English version of field_gw_content_area'),
    );

    // Return associative array of tokens & token types
    return $info;

}

/**
 * Implements hook_tokens().
 */
function MODULENAME_tokens($type, $tokens, array $data = array(), array $options = array()) {
  $replacements = array();

  // Check if token type is node
  if($type == 'node'){
    foreach ($tokens as $name => $original) {
      switch ($name) {
        // Check token is gw_content_area_en
        case 'gw_content_area_en':
          $tid = $data['node']->field_gw_content_area[LANGUAGE_NONE][0]['target_id'];
          $term = taxonomy_term_load($tid);
          $replacements[$original] = $term->name_original;
          break;
      }
    }
  }
  return $replacements;
}
</code>
Method 2:

Install Custom Tokens module;
Create a new token with following settings:

Token name: Gw Content Area EN
Token description: English version of field_gw_content_area
Token type: Nodes
Content:

$tid = $data['node']->field_gw_content_area[LANGUAGE_NONE][0]['target_id'];
$term = taxonomy_term_load($tid);
return $term->name_original;

New custom token used to set FileField Path.
Note: i18n_taxonomy module disabled.


Why is Debussy's Clair de Lune not considered a nocturne?

Question: Leaving the title of the piece aside, it sounds evocative of the night, though compared to what I've listened to from Chopin's nocturnes for example, it sounds more descriptive than contemplative.
Is the reason the fact that it's included in a larger suite and wasn't called a nocturne by its author, or is there a more technical reason?
Comment: The definition of "nocturne" is so blurry that I'd suspect that only pieces explicitly labelled "nocturne" by the composer should be called nocturnes. Otherwise, a lot more than just "Clair de Lune" could be considered nocturnes (in terms of how similar those other pieces sound to existing nocturnes).
Answer: Composers can give any title they want to their pieces. There is not a set definition for "nocturne", though Chopin used a very specific form for all of his. Chopin's nocturnes are in ABA form, and the B section is in a different key from the A section. His nocturnes are also relatively short and stand-alone pieces.
There could be a number of reasons why Debussy did not name his piece a nocturne. On the flip side, I'm sure there are reasons why Chopin did not give his nocturnes descriptive names. There really aren't any rules for this.
These days, people call multi-movement pieces for piano or solo instrument with piano accompaniment "sonata" regardless of whether or not they use sonata form in any movement.
Answer: Nocturnes typically invoke the imagery of the night, nocturnes are also typically single character pieces with no overlapping theme. Clair de Lune is actually not a single piece but actually only one part of the Suite bergamasque. Why this suite is almost never played in its completeness is also something that is lost to the ages.  It is also worth noting that Debussy was actually not all that happy with the publication of this suite as it was composed before his style matured.
Also, the style of the two is markedly different. The Nocturne style was a decidedly romantic era composition, and Chopin is one of its main proponents did nocturnes in a style that was wholly alien to Debussy.
Debussy had a great reimagining of the harmony that the romantic era simply never had. Debussy wanted his music to invoke the imagery that a Monet painting did and a lot of his music was with this theme in mind.
Interesting enough Debussy did write Nocturnes although not specifically for piano.
Debussy wrote an "introductory note" to Nocturnes as follows:

The title Nocturnes is to be interpreted here in a general and, more
  particularly, in a decorative sense. Therefore, it is not meant to
  designate the usual form of the Nocturne, but rather all the various
  impressions and the special effects of light that the word suggests.
  'Nuages' renders the immutable aspect of the sky and the slow, solemn
  motion of the clouds, fading away in grey tones lightly tinged with
  white. 'Fêtes' gives us the vibrating, dancing rhythm of the
  atmosphere with sudden flashes of light. There is also the episode of
  the procession (a dazzling fantastic vision), which passes through the
  festive scene and becomes merged in it. But the background remains
  resistantly the same: the festival with its blending of music and
  luminous dust participating in the cosmic rhythm. 'Sirènes' depicts
  the sea and its countless rhythms and presently, amongst the waves
  silvered by the moonlight, is heard the mysterious song of the Sirens
  as they laugh and pass on.[4]

SOURCE
Answer: 'Nocturne' originally referred to a piece, or set of pieces, not particularly descriptive of the night, intended to be performed at an evening gathering.   Then it became applied to a short, descriptive piano piece.
Generally, it's a Nocturne if the composer says it is!  It isn't policed.
Answer: It is just a name.  It is not descriptive of the FORM or necessarily the style.
From a marketing standpoint, though, I think it is much more saleable as Clair de Lune as opposed to just Nocturne.
If he were smart, he would have named it CHRISTMAS STARS or even Christmas Nocturne which would guarantee it a ubiquitous spot on the radio every single year in December. Bing, Frank, Nat or Dean would have put holiday words to it and Ka-Ching!!!!!!
For now, the only airtime it gets is when they talk about the moon.