Install Fedora 19 in MacBook Pro8,1 with Wireless driver b43

14 de agosto de 2013 Deixe um comentário

Hi,

Last week, I tried to install Fedora 19 in my MacBook Pro 8,1, non-retina. My problem is: I need MacOS X, I have Fusion Drive with one SSD and one HDD, and I can not format my Mac. After told that, how I get my Fedora 19 in  my Mac? Mac uses EFI boot system, because this and one bug in Fedora 19 installation, you probably will not sucess on Fedora 19 installation. Here my step-by-step:

First I shrink my fusion drive to get some free space, you can find my question on MacRumors to know how I get this.

After that, I made one Fedora 18 USB installation disk, and install normally in my macbook, After reboot, press Option to get boot into Fedora partition. After you login in fedora, do this:

– Update your version:

yum update

I got almost 600MB of update! Yes, it`s BIG!!

– Install FedUP packaged

– Upgrade to Fedora 19 using FedUP:

sudo fedup --network 19

After long time downloading new files, and restart computer, you got new Fedora 19. But, wireless doesn’t work.. I look around in internet, and after few sites I get the correct drive for my Broadcom 4331, to install the correct driver do this:

# wget http://www.lwfinger.com/b43-firmware/broadcom-wl-5.100.138.tar.bz2
# tar -xjf broadcom-wl-5.100.138.tar.bz2
# b43-fwcutter -w /lib/firmware/ broadcom-wl-5.100.138/linux/wl_apsta.o
# rmmod b43
# modprobe b43

After that, just restart NetworkManager:

service NetworkManager restart

Now your Fedora 19 Wireless driver works fine!

Questions? Leave your comments…

Cheers,

Categorias:Fedora Tags:, , , ,

HowTo Django: One database for auth, and each user connect to different database.

2 de agosto de 2013 Deixe um comentário

First of all, this is my First post write in English in my blog, so, excuse me for any errors.

The problem:

I have one database named auth.db, in this app Django will store only users, sessions, auth dbs etc..  Each user will connect to a different database, named in dbname field stored in UserProfile, all other models connect to this database. So how can I do this? Using  mymodel.objects(using=UserProfile.dbname).all  works in some type of code, but when you in view call myForm.is_valid(), django try to validate using the “default” database. Using only db-route doesn’t work, because in db-route class I don’t have access to the request and for consequence I can’t get UserProfile.

So… after ask in stackoverflow and some time spent in code, I found a solution. And I describe right now:

The only way to get this right is make one middleware to get database name and work with locals thread, create one file named middleware.py, and put this:

from threading import local
from django.contrib.sessions.models import Session
from django.contrib.auth.models import User
from web_core.models import UserProfile

my_local_global = local()

class CustomerMiddleware(object):
def process_request(self, request):
my_local_global.database_name = get_database_name(request)

    def get_database_name(request):
       session_key = request.session.session_key
try:
session = Session.objects.get(session_key=session_key)
uid = session.get_decoded().get('_auth_user_id')
user = User.objects.get(pk=uid)

profile = UserProfile.objects.get(pk=uid)

if profile:
return profile.dbname
else:
return None
except:
return None

after this, add middleware.py in your settings.py:

MIDDLEWARE_CLASSES = (
(..)
    'middleware.CustomerMiddleware',
)

to finish, make one more file to get db router:

File: authrouter:

class PadraoRouter(object):
    def db_for_read(self, model, **hints):
        from middleware import my_local_global
        return my_local_global.database_name

    def db_for_write(self, model, **hints):
        from middleware import my_local_global
        return my_local_global.database_name

    def allow_relation(self, obj1, obj2, **hints):
        return None

    def allow_syncdb(self, db, model):
        return True

class AuthRouter(object):
    def db_for_read(self, model, **hints):
        if model._meta.app_label == 'auth':
            return 'auth_db'
        if model._meta.app_label == 'sessions':
            return 'auth_db'
        if model._meta.app_label == 'web_core':
            return 'auth_db'
        return None

    def db_for_write(self, model, **hints):
        if model._meta.app_label == 'auth':
            return 'auth_db'
        if model._meta.app_label == 'sessions':
            return 'auth_db'
        if model._meta.app_label == 'web_core':
            return 'auth_db'
        return None

    def allow_relation(self, obj1, obj2, **hints):
        if obj1._meta.app_label == 'auth' or\
           obj2._meta.app_label == 'auth':
            return True
        if obj1._meta.app_label == 'sessions' or\
           obj2._meta.app_label == 'sessions':
            return True
        if obj1._meta.app_label == 'web_core' or\
           obj2._meta.app_label == 'web_core':
            return True
        return None

    def allow_syncdb(self, db, model):
        if db == 'auth_db':
            return model._meta.app_label == 'auth'
        elif model._meta.app_label == 'auth':
            return False
        return None

NOTE: I need to put import in each def, because Django 1.5.1 has a bug, if you put import into top of file.. cycle imports..

after this, change again your settings.py to add the router:

DATABASE_ROUTERS = ['authrouter.AuthRouter',
                    'authrouter.PadraoRouter']

Remember:

I make this way, because I have one database, only for auth.. each user can access a different database, depending what is save in dbname field.

If you have other solution or some questions, please let’s me know in comments!

Configurando o VIM para trabalhar com python

10 de julho de 2013 Deixe um comentário

Sim amigos, o bom e velho vim! Estarei mentindo a vocês se disser que só utilizo o emacs, vira e mexe me pego usando o vim e estarei mostrando abaixo como eu deixo ele do jeito que eu gosto para trabalhar com python.

Bom, antes de mais nada, irei trabalhar com VIM na última versão, baixando os fontes e compilando, por isso precisaremos do hg, make, gcc e kernel-headers, caso não tenha instalado eles ainda, instale-os:


$ sudo yum install hg gcc make kernel-headers

Após instalado, iremos começar a baixar e instalar o vim, para isso, basta seguir os passos abaixo (irei realizar os procedimentos na minha HOME, caso você queira em outro local, basta mudar a primeira linha):

$ cd ~
$ hg clone https://vim.googlecode.com/hg/ vim
$ cd vim/src
$ ./configure --enable-pythoninterp --with-features=huge --prefix=$HOME/opt/vim
$ make && make install
$ mkdir -p $HOME/bin
$ cd $HOME/bin
$ ln -s $HOME/opt/vim/bin/vim
$ which vim
$ vim --version

Depois disso a forma mais rápida que eu achei até agora é usando o projeto spf13, que engloba um monte de plugins, bundles, e configurações. Deixa seu Vim, com os highlights habilitados, com folding e outras coisinhas mais…

Pra instalar ele, não é nada dificil, basta apenas:

$ curl http://j.mp/spf13-vim3 -L -o - | sh

Pronto! com isso, você terá uma configuração “pré” feita, basta abrir seu ~/.vimrc e editar algumas para o seu gosto.

Qualquer dúvida, só deixar um comentário.

Até a próxima pessoal!

Categorias:Develop, Fedora Tags:, , ,

Instalando o EMacs

5 de julho de 2013 Deixe um comentário

Bom, conforme dito anteriormente, estou começando a definir meu workspace no Fedora 19,  como desenvolvedor python e shell script, para iniciar preciso instalar 2 coisas importantíssimas! O Vim e o emacs, pois nenhum dos dois vem por padrão no Fedora.

P.S.: Vocês vão reparar o uso do sudo em alguns comandos, é que por segurança e comodismo, eu não uso o root no meu dia-a-dia, porém se você faz uso, basta não informar o sudo antes dos comandos.

# sudo yum install vim emacs

Após instalado, irei configurar o emacs, meu editor preferido, para poder trabalhar de forma legal com o python.

1 . Estou utilizando o arquivo python-mode.el, desenvolvido pela comunidade python, façamos o download dele:

$ cd ~/.emacs.d
$ curl http://launchpadlibrarian.net/21781107/python-mode.el

2. Depois, vamos alterar o arquivo ~/.emacs, e incluir:

(setq auto-mode-alist (cons '("\\.py$" . python-mode) auto-mode-alist))
(setq interpreter-mode-alist (cons '("python" . python-mode)
interpreter-mode-alist))
(autoload 'python-mode "python-mode" "Python editing mode." t)

(global-font-lock-mode t)
(setq font-lock-maximum-decoration t)

(setq-default indent-tabs-mode nil)
(setq default-tab-width 4)

essas linhas são para habilitar o uso do python-mode.

3. Feito isso, teremos que adicionar alguns programas desenvolvidos em python, e pra isso temos que instalar o pip:

$ sudo yum install python-pip

4. Bom, agora vamos instalar a biblioteca de Refectoring chamada Ropemacs, com ele temos – dentre outras coisas – o autocomplete, porém antes temos que instalar o pymacs, essencial para trabalhar com python no emacs.

$ curl -L https://github.com/pinard/Pymacs/tarball/v0.24-beta2 | tar zx $ cd pinard-Pymacs-016b0bc $ make $ cp pymacs.el ~/.emacs.d/pymacs.el $ emacs -batch -eval '(byte-compile-file "~/.emacs.d/pymacs.el")'
$ pip install https://github.com/pinard/Pymacs/tarball/v0.24-beta2

vamos agora configurar no ~/.emacs:

(autoload 'pymacs-apply "pymacs")
(autoload 'pymacs-call "pymacs")
(autoload 'pymacs-eval "pymacs" nil t)
(autoload 'pymacs-exec "pymacs" nil t)
(autoload 'pymacs-load "pymacs" nil t)

Agora vamos instalar o Ropemacs:

$ pip install http://bitbucket.org/agr/ropemacs/get/tip.tar.gz

no ~/.emacs inclua:

(require 'pymacs)

(pymacs-load "ropemacs" "rope-")
(setq ropemacs-enable-autoimport t)

5. Agora falta instalar o pyflakes e o pep8, que trabalham em conjunto com o Flymake, que já vem como padrão nas últimas versões do EMacs, caso você não tenha ele, você terá que instala-lo.

$ pip install pyflakes pep8

Depois configurar no ~/.emacs :

(when (load "flymake" t)
  (defun flymake-pyflakes-init ()
    (let* ((temp-file (flymake-init-create-temp-buffer-copy
                       'flymake-create-temp-inplace))
           (local-file (file-relative-name
                        temp-file
                        (file-name-directory buffer-file-name))))
      (list "/home/lslf/<caminho_virtualenv>/bin/pyflakes" (list local-file))))

  (add-to-list 'flymake-allowed-file-name-masks
               '("\\.py\\'" flymake-pyflakes-init)))

(add-hook 'find-file-hook 'flymake-find-file-hook)

(defun my-flymake-show-help ()
  (when (get-char-property (point) 'flymake-overlay)
   (let ((help (get-char-property (point) 'help-echo)))
    (if help (message "%s" help)))))

(add-hook 'post-command-hook 'my-flymake-show-help)

(delete '("\\.html?\\'" flymake-xml-init) flymake-allowed-file-name-masks)</pre>

Bom, o básico está aí, se você utiliza outros plugins ou mesmo qualquer dúvida, deixe uma mensagem nos comentários.

Até a próxima.

Categorias:Develop, Fedora Tags:, , ,

Olá, mundo (2) !

5 de julho de 2013 Deixe um comentário

Olá a todos, resolvi agora a começar a postar algumas coisas neste blog. Como deu pra perceber, criei o blog há alguns meses, porém nada de nada nele. Desculpas é que não faltam, porém agora resolvi deixar ele mais ativo.

Vou aproveitar pra iniciar o blog, pois estou para fazer uma instalação limpa do Fedora 19. E estou mudando um pouco os ares da minha programação para o linux – até que enfim! Então estarei aqui, postando muitos códigos, algumas dicas e alguns pensamentos e textos que acredito ser de importância.

Bom, é isso…  estarei postando alguns passos que estarei fazendo pra deixar o meu novo Fedora pronto para programar.

Categorias:Sem categoria Tags:

Olá, mundo!

15 de outubro de 2012 1 comentário

flor1

Bem vindo ao WordPress.com! Este é seu primeiro post. Clique no link Editar para modificá-lo ou excluí-lo, ou comece um novo post. Se preferir, use este post para dizer aos leitores porque começou este blog e os planos que tem para ele.

Boa blogagem!

flor3

Categorias:Sem categoria