quarta-feira, 10 de junho de 2015

remover chaves de lista python

python print array without brackets in a single row
python 3
>>> for i in range(1, 11):
...     print(i, end='')
... 
12345678910>>> 

python 2 
names = ["Sam", "Peter", "James", "Julian", "Ann"]
print ', '.join(names)
fonte: http://stackoverflow.com/questions/11178061/python-print-array-without-brackets-in-a-single-row

segunda-feira, 8 de junho de 2015

Juntar audio e video - MP3 no MP4

ffmpeg -i video_entrada.mp4 -i audio_entrada.mp3 -map 0:0 -map 1:0 -vcodec copy -acodec copy video_saida.mp4

terça-feira, 2 de junho de 2015

bug osmandmapcreator

DETALHADO: Memory before task exec: 4029153280 free : 2482800464
Jun 02, 2015 10:57:52 AM net.osmand.swing.ProgressDialog startTask
DETALHADO: Preindexing address and map ways… started after 71 ms
Jun 02, 2015 10:57:54 AM net.osmand.swing.ProgressDialog startTask
DETALHADO: Memory before task exec: 4017094656 free : 2507932488
Jun 02, 2015 10:57:54 AM net.osmand.swing.ProgressDialog startTask
DETALHADO: Processing osm nodes… started after 2045 ms
Jun 02, 2015 10:59:13 AM net.osmand.swing.ProgressDialog startTask
DETALHADO: Memory before task exec: 4121952256 free : 1859865088
Jun 02, 2015 10:59:13 AM net.osmand.swing.ProgressDialog startTask
DETALHADO: Processing osm ways… started after 78431 ms
Jun 02, 2015 11:04:55 AM net.osmand.data.preparation.IndexCreator generateIndexes
GRAVE: Log exception
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1911)
at net.osmand.osm.MapRoutingTypes.encodeEntity(MapRoutingTypes.java:206)
at net.osmand.data.preparation.IndexRouteCreator.iterateMainEntity(IndexRouteCreator.java:169)
at net.osmand.data.preparation.IndexCreator.iterateMainEntity(IndexCreator.java:239)
at net.osmand.data.preparation.IndexCreator.access$1000(IndexCreator.java:48)
at net.osmand.data.preparation.IndexCreator$10.iterateEntity(IndexCreator.java:613)
at net.osmand.data.preparation.OsmDbAccessor.iterateOverEntities(OsmDbAccessor.java:241)
at net.osmand.data.preparation.OsmDbAccessor.iterateOverEntities(OsmDbAccessor.java:195)
at net.osmand.data.preparation.IndexCreator.generateIndexes(IndexCreator.java:610)
at net.osmand.swing.OsmExtractionUI$13.run(OsmExtractionUI.java:547)
at net.osmand.swing.ProgressDialog$WorkerThread.run(ProgressDialog.java:87)

Jun 02, 2015 11:04:59 AM net.osmand.swing.ExceptionHandler handle
GRAVE: Exception during operation
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1911)
at net.osmand.osm.MapRoutingTypes.encodeEntity(MapRoutingTypes.java:206)
at net.osmand.data.preparation.IndexRouteCreator.iterateMainEntity(IndexRouteCreator.java:169)
at net.osmand.data.preparation.IndexCreator.iterateMainEntity(IndexCreator.java:239)
at net.osmand.data.preparation.IndexCreator.access$1000(IndexCreator.java:48)
at net.osmand.data.preparation.IndexCreator$10.iterateEntity(IndexCreator.java:613)
at net.osmand.data.preparation.OsmDbAccessor.iterateOverEntities(OsmDbAccessor.java:241)
at net.osmand.data.preparation.OsmDbAccessor.iterateOverEntities(OsmDbAccessor.java:195)
at net.osmand.data.preparation.IndexCreator.generateIndexes(IndexCreator.java:610)
at net.osmand.swing.OsmExtractionUI$13.run(OsmExtractionUI.java:547)
at net.osmand.swing.ProgressDialog$WorkerThread.run(ProgressDialog.java:87)




versão mais antiga

