Usabilidade

Você já ouviu falar do termo Usabilidade?

O que é?

Para que serve?

Para medir a usabilidade existe cinco fatores que devem ser considerados

  • Velocidade
  • Eficiência
  • Aprendizado
  • Memorização
  • Preferência do usuário

Velocidade: É a forma de medir o quão rápido um usuário consegue executar determinada tarefa.
Para obter essa informação iremos cronometrar o tempo ele demora para completá-la, ignorando os erros. Assumindo que o usuário está executando a tarefa de forma correta e não fazendo várias coisas erradas.

Eficiência: Mede quantos erros são cometidos em determinada tarefa. Isto é, alguém pode ser capaz de executar uma tarefa de forma rápida, porém irá fazer muitos erros durente a tarefa. Podendo haver uma grande divergência entre velocidade e eficiência.

Aprendizado: É a forma que nos diz o quão fácil é para um usuário aprender a utilizar o sistema. Isso nos permite saber o quão bem alguém poderá entrar no sistema pela primeira vez e utilizá-lo. Possivelmente ele precisará de uma pequena ajuda, e deverá ser capaz de encontrar os recursos que precisa de uma forma fácil.

Memorização: Amplia a capacidade de aprendizado. Uma vez que o usuárioaprendeu a utilizar o sistema. A memorização nos diz o quão fácil é para o usuário lembrar de como utilizar o sistema. Então se um usuário parou de utilizar o sistema por um tempo, depois volta a utilizar é desejável que ele rapidamente lembre-se como usá-lo.

 

Fonte: Coursera – The “Cybersecurity” Specialization

Como modificar uma dll

Existem várias formas para modificar uma dll, porém para quem é desenvolvedor e trabalha com o Visual Studio já possui a ferramenta necessária ildasm.

Onde encontrar o ildasm

No Visual Studio 2013 que utilizo no trabalho o caminho para chegar a essa ferramenta
Tecla do windows > pesquisar: Cross Tool Command Prompt

Possível erro: ERROR: Cannot determine the location of the VS Common Tools folder.
Solução:
cmd /k “c:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\VsDevCmd.bat”
cmd /k “c:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\VsDevCmd.bat”

Visual Studio 2017

Tecla windows > Developer Command Prompt
Obs.: Abrir como administrador o Developer Command Prompt

Funções úteis para SQL Server

Volta e meia preciso retornar algumas informações do banco de dados, mas preciso filtrar essa informação.

Retornar apenas os dígitos de uma coluna

CREATE FUNCTION [dbo].[GetOnlyDigits](@Temp VarChar(1000))
Returns VarChar(1000)
AS
Begin

    Declare @KeepValues as varchar(50)
    Set @KeepValues = '%[^0-9]%'
    While PatIndex(@KeepValues, @Temp) > 0
        Set @Temp = Stuff(@Temp, PatIndex(@KeepValues, @Temp), 1, '')

    Return @Temp
End

Remover caracteres não alfanuméricos

Create Function [dbo].[RemoveNonAlphaCharacters](@Temp VarChar(1000))
Returns VarChar(1000)
AS
Begin

    Declare @KeepValues as varchar(50)
    Set @KeepValues = '%[^a-z]%'
    While PatIndex(@KeepValues, @Temp) > 0
        Set @Temp = Stuff(@Temp, PatIndex(@KeepValues, @Temp), 1, '')

    Return @Temp
END

Fonte: http://stackoverflow.com/questions/1007697/how-to-strip-all-non-alphabetic-characters-from-string-in-sql-server

Como fazer um vídeo em câmera lenta?

Há tempos penso em fazer vídeos em câmera lenta, especialmente de momentos radicais ou engraçados.
Para fazer essa transformação poderemos utilizar o mencoder

mencoder -speed 1/8 video_original.avi -ovc copy -nosound -o video_camera_lenta.avi

Mas se desejar poderá adicionar uma música ao vídeo

