Não é toda hora que acontece, mas quando acontece é sempre legal.
Não é toda hora que acontece, mas quando acontece é sempre legal.
Agora é somente uma questão de tempo. Em dado momento, todo o metal será impresso.
https://www.tecmundo.com.br/produto/134097-nova-impressora-3d-hp-objetos-metal-escala-industrial.htm
PS: Qualquer dia desses compro essa aqui:
https://www.tecmundo.com.br/produto/134097-nova-impressora-3d-hp-objetos-metal-escala-industrial.htm
Para quem está buscando se aprimorar em metodologias ágeis, esse vídeo é muito bom.
Aguardando novidades no e-commerce.
https://tecnoblog.net/244328/adobe-compra-magento-commerce/
PS: Novo site está quase pronto, todo feito com o Code igniter. Já está rodando em HTTPS.
Podemos detectar uma infinidade de coisas em fotos. Para os desenvolvedores mais práticos, a amazon possui um serviço incrível de backend de detecção de objetos, vale a pena olhar. Não sendo esse o caso, ou pra quem tem volume muito alto de upload, podemos detectar muita coisa legal usando diversos padrões prontos:
http://stackoverflow.com/questions/11537585/where-can-i-find-haar-cascades-xml-files
Para quem se interessa em criar seu própŕio cascade, a documentação é bem completa e o trabalho um tanto cansativo.
http://docs.opencv.org/2.4.13.2/doc/user_guide/ug_traincascade.html
Abaixo um exemplo em python de como utilizar o sistema de reconhecimento de objetos da opencv.
O arquivo que fiz (não posso postar aqui- é do cliente) “cascade.xml” foi gerado utilizando uma grande variação de imagens positivas, negativas,
diversos parâmetros e 12h de processamento.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import cv2 arquivo_padrao_reconhecimento = cv2.CascadeClassifier('/home/meulocal/cascade.xml') print 'iniciando deteccao' #img eh a imagem que utilizamos para a buscar o padrao gravado no arquivo cascade.xml img = cv2.imread('/home/meulocal/foto_detectar.jpg') #somente removendo os canais de cor. nao serao usados gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #em alguns casos, é interessante equalizar o histograma. A opencv possui esse filtro #os parametros enviados abaixo sao a imagem em escala de cinza, o fator de escala # e o numero de vizinhos. O numero de vizinhos está relacionado com a precisao da #deteccao e o fator de escala é a reducao proporcional do objeto na imagem procurada. resultado = arquivo_padrao_reconhecimento.detectMultiScale(gray, 1.05, 3) for (x,y,w,h) in resultado: print 'objeto encontrado' #marcando o objeto com um retangulo onde foi encontrado cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) #salvando a imagem, com os retangulos cv2.imwrite('/home/meulocal/imagem_marcada.jpg', img) print 'fim da rotina' |
Seguimos desenvolvendo e apostando nesse formato desde 2015 em nossos sistemas.
http://gizmodo.uol.com.br/google-guetzli/
Sobre o formato:
https://developers.google.com/speed/webp/
Compatibilidade:
http://caniuse.com/#feat=webp
Novos meios de indexação e busca
pontesul.com
Sistema web, pode ser montado em uma vm. Muito semelhante ao bitbucket. No lado do cliente, ainda vamos de terminal, mas para o gerenciamento do conteúdo é um sistema muito forte.
https://about.gitlab.com/downloads/
Para quem ainda não usa git:
http://www.appsumo.com/alexteachesgit/
Para quem já tem algum conhecimento em macros no ambiente MS Office, abaixo um tutorial relâmpago para iniciar com macros no libreoffice:
Primeiramente, abrir o Libreoffice Calc 5
Acessar o menu Ferramentas – Opções – LibreOffice – Avançado
Marcar “Ativar gravação de macros”
Ferramentas – Macro – gravar macros
Ferramentas – Macro – organizar macros – Libreoffice Basic – Editar…
Pronto, já abrimos o caminho para o editor de scripts.
Bônus: Abaixo uma rotina que escreve uma fórmula de soma de subtotais a cada 5 células, na célula F, desde a linha 23 até a 400. Foi feita gravando uma macro após selecionar uma céula e mudar o conteúdo da mesma. Depois, adicionei um loop e os limitadores (linha_ini e linha fim).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
REM ***** BASIC ***** sub Main rem ---------------------------------------------------------------------- rem define variables ' criando o documento e dispatcher dim document as object dim dispatcher as object rem ---------------------------------------------------------------------- 'instanciando documento e dispatcher,até aqui, tudo igual a macro document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 'aqui entra meu codigo... 'instanciando e definindo os limites.. dim linha as integer linha = 0 dim linha_ini as integer linha_ini = 23 dim linha_fim as integer linha_fim = 400 'instanciando e definindo o pulo, chamado aqui de offset dim offset as integer offset = 5 'associando a linha inicial... linha = linha_ini 'aqui eu escrevo o que quero fazer (mover, trocar variavel, etc...) 'nesse caso sao 2 operacoes:GoToCell e EnterString dim args1(0) as new com.sun.star.beans.PropertyValue dim args2(0) as new com.sun.star.beans.PropertyValue 'laco inicia aqui... do rem ---------------------------------------------------------------------- 'movendo ao ponto F + linha args1(0).Name = "ToPoint" args1(0).Value = "$F$" + linha dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1()) rem ---------------------------------------------------------------------- 'trocando o valor da celula args2(0).Name = "StringName" args2(0).Value = "=soma($F$" + (linha+1) + ":$F$" + (linha + 4) + ")" dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2()) 'somando o "pulo" offset de 5 celulas linha = linha + offset loop while linha<linha_fim end sub |