Jun 03, 2015 7:33:41 AM net.osmand.data.index.IndexBatchCreator generateIndex
GRAVE: Exception generating indexes for brazil-latest.osm
java.lang.UnsupportedOperationException: Split is needed for tag/values {amenity=place_of_worship, building=cathedral, denomination=roman_catholic, religion=christian, seamark:building:function=church, seamark:landmark:function=church, seamark:type=landmark, type=multipolygon}
at net.osmand.osm.MapRenderingTypesEncoder.encodeEntityWithType(MapRenderingTypesEncoder.java:149)
at net.osmand.data.preparation.IndexVectorMapCreator.indexMultiPolygon(IndexVectorMapCreator.java:134)
at net.osmand.data.preparation.IndexVectorMapCreator.indexMapRelationsAndMultiPolygons(IndexVectorMapCreator.java:94)
at net.osmand.data.preparation.IndexCreator$6.iterateEntity(IndexCreator.java:558)
at net.osmand.data.preparation.OsmDbAccessor.iterateOverEntities(OsmDbAccessor.java:241)
at net.osmand.data.preparation.OsmDbAccessor.iterateOverEntities(OsmDbAccessor.java:195)
at net.osmand.data.preparation.IndexCreator.generateIndexes(IndexCreator.java:550)
at net.osmand.data.index.IndexBatchCreator.generateIndex(IndexBatchCreator.java:505)
at net.osmand.data.index.IndexBatchCreator.generatedIndexes(IndexBatchCreator.java:427)
at net.osmand.data.index.IndexBatchCreator.runBatch(IndexBatchCreator.java:273)
at net.osmand.data.index.IndexBatchCreator.runBatch(IndexBatchCreator.java:192)
at net.osmand.data.index.IndexBatchCreator.main(IndexBatchCreator.java:134)

Jun 03, 2015 7:33:41 AM net.osmand.data.index.IndexBatchCreator generatedIndexes
INFORMAÇÕES: GENERATING INDEXES FINISHED




sexta-feira, 29 de maio de 2015

python vetor linha para vetor coluna

Vetor para linha, para vetor coluna
>>> a[None].T
array([[1],
       [2],
       [3]])
>>> np.newaxis is None
True
>>> a.reshape(a.shape+(1,))
array([[1],
       [2],
       [3]])
>>> a[:,None]
array([[1],
       [2],
       [3]])

quinta-feira, 28 de maio de 2015

python - coluna de matriz para vetor

import numpy as np

matriz = [[11,22,322],[43,52,61],[71,81,91]]
m = np.array(matriz)

l = m[:,0]

print l
array([11, 43, 71])

domingo, 24 de maio de 2015

Suporte Parede - Monitor LG W2353V

Suporte de parede improvisado.
Abri o monitor, fiz uns furos na parte traseira, passei linha de multifilamento que é uma linha bastante forte, e adicionei uma corrente, de forma que dê para modificar a altura dos lados.

Acabei deixando a parte da "torre" que se conecta à base. Fiz isso para não ter que desmontar outra vez, é bem difícil de remover a parte da frente, acabei quebrando um encaixe e não quero ter que abrir outra vez.

O design do monitor é bem ruim. Deveria ser mais fácil a retirada dessa peça, mas entendo que ele foi feito para ser usado sempre com a base que vem com ele.

Para quem quiser se aventurar, está aí a ideia.





terça-feira, 5 de maio de 2015

georreferenciar

apt-get install proj-bin
echo "-73d59'51\" 40d43'51\"" | cs2cs +init=EPSG:4326 +to +init=EPSG:3857

-8237364.02 4972720.34 0.00

Deu pau!

echo "-73d59'51\" 40d43'51\"" | cs2cs +init=EPSG:4326 +to +init=EPSG:3857
Using from definition: init=EPSG:4326
Rel. 4.8.0, 6 March 2012

projection initialization failure
cause: no system list, errno: 2

program abnormally terminated


Resolver!
cp /usr/share/proj/epsg /usr/share/proj/EPSG

http://www.qgistutorials.com/en/docs/advanced_georeferencing.html

domingo, 3 de maio de 2015

Aerial Photogrammetry