mencoder -ovc copy -audiofile music.mp3 -oac copy video_original.avi -o video_camera_lenta.avi

Redimensionar imagens em lote no Linux

Toda vez que eu faço uma viagem costumo documentar os pontos positivos e negativos no blog Desbravando Horizontes, só que a câmera que utilizo para tirar foto salva as imagens na resolução de 6000×4000 a um tamanho de ≅ 12mb por foto.

Toda vez que vou escrever no blog eu abro o GIMP para cortar a imagem e diminuir a qualidade da foto para poder disponibilizar no site.

Só que agora fui atrás de como fazer esse processo através de uma pequena linha de comando e aqui está o resultado final =D

for pic in *.JPG; do convert -scale 18% -strip -interlace Plane -quality 69 -verbose "$pic" "${pic%.*}.thumb.jpg"; done

Fonte:
http://www.imagemagick.org/Usage/filter/
http://www.imagemagick.org/Usage/annotating/

Procurar conteúdo dentro de uma view / procedure do SQL Server

Pesquisar conteúdo dentro da view

Select smv.definition
FROM sys.all_views AS v
JOIN sys.sql_modules AS smv ON smv.object_id = v.object_id
where smv.definition like '%product%'

Pesquisar conteúdo dentro da procedure

select smv.definition
from sys.procedures as p
JOIN sys.sql_modules AS smv ON smv.object_id = p.object_id
where smv.definition like '%product%'

Pesquisar conteúdo dentro de uma trigger

select * from sys.triggers t
JOIN sys.sql_modules AS smv ON smv.object_id = t.object_id
where smv.definition like '%product_parents_hierarchy%'

Executar o mesmo script em várias bases no SQL Server

Hoje precisei pesquisar um determinado registro em várias no SQL Server mas não queria ter que ir no SQL Management Studio base a base para executar o script, até porque em algumas bases pode não existir as tabelas necessárias para executar o meu script.

Para facilitar esse processo repetitivo existe a proc sp_MSforeachdb que executa o script em todas as bases.

DECLARE @Command VARCHAR(1000)
SELECT @Command = 'USE [?];
IF COL_LENGTH(''[dbo].[products]'', ''Id'') IS not NULL
	ALTER TABLE dbo.products ADD description varchar(5000)'

EXEC sp_MSforeachdb @Command

Descrevendo o trecho de código veremos que primeiramente iremos declarar uma variável para armazenar o comando a ser executado:
DECLARE @Command VARCHAR(1000)

Logo após iremos armazenar o script que desejamos executar na variável.

SELECT @Command = 'USE [?];
IF COL_LENGTH(''[dbo].[products]'', ''Id'') IS not NULL
	ALTER TABLE dbo.products ADD description varchar(5000)'

E por fim executamos o script no banco.
EXEC sp_MSforeachdb @Command

Filtrar registros

Muitas vezes necessito trazer no resultado do select apenas as databases que possuem um determinado registro e para isso utilizo o script abaixo.

DECLARE @Schema VARCHAR(20) = 'dbo'
DECLARE @Table VARCHAR(80) = 'configurations'
DECLARE @ColumnToFilter VARCHAR(80) = 'FullName'
DECLARE @Where VARCHAR(200) = @ColumnToFilter + ' = ''General.Caching.RedisHosts'' AND Value like ''%hlg%'''

-- Não alterar os campos abaixo
DECLARE @SchemaAndTable VARCHAR(80) = '[' + @Schema + '].[' + @Table + ']'
DECLARE @Command VARCHAR(1000)

SELECT @Command = 'USE [?];
IF	EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE table_name = ''' + @Table + ''') 
	AND COL_LENGTH(''' + @SchemaAndTable + ''', ''' + @ColumnToFilter + ''') IS not NULL
	BEGIN
		IF EXISTS ( SELECT 1 FROM ' + @SchemaAndTable + ' WHERE ' + @Where +')
			BEGIN
				SELECT ''?'' as dbname, T.Value FROM ' + @SchemaAndTable + ' AS T WHERE ' + @Where +'
			END
	END
