ZeosDBO – Erro “0 record(s) updated. Only one record should have been updated”

Muitas pessoas me enviam questionamentos sobre esse erro causado pelo ZeosDBO, principalmente quando trabalhamos com objetos “table” ao invés de querys.

No desenvolvimento do ZeosDBO muitas coisas ficaram para trás, entre elas, uma exceção criada (sabe-se lá porque motivo) que deveria ser habilitada somente quando a variável global WITH_VALIDATE_UPDATE_COUNT estivesse presente.

Com isso, todas vezes que você abre um registro com “TableObject.Edit” e não faz nenhuma alteração nos campos deste registro, a exceção é acionada com a mensagem “0 record(s) updated. Only one record should have been updated“.

Para remover esta exceção você precisa editar dois arquivos, o src\component\ZSQLUpdate.pas e o

No arquivo src\component\ZSQLUpdate.pas, na linha 829 remova o bloco abaixo selecionado.

No arquivo src\dbc\ZDbcGenericResolver.pas você deve editar na linha 872 e também remover o código selecionado.

Depois, é necessário recompilar, construir (build) e reinstalar o ZeosDBO no seu Delphi.

WP – Compactar HTML

Esta rotina eu utilizava até hoje no site da PARKEER para compactar o HTML a ser exibido pelo WordPress. Embora não tenha maiores aprimoramentos, funciona muito bem.

[code]

function start_ob() {
ob_start(‘pk_compress_html’);
}
function end_ob() {
ob_end_flush();
}

function pk_compress_html($output) {

$search = array(
‘/\>[^\S ]+/s’,     // strip whitespaces after tags, except space
‘/[^\S ]+\</s’,     // strip whitespaces before tags, except space
‘/(\s)+/s’,         // shorten multiple whitespace sequences
‘/<!–(.|\s)*?–>/’ // Remove HTML comments
);
$replace = array(
‘>’,
‘<‘,
‘\\1’,

);
$output = preg_replace($search, $replace, $output);

$output = trim($output);
$output = preg_replace(‘/^[ \t]*[\r\n]+/m’, ”, $output);
return $output;
}
add_action(‘get_header’, ‘start_ob’);
add_action(‘shutdown’, ‘end_ob’, 999);
[code]

Instalando o JDK e o JRE no CentOS / Fedora

Vá até uma pasta livre…

$> cd /opt

Download para OS 32 Bits:

$> wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-i586.rpm"
$> wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jre-8u45-linux-i586.rpm"

Download para OS 64 Bits:

$> wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-x64.rpm"
$> wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jre-8u45-linux-x64.rpm"

Instalação (via RPM) para o OS 32 Bits:

$> rpm -Uvh jdk-8u45-linux-i586.rpm
$> rpm -Uvh jre-8u45-linux-i586.rpm

Instalação (via RPM) para o OS 64 Bits:

$> rpm -Uvh jdk-8u45-linux-x64.rpm
$> rpm -Uvh jre-8u45-linux-x64.rpm

Só correr para o abraço!

$> java -version
$> javac -version

Como gerar uma chave CSR (SSL)

Se você deseja obter um certificado SSL de uma autoridade certificadora (CA), você precisa gerar primeiro, uma chave de requisição (CSR). O CSR consiste de um par de chaves públicas, além de algumas informações à serem adicionadas ao certificado, como por exemplo, as informações da sua empresa.

Para gerar uma requisição de certificado (chave de requisição), é necessário que você tenha acesso ao terminal do seu servidor, lá, digite o seguinte:

$> openssl genrsa -out domain.key 2048
$> openssl req -new -sha256 -key domain.key -out domain.csr

Algumas informações serão perguntadas, preencha como a seguir:

Wrap text in jQuery

function wrapText(elementID, openTag, closeTag) {
var textArea = $('#' + elementID);
var len = textArea.val().length;
var start = textArea[0].selectionStart;
var end = textArea[0].selectionEnd;
var selectedText = textArea.val().substring(start, end);
var replacement = openTag + selectedText + closeTag;
textArea.val(textArea.val().substring(0, start) + replacement + textArea.val().substring(end, len));
}