All work and no play makes Jack a dull boy

segunda-feira, 18 de março de 2019

pdb set_trace() no PHP ? Tem sim!

Se por acaso, um dia, você que é um desenvolvedor Python e precisa trabalhar num código PHP e, como um bom pythonista, você está muito habituado a usar o método set_trace() do Python debugger.

Eis o que você precisa: psysh

Sim, é o que você precisa quando você sente falta do "import pdb; pdb.set_trace()" do Python, mas no PHP.

Seguindo as instruções é bem simples, mas uma versão super curta seria tipo:

$ composer require psy/psysh:@stable 

e no seu código php use:

<?php 
use Psy;
 
// seu código aqui
 
eval(Psy\sh());

Pronto. Vá lá e siga programando.

Ah, também há outra opção, dephpugger . Embora eu não tenha tentado, também parece ser bem prático.

segunda-feira, 20 de fevereiro de 2017

git stash apenas um arquivo

Bem, não é extamente apenas um arquivo.

Assim como git add, o comando git stash possui o parâmetro -p.

Dessa forma você empilha coisas baseado no seu diff.

Bem simples e fácil.

Fonte

quarta-feira, 28 de dezembro de 2016

Copiar último comando no terminal

Pra manter o estilo, vamos direto ao ponto

Coloque o seguinte alias no seu ~/.bashrc ou ~/.bash_profile (ou onde quer que você aloca essas coisas):
alias copyLastCmd='fc -ln -1 | awk '{$1=$1}1' | pbcopy '
=]
Fonte

domingo, 16 de outubro de 2016

criar e enviar patch do git

Como fazer para criar e enviar um patch do git? Por que você faria isso? Ora pense que talvez você precie enviar por email ou, por exemplo, como aplicação num ticket de um projeto open source como o Django.
Vou demonstrar aqui como fazer a partir de um diff.

git diff <commit_inicial> <commit_final> > arquivo_do_patch
Caso você apenas queira aplicar baseado no diff referente ao último commit, faça: (digamos que o hash desse commit seja 5fbd9)

git diff 5fbd9 > arquivo_do_patch
Caso queira aplicar o patch em algum lugar:
git apply arquivo_do_patch
Fácil, né!?

terça-feira, 16 de agosto de 2016

Colar sem auto indentação no vi / vim

Se você não é usuário tão frequente assim do vi / vim, muito provavelmente já passou pela dificuldade de colar trecos de código que contenham qualquer indentação.

Se na origem é algo como
asd {
   qwe
}

Quando você cola vira:
asd {
        qwe
              }

A solução é bem fácil e prática. Antes de colar o texto, faça:
:set paste
Isso habilitará o modo paste. Cole. Pra desabilitar o modo paste, faça:
:set nopaste

=]

Fonte

segunda-feira, 27 de junho de 2016

Listar migrations pedentes no Django

Caso você queira ver a lista de migratios (migrações) pendentes para cada app listada no seu projeto com Django, use:

python manage.py migrate --list | grep "\[ \]\|^[a-z]" | grep "[ ]" -B 1
ou para Django 1.8 em diante:

python manage.py showmigrations | grep "\[ \]\|^[a-z]" | grep "[ ]" -B 1

=]

Fonte

quinta-feira, 23 de junho de 2016

git autocomplete no terminal do mac

Se você tem interesse em habilitar o autocomplete do git no bash do seu Mac OS, eis os passos que você pode tomar:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash

Depois do download, altere seu arquivo ~/.bash_profile inserindo:
if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
fi

Como sempre, em toda alteração no bash_profile, execute e seja feliz:
source ~/.bash_profile

=]

quarta-feira, 24 de fevereiro de 2016

qual número do dia do ano

E se você quiser saber, no ano em que estamos, qual o número do dia.

from datetime import datetime
dia_do_ano = datetime.now().timetuple().tm_yday

bacana, ne?

terça-feira, 23 de fevereiro de 2016

docker: deletar container com status exited

Fica aqui a dica simples para você ter como alias no seu bash.

docker rm -v `docker ps -a -q -f status=exited`

Esse comando apagar container que esteja quieto ( "-q") e com status "exited".

Muito últil, por exemplo, em casos que você esteja com pouco espaço disponível.

=]

terça-feira, 29 de dezembro de 2015

listar todas as urls do seu projeto Django

Não pense em um porquê, mas imagine que um dia você precisa listar todas as urls de seu projeto Django, com caminho completo e parâmetros de forma organizada.

Como você faria?

Há algumas formas de escrever isso, mas o django-extensions tem algo pronto.

$ ./manage.py show_urls

pronto.
sim, só isso!

=]

terça-feira, 20 de outubro de 2015

deletar arquivos no terminal por intervalo de datas

Para deletar arquivos filtrando por um período de datas específico, usar o find é a saída:
find ./ -type f -newermt 2015-01-01 ! -newermt 2015-08-01 -delete

O find possui o parâmetro -delete tornando mais simples esse tipo de operação.

=]

terça-feira, 29 de setembro de 2015

encurtando urls no google usando python

É bom avisar logo que é bem tranquilo de fazer.



Antes de começar, é preciso que você crie um chave da API no console do google developers. As instruções você encontra aqui.

Bem, esse é o código.

import requests
import json

api_url = 'https://www.googleapis.com/urlshortener/v1/url'
api_key = 'AIzaSyD-wgUbjlaBOORxF0mrXzeNsOOafKrnw0U'
url = '{0}?key={1}'.format(api_url, api_key)

