PHP - Spaceship Operator

 PHP - Operadores

Spaceship Operator ( <=> )

A partir do PHP 7 foi adicionado um novo operador de comparação, designado por "Spaceship Operator" (Tie Fighter do Start Wars)


Para que serve?

Este operador tem como objetivo comparar dois números e devolver o resultado desta mesma comparação, através de um número inteiro (-1, 0 ou 1).


Como funciona?

Em primeiro lugar, devemos ter sempre em atenção que este operador compara o número da esquerda com o da direita.

Assim, se tomarmos o seguinte exemplo genérico em PHP:  $a <=> $b

  • Se $a for igual a $b, é retomando o valor de 0
  • Se $a for maior do que $b, é retomando o valor de 1
  • Se $a for menor do que $b, é retomando o valor de -1


Framework PHC - Comandos

IS_CLNO()

is_clno(mno, mestab,mcheckmexer, mWhere, mSilent)


IS_FONO()

Is_fono(mRef)


IS_STREF()

Is_stref(mRef, mSilent, mWhere)


IS_PENO()

Is_peno(mno)


IS_MASERIE()

Is_maserie(mref, mSilent)


IS_LVSITE()

Is_lvsite(mwhat)


IS_USERNO()

Is_userno(muserno)


BOCLACT()

Boclact(mauto, lsilencio)


FTCLACT()

Ftclact(Mauto, mtabl, lsede, lsilencio, mtabori, meuro, lc2cliente, mtab2)


DBFUSE()

dbfuse(Mbd, mnomebd,mext,mselect,mprikey,mupdcri,mviewindex,P_ctblrelation &47446 - P_ctblrelation = Nome Da Tabela Para Fazer Set Relation)



Do dbfuseNomeDaTabela (Não se aplica a tabelas de utilizador)

Exemplos: Do dbfusest (para a tabela st)

Do dbfusesz (para a tabela sz)


DBFUSETABUSRNOME() (aplica-se apenas a tabelas de utilizador, e sem o 'u_')

Dbfusetabusrnome(Mnometabela)


U_REQUERY()

u_requery(malias)


Exemplos com dbfuse e u_requery


Imaginemos que pretendemos carregar em memória a tabela BI com os registos de determinado dossier


If !used('bi') && Certifica-se que a área não está carregada ainda

Do dbfusebi && carrega a área BI em memória

Endif


v_bibostamp = '[stamp do dossier bostamp]' && esta variável é formada com a seguinte estrutura: v_[NomeTabela][StampRelação]

u_requery('bi')


BROWLIST()

Browlist(

Nome da Lista (string)

, Cursor/recordsource (string

, [Cursor para guardar definições (string)]

, [Permite alterar registos (Logic .F.) ]

, [Permite inserir novos registos (Logic (.F.)]

, [Permite Excluir Registos (.F.)]

,[Ficheiro de exportação seleccionável (Logic .F.)]

, [Reinicia definições da Grelha (Logic (.f.)])

)


U_STAMP()

u_stamp(mrrec,p_lNoInis)


U_TABUPDATE()

u_tabupdate(P_lallrows, P_lforce, P_calias)


FECHA()

Fecha(mbd)


DOREAD()

Doread(cNomeForm, cNomeObj, cParas, cModal, lExpandParas, lchkMexendo, ldobytimer)


GETNOME()

Getnome(Ctitulo, xdefeito, cnotas, cpicture, nbutao, lpasswordmode, ccombrws, lretlistindex, ccaption, nvalormin, nvalormax, ctypeget, objparametros)


Showsave (comando para apresentar save nos ecrãs)?

Exemplo: sst.showsave


Refrescar (comando para refrescar ecrãs)?

Exemplo: sst.refrescar

Desabilitar DPI Scalling Sync em Remote Desktop (RDP)

No servidor realizar os seguintes passos:

  1. Iniciar / Executar -> regedit
  2. Aceder à seguinte chave: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations
  3. Dentro da pasta WinStations criar uma nova DWORD (32-Bit), com o nome IgnoreClientDesktopScaleFactor
  4. Alterar o seu valor para 1
  5. Reiniciar o servidor



 



Ao tentar aceder a um servidor RDP surge a seguinte mensagem: Não há suporte para Função solicitadaComputador remoto: xxx.xxx.xxx.xxx.

Este erro ocorre em servidores e estações de trabalho que não estejam com seus updates sincronizados, ou seja, para corrigir de forma correta é necessário efetuar o Windows Update de ambos os lados da corda, tanto do lado do cliente como o lado do servidor.

Este erro ocorre também no Azure e em provedores Cloud no geral e é devido a um Update de Maio de 2018. Ao utilizar a Área de Trabalho Remota, a seguinte mensagem de erro é exibida e você não pode se conectar:

Erro de autenticação.
Não há suporte para Função solicitadaComputador remoto: xxx.xxx.xxx.xxx
Uma possível causa seria uma correção de oráculo criptografia CredSSP.
Para mais informações, visite https://go.microsoft.com/fwlink/?linkid=866660

Causa raiz:

O problema ocorre devido à diferença de versionamento do provedor de autenticação (CredSSP) que pode ser usado para cada cliente e servidor do Remote Desktop. Neste cenário, uma das pontas esta desatualizada e precisa de atenção. A atualização lançada em Maio de 2018 corrige problemas de vulnerabilidade. Segue uma visão sobre o assunto:

Atualização CredSSP lançada no Windows Update em março de 2018 CVE-2018-0886
(No entanto, o uso da versão antiga é liberado com a permissão padrão)
No Windows Update desde maio de 2018, versão reforçada usada no CredSSP (versão antiga truncada)
(O valor padrão de Criptografia Oracle Remediation foi alterado de Vulnerável para Reduzir)
Não há problema você estiver Windows Update com versões mais recente para cliente e servidor.
No entanto, se no cliente for o Windows Update mais recente e o servidor estiver atrasado, haverá uma diferença nas versões disponíveis do CredSSP, causando uma falha de conexão.

Existe uma solução alternativa (e não recomendada) que pode ser utilizada em momentos de emergência. Você pode utilizar uma chave de registro para mudar a parametrização da ponta que esta com o problema, ou seja, da ponta que está atualizada.

1. Abra o CMD em modo administrativo;

2. Adicione a seguinte configuração via chave de registro:

REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters\ /v AllowEncryptionOracle /t REG_DWORD /d 2


3. Faça o acesso normalmente.