79in Zeta FX-79 Buffalo Kit (EPO Foam)
http://www.valuehobby.com/fx-79-buffalo-kit.html

http://hugin.sourceforge.net/

https://www.youtube.com/watch?v=e2qp3o8caPs

UTOPANO v1.03
Automatic Panorama Recognising Tool for Panotools

https://github.com/OpenDroneMap/OpenDroneMap

sexta-feira, 27 de março de 2015

Verificar se uma pagina sofreu atualização

http://www.mostlymaths.net/2010/01/cron-diff-wget-watch-changes-in-webpage.html

Then I realised I could write a script to do it, using diff and wget. You can get it below. You have to edit it to add the pages you want to follow, then run it with the "write" option to download the first version, then edit yourcrontab file (crontab -e) to run it every day at a specified time with the "diff" option. For example:
00 13 1,7,14,21,28 * * /home/user/PageDiff.sh diff
will run it every 1st, 7th, 14th, 21st and 28th of the month, at 13:00. Be sure to first run it as write.

#!/bin/sh # Copyright 2009 Ruben Berenguel # ruben /at/ maia /dot/ ub /dot/ es # PageDiffs: Fill in an array of webpages, with the option "write" # will download them, with the "diff" option will re-download them and # check the new against the old for differences. With the "diff mail" # option, will send an email to $MAILRECIPIENT, assuming mail works. # You can find the most up to date version of this file (and the GPL) # http://rberenguel.googlecode.com/svn/trunk/Bash/PageDiffs.sh # 20091226@00:24 MAILRECIPIENT="mail@mail.com" j=0 Pages[j++]="http://www.maia.ub.es/~ruben/" Pages[j++]="http://www.google.es" #Add more pages as above if [ "$1" = "write" ]; then echo Generate files count=0 for i in "${Pages[@]}" do echo Getting "$i" into File$count wget "$i" -v -O "File$count" let count=$count+1 done fi if [ "$1" = "diff" ]; then count=0 for i in "${Pages[@]}" do # echo Getting "$i" into Test$count wget "$i" -q -O "Test$count" Output=$(diff -q "Test$count" "File$count" | grep differ) Result=$? if [ "$Result" = "0" ]; then if [ "$2" = "mail" ]; then echo Page at "$i" has changed since last check! >> MailCont mail=1 fi echo Page at "$i" has changed since last check! else echo Page at "$i" has not changed since last check! fi #rm Test$count let count=$count+1 done if [ "$mail" = "1" ]; then mail -s "Page changed alert!" $MAILRECIPIENT

quarta-feira, 25 de março de 2015

bash

procura por asd no testehead.txt e exibe apenas a linha que o contém.
grep "asd" testehead.txt | head -n 1

\> --> significa que é para entender como caractere e não comando. Para isso usa-se a barra invertida.

tr -d \<   --> apaga o caractere <




sexta-feira, 20 de março de 2015

Graus sexagesimal para grau decimal - Excel Calc LibreOffice Open Office

Tendo um número no campo C5 com valor de 356.1224, sendo 356 graus 12 minutos e 24 segundos. Para passar para o decimal no OpenOffice:

=INT(C5) + (INT(((C5-INT(C5))*100)) /60) + (( ( ((((C5-INT(C5))*100))) -  (INT(((C5-INT(C5))*100)))) * 100)/3600)

quarta-feira, 11 de março de 2015

Sincronizar Google Driver no Linux Mint

sudo add-apt-repository ppa:thefanclub/grive-tools && sudo apt-get update && sudo apt-get install grive-tools


sexta-feira, 6 de março de 2015

Asus Zenfone 5

Fazer o hard reset, padrão de fábrica, não remove as atualizações do sistema. Logo, se quiser voltar a atualização do firmware para antes da atualização que impede a escrita para o sdcard, tem que baixar direto do site da asus, pois voltando para o padrão de fábrica só altera os aplicativos instalados.

O lollipop passará a ter acesso ao sdcard sem bloqueio, pelo menos é o que dizem. Será lançado para o zenfone 5 em abril de 2015.

terça-feira, 13 de janeiro de 2015