headers = {'content-type': 'application/json'}
params = json.dumps({'longUrl': 'http://www.google.com'})

response = requests.post(url, data=params, headers=headers)

if response.ok:
print (response.json()['id'])
else:
print (response.status_code, response.reason)


Algumas notas:
- não esquecer de passar no header o content-type
- o pacote requests só da alegria
- no requests.post() não passar os parâmetros usando 'params', a chave correta é 'data' (não que você vá esquecer ou confundir, mas como eu fiz, não custa avisar).

=]


sexta-feira, 25 de setembro de 2015

Pesquisa sobre Class Based Views


Agradeço se puder preencher.


Powered by Typeform


=]

quarta-feira, 16 de setembro de 2015

extraindo colunas de csv e excel usando pandas

(ou criando subsets de dados usando pandas)



Já mostrei como é fácil ler e exportar dados de arquivo csv ou xls usando pandas, mas digamos que diante de um dataset com várias colunas, você precise isolar algumas.

Dado o seguinte:
In [1]:
import pandas as pd
In [3]:
dados = pd.read_csv('file.csv')
In [4]:
dados
Out[4]:
abcd
01234
15678

Caso você queira um range de colunas você pode:
In [5]:
dados.ix[:,1:3]
Out[5]:
bc
023
167


Caso queira separar pelo header:
In [6]:
dados[['b','d']]
Out[6]:
bd
024
168


Após isso, em ambos, caso queira os dados de uma coluna, basta usar:
In [7]:
novo = dados[['b', 'd']]
In [8]:
novo['b']
Out[8]:
0    2
1    6

=]

ps: usei o https://try.jupyter.org/ para construir esses exemplos e, lá, sempre são impressos à esquerda o número das colunas.

sexta-feira, 11 de setembro de 2015

verificando se template existe no Django

Há uma forma simples de se verificar se um template existe. Vou apresentar aqui uma forma criando um template_tag.

from django import template

register = template.Library()

@register.simple_tag
def template_exists(template_name):
    try:
        django.template.loader.get_template(template_name)
        return u"Template existe"
    except template.TemplateDoesNotExist:
        return u"Template não existe"

No template ficaria:

{% template_exists 'algumapp/nome_template.html' %}

Note que essa é a implementação mais básica para se verificar. A partir daí é possível fazer bastante coisa.

=]

sexta-feira, 4 de setembro de 2015

como instalar pygame no OSX com python 2.7

pygame

Vamos lá, instalar pygame no OSx tendo python 2.7.x como versão principal, pelo visto, rendeu uma issue movimentada no bitbucket.

Nada complicado.

Antes de instalar o pacote, é preciso cuidar das dependências. Uma instalação com brew já resolver

$ brew install sdl

sdl ou Simple DirectMedia Layer é uma biblioteca que provê uma camada de abstração de baixo nível no hardware - bem útil para jogos.

Depois disso, basta instalar apontando para o repositório:

$ pip install https://bitbucket.org/pygame/pygame/get/default.tar.gz
Aqui, caso não tenha instalado o X11, será necessário baixar e instalar XQuartz.

=]

listar todos os virtualenv com virtualenvwrapper

Para listar todos os virutalenvs que você possui, o virtualenvwrapper tem, dentre vários de seus comandos, um específico para isso:

$ lsvirtualenv

o comando possui 3 parâmetros:
-b breif ou breve. lista apenas os nomes do ambientes
-l long ou longo. é o mais verboso e, também, o default.
-h help, óbvio clássico

Aqui fica a lista de todos os comandos.

=]

terça-feira, 1 de setembro de 2015

de excel para csv com pandas em 3 linhas


Veja como é ridiculamente fácil transformar um arquivo do Excel em csv usando pandas do python
import pandas as pd
data = pd.read_excel("arquivo.xls")
data.to_csv("arquivo.csv")
simples assim.

ainda há outros parâmetros em cada um desses métodos usados, você pode:
- indicar qual 'sheet' do xls e mais
- indicar encoding, colunas, header do csv e muito mais.

Só lembre-se que, para essa operação, é necessário instalar o pacote xlrd.


terça-feira, 25 de agosto de 2015

juntar arquivos CSV usando pandas



pandas ou Python Data Analysis Library é um biblioteca open-source que provê ferramentas de alta performance para estrutura e análise de dados para python.

É uma biblioteca bem poderosa e aqui um exemplo bem simples de como usá-la.

Considere:

primeiro.csv
coluna1,coluna2
1,a
2,b
3,c

segundo.csv
coluna3,coluna4
z,m
x,n
c,h

Para mesclar esses dois csv:

import pandas as pd
primeiro = pd.read_csv('primeiro.csv')
segundo = pd.read_csv('segundo.csv')
mesclado = pd.concat([primeiro, segundo], axis=1)

A saída será algo como:

coluna1coluna2coluna3coluna4
01azm
12bxn
23cch

A documentação cobre, obviamente, muito mais - corre lá.


terça-feira, 18 de agosto de 2015

encontrar arquivo ou pasta usando o terminal

Para encontrar arquivos no terminal, por exemplo, no Ubuntu ou mesmo no OSX há uma forma simples.

Suponha que a busca seja pelo error.log:
$ find ~/ -type f -name "error.log"

Ou se fosse por uma pasta (duas formas):
$ find ~/ -type d -name NOME_PASTA

$ find ./ -type d | grep NOME_PASTA

Fonte