segunda-feira, 22 de junho de 2015

python imprimir determinada linha

Saturday, October 31, 2009

Python - print section of file using line number


e.g. Print the section of input file 'input.txt' between line number 22 and 89.

Using python enumerate function sequence numbers:
for i,line in enumerate(open("file.txt")):
    if i >= 21 and i < 89 :
        print line,

And if you want to write the section to a new file say '/tmp/fileA'
fp = open("/tmp/fileA","w")
for i,line in enumerate(open("file.txt")):
    if i >= 21 and i < 89 :
        fp.write(line)

Another approach:
print(''.join(open('file.txt', 'r').readlines()[21:89])),

And if you wish to write the section to a new file say '/tmp/fileB'
fp = open("/tmp/fileB","w")
fp.write(''.join(open('file.txt', 'r').readlines()[21:89])),

Read about python enumerate function here and below is a small example using python enumerate function:
>>> for i, student in enumerate(['Alex', 'Ryan', 'Deb']):
...     print i, student
...
0 Alex
1 Ryan
2 Deb
>>>


Also find my other post on Extracting section of a file using line numbers applying awk, sed, Perl, vi editor and UNIX/Linux head and tail command techniques.

autocomplete para python sublime text 2

SublimeJEDI is a Sublime Text 2 and Sublime Text 3 plugin to the awesome autocomplete library Jedi

Installation

with Git

cd ~/.config/sublime-text-2/Packages/
git clone https://github.com/srusskih/SublimeJEDI.git "Jedi - Python autocompletion"

with Sublime Package Control

  1. Open command pallet (default: ctrl+shift+p)
  2. Type package control install and select command Package Control: Install Package
  3. Type jedi and select "SublimeJEDI"

Mudar para autocompletar com ctrl + space
No padrão está como alt + /

Abrir em Preferences --> Key Binding Defautl --> linha 261 no sublime2
mudar de alt + / para ctrl+space

{ "keys": ["ctrl+space"], "command": "auto_complete" },
{ "keys": ["ctrl+space"], "command": "replace_completion_with_auto_complete", "context":
[
{ "key": "last_command", "operator": "equal", "operand": "insert_best_completion" },
{ "key": "auto_complete_visible", "operator": "equal", "operand": false },
{ "key": "setting.tab_completion", "operator": "equal", "operand": true }
]
}

sexta-feira, 19 de junho de 2015

python print

casas decimais

x = 505.0
print("%.10f"%(x/6))
84.1666666667

sexta-feira, 12 de junho de 2015

PlayOnLinux

Office 2010
Já está na lista de instalação do PlayOnLinux.
Pede para instalar winbind
Cria automaticamente a pasta virtual
Baixou o wine 1.7.22, o wine-mono-4.5.2 e outros

Minhateca
Instalei com o arquivo .msi baixado do site. Abrindo o PlayOnLinux, acionar o botão instalar programa, no canto inferior esquerdo tem o link: instalar um programa não listado. Clicar ali, criar um espaço  virtual para o minhateca, selecionar o instalador e pau.

Funcionou perfeitamente, melhor do que pelo virtualbox emulando o windows xp sp3 que estava upando arquivos da partição Linux.

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