wine 1.7 e office 2007


apt-get install wine1.7
apt-get install wine-mono4.5.4
winecfg
Adiconar dotnet20 riched20
cp /etc/mono/4.5/machine.config   ~/.wine/drive_c/windows/Microsoft.NET/Framework/v2.0.50727/
cp /etc/mono/4.5/machine.config ~/.wine/drive_c/windows/Microsoft.NET/Framework/v4.0.30319/CONFIG/
Deixar como windows xp no winecfg

sexta-feira, 2 de janeiro de 2015

Criar vias no Openstreetmap

Para editar usando o Potlatch 2 é necessário ter uma conta no OpenStreetMap. Logado no OSM, vá até a região de interesse, dê zoom e clique na seta ao lado do botão Editar e escolha Edite com Potlach 2




Neste exemplo, peguei uma região rural para fazer a edição de ruas.



Primeiramente é feita a criação das linhas que irão formar as ruas. Para isso, damos zoom na estrada e vamos clicando com o botão esquerdo do mouse acompanhando o seu percurso.



Ao término do trecho em questão, pode-se apertar a tecla 'Enter' para finalizar a edição. O próximo passo é selecionar a tag apropriada à linha criada. Clica-se na coluna esquerda, no combo Unknown.
Como não conheço o tipo de via, escolho o Unknown road. Em regiões residenciais escolhe-se o tipo residential e assim por diante.


Para que o aparelho de GPS entenda que as vias se cruzam, faz-se necessário a criação de nós entre as vias. Na construção da linha, devemos clicar em cima da rua com que se faz o cruzamento, criando um nó, dessa forma o navegador identifica que é possível acessar aquela rua do cruzamento. Observe na figura abaixo um ponto em comum entre a rua nova recém criada e a rua que foi criada anteriormente.



Pode-se então fazer a classificação para 'Unknown road'.
Além disso, selecionando a estrada, é possível colocar o nome e o sentido de rolamento mudando em Oneway=unset para uma das opções mostradas abaixo.
One way = só ida
Two way = ida e volta
One way reverse = só volta


Pra ligar o retorno, precisamos segurar SHIFT e então clicar na via, na posição que da início ao retorno. Assim será criado o nó. Na via superior pode-se observar setas de direção, ali está definido como one way, as setas seguem o sentido de criação da via, pois iniciei ela, de baixo pra cima, caso o sentido fosse de cima pra baixo, seria definido ali o one way reverse.
Obs: Provavelmente a via é de mão dupla, só coloquei o one way para exemplificar.


Retorno conectado com os nós:


Com as modificações feitas é só clicar em salvar e descrever o tipo de mudança feita ou observações pertinentes, assim facilita o entendimento por outros mapeadores.

segunda-feira, 1 de dezembro de 2014

tomcat manager page

instalar:
Configurando tomcat6-admin (6.0.39-1) ...
Configurando tomcat6-user (6.0.39-1) ...

adicionar usuario:
vim /etc/tomcat6/tomcat-users.xml


reiniciar
/etc/init.d/tomcat6 restart

pagina de acesso:
http://localhost:8080/manager/html

http://localhost:8080/geoserver/web

qgis - vector to postgres - usar manage db plugin
You can use the DBManager core plugin

user: geoserver
senha: admin

sexta-feira, 29 de agosto de 2014

booklet imposition livreto print

generate-booklet

#!/bin/bash
# Imposition of a PDF document to generate a booklet
# target format is selectable (A5, A4, ...)
# default format is A4
#
# Depends on packages
#  * pdfjam
#  * poppler-utils
#
# Parameter :
#   $1 - full path of original document
#
# Version history :
#   26/09/2012, V1.0 - Creation by N. Bernaerts
#   05/05/2014, V2.0 - Add target format selection (thanks to Robin idea)

# suffix to be added at the end of booklet file
DOC_SUFFIX="book"

# determine file names
DOC_ORIGINAL="$1"
DOC_BOOKLET="`echo "$1" | sed 's/\(.*\)\..*/\1/'`-$DOC_SUFFIX.pdf"