'
EXEC sp_MSforeachdb @Command

Pesquisar procedure que não contém determinado campo

DECLARE @Procedure VARCHAR(80) = 'pBasket'
DECLARE @Column VARCHAR(200) = 'skuname'
DECLARE @Command VARCHAR(1000)

SELECT @Command = 'USE [?];
IF NOT EXISTS(	SELECT 1 FROM sys.procedures p
			JOIN sys.sql_modules AS smv ON smv.object_id = p.object_id
			WHERE p.name = ''' + @Procedure + ''' 
			AND definition like ''%' + @Column + '%''
	)
	BEGIN
		SELECT ''?'' as dbname
	END
'
EXEC sp_MSforeachdb @Command

Atualização (19/10/2016) – Filtrar registros
Atualização (10/11/2016) – Pesquisar procedure que não contém determinado campo

Instalando placa de vídeo ATI no Debian GNU/Linux

A alguns dias ganhei da minha irmã um monitor de computador que estava parado em um canto da casa a espera de um dia de folga para fazer a instalação.
Aproveitei que fiz a compra de um SSD para fazer a instalação limpa do Debian e após fazer a instalação básica resolvi instalar a placa de vídeo.

Primeiramente vamos verificar a GPU que temos instalada no computador e como podemos ver estou com duas placas de vídeo.

$ lspci -nn | grep VGA
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570] [1002:68da]
09:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Barts PRO [Radeon HD 6850] [1002:6739]

Para poder instalar o driver da placa de vídeo precisaremos habilitar os componentes de “contrib” e “non-free” ao repositório em /etc/apt/sources.list
Exemplo:

# Debian 8 "Jessie"
deb http://http.debian.net/debian/ jessie main contrib non-free

Atualizaremos a lista de pacotes disponíveis
# apt-get update

E iremos mandar realizar a instalação dos drivers
# apt-get install firmware-linux-nonfree fglrx

Agora será necessário instalar o driver proprietário da AMD disponível em http://support.amd.com/pt-br/download

Possuo duas placas da serie Radeon HD, filtrei o driver até encontrar o pacote da versão do linux.
Obs.: Escolhi o pacote para o linux x64/x86 já que o pacote para a versão Debian não contém o aticonfig aplicativo utilizado para configurar as placas de vídeo.

Obs. #2: Ponto negativo para a ATI, pois o pacote de drivers foi feito em 2015 e desde então não teve atualização.

Nesse caso o driver encontra-se em um arquivo zip (amd-catalyst-15.9-linux-installer-15.201.1151-x86.x86_64.zip).

Iremos descompactar o arquivo

unzip amd-catalyst-15.9-linux-installer-15.201.1151-x86.x86_64.zip

Deveremos dar permissão de execução do arquivo

chmod +x AMD-Catalyst-15.9-Linux-installer-15.201.1151-x86.x86_64.run

E será executado o programa de instalação do driver da placa de vídeo

.\AMD-Catalyst-15.9-Linux-installer-15.201.1151-x86.x86_64.run

Depois de finalizar a instalação será necessário reiniciar o computador para carregar os drivers da placa de vídeo.
Se for utilizar apenas um monitor deveremos executar o comando abaixo para gerar o arquivo de configuração para a placa de vídeo

# aticonfig –initial

Mas se utiliza mais de uma placa de vídeo deveremos executar seguinte comando para poder usar os dois monitores
# aticonfig –adapter=all –xinerama=on –initial

Após esse processo será necessário reiniciar o computador novamente.

Fontes:
https://wiki.debian.org/AtiHowTo
http://askubuntu.com/questions/394905/need-help-with-xorg-conf-for-dual-radeon-hd6450-video-cards-with-4-monitors