# select target format
ARR_FORMAT=('false' 'A2' 'false' 'A3' 'true' 'A4' 'false' 'A5' 'false' 'Letter' 'false' 'Executive' 'false' 'Legal')
TITLE=`basename "$1"`
TEXT="Booklet will be generated from this document.\nPlease select target format.\n"
FORMAT=`zenity --list --radiolist --width 350 --height 380 --title "$TITLE" --text "$TEXT" --column="Choice" --column="Format" ${ARR_FORMAT[@]}`

# if a format has been selected
if [ "$FORMAT" != "" ]
  then
  # set target format as expected by pdfbook
  FORMAT_OPTION="--${FORMAT,,}paper"

  # determine number of pages of original PDF
  NUM_PAGES=`pdfinfo "$DOC_ORIGINAL" | grep Pages | sed 's/^Pages:[ ]*\([0-9]*\).*$/\1/g'`

  # determine if there is a need to add blank pages at the end
  DIV_RESULT=`expr $NUM_PAGES % 4`
  if [ $DIV_RESULT -gt 0 ]
    then
    # add pages to get multiple of 4
    NUM_PAGES=`expr $NUM_PAGES + 4 - $DIV_RESULT`
  fi

  # generate document with proper page number (multiple of 4)
  pdfbook $FORMAT_OPTION --signature $NUM_PAGES --booklet true --landscape "$DOC_ORIGINAL" -o "$DOC_BOOKLET"
fi



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


# sudo wget -O /usr/local/bin/generate-booklet http://bernaerts.dyndns.org/download/ubuntu/generate-booklet
# sudo chmod +x /usr/local/bin/generate-booklet


# sudo apt-get install nautilus-actions
# gsettings set org.gnome.desktop.interface menus-have-icons true



4. ACCESS AS NAUTILUS SCRIPT
To access this imposition script as a Nautilus Script thru right click menu script / Generate Booklet, it needs to be accessible from the standard script folder.

This can be done with some simple commands :

# ln -s /usr/local/bin/generate-booklet "$HOME/.local/share/nautilus/scripts/Generate Booklet"

sábado, 16 de agosto de 2014

Maragogi - Passeio


O passeio para Maragogi vale a pena! As piscinas naturais são muito bonitas e você pode nadar junto com os peixes. No mergulho com cilindro é cobrado 80 reais por 12 a 15 minutos. Nesse mergulho vocẽ pode ver peixes maiores, moreias, arraias, cavernas, etc. O passeio até as galés é de 60 reais e o passeio dura em torno de 2:00.

Na cidade, para quem optar ir de carro, vale tomar cuidado com os motoqueiros que abordam os carros ainda a caminho, na estrada. Eles sabem pelo emplacamento dos carros se é alugado ou não. Fomos seguidos pelos motoqueiros durante todo o tempo que permanecemos na cidade. Ouvimos boatos que algum deles te indicam praias desertas no intuito de assaltar.

Aconselho a quem for para lá a procurar sempre informações nas pousadas ou posto policial. Não dê ouvido aos motoqueiros, nunca se sabe o que pode acontecer.

Dê preferencia pela balsa lá em Porto de Pedras, custa 10 reais cada viagem. Se optar em ir pela estrada pode ser que fique encalhado próximo de Porto Calvo, mas só pela AL-460. Mas se preferir ainda dar a volta, pegue a AL-105, vai dar uma volta maior mas vai chegar bem.


sexta-feira, 20 de junho de 2014

Permissão de escrita no sdcard motorola razr d1

criar o arquivo rules:

touch /etc/udev/rules.d/51-android.rules

instalar:
apt-get install mtp-tools mtpfs

executar o mtp-detect para ver a id e pid

Device 0 (VID=22b8 and PID=64b5) is UNKNOWN.

adicionar a linha no arquivo criado:
 SUBSYSTEM==”usb”, ATTR{idVendor}==”22b8”, ATTR{idProduct}==”64b5”, MODE=”0666″

service udev restart

montar:
mtpfs -o allow_other /media/motorola/

desmontar:
umount mtpfs

domingo, 1 de junho de 2014

tomcat7 página de administração

http://localhost:8080/manager/html