jueves, 27 de agosto de 2015

OS X - Illegal instruction: 4 - Docker Compose



Hi!

The new age has arrived! I am posting in english and I've moved to the Mac world

Well.. The thing is that I have an old (and super cool) Macbook pro, I was playing with docker:

docker-compose build

And a wild pokemon error appeared:

Illegal instruction: 4

So after searching a while I found that it could be because of some issue related to my old Mac, docker-compose, fig and pip. What? So lets update all this shit :)

brew install python

When installing python with Homebrew, it will also install pip

If you have some issue with your PATH (maybe you don't have /usr/local/bin in PATH) pip is in /usr/local/bin/pip anyway

I've read something about installing directly with:sudo easy_install pip
so you wouldn't have any PATH issue, but it worked like a charm for me with brew.
Finally:
pip install docker-compose

That's it! Docker compose working here

OS X - Illegal instruction: 4 - Docker Compose - ES



Buenas gente!

Me mudé al mundo de OS X y cia.

Tengo una macbook pro medio viejita y hace poco empecé a trabajar con docker, al ejecutar:

docker-compose build

Para armar una imagen. Me deparo con el siguiente error:

Illegal instruction: 4

Después de investigar un mucho, encuentro que este es un issue relacionado a docker-compose, a fig parece y a pip. Toda una confusión. Entonces la solución es instalar la última versión de python para instalar la última versión de pip para instalar la última versión de docker-compose, vamos con las últimas versiones!

Instalar python:

brew install python


Al instalar python con homebrew ya te instalas pip.


Hay que tener en cuenta si pip estará en el PATH, si tienes /usr/local/bin en tu PATH todo bien, o podrás encontrar a pip en /usr/local/bin/pip

También leí por ahí que se puede instalar con:

sudo easy_install pip

Pero como suelo usar hombrew y no tuve problemas, ni siquiera probé eso.
Bueno finalmente ejecutan:

pip install docker-compose

Listo! Problema resuelto!

miércoles, 11 de febrero de 2015

gsusmonzon: Using STI on Rails. Tips

gsusmonzon: Using STI on Rails. Tips: If you ever think of using Single Table Inheritance on Rails, forget about it . It will cause more headaches than benefits. It is simply th...

viernes, 16 de mayo de 2014

Gitlab push on mail not working

The solution was in the issue:
https://github.com/gitlabhq/gitlabhq/issues/6725

Basically you should use this patch:

diff --git a/app/mailers/emails/projects.rb b/app/mailers/emails/projects.rb
index 46aa34d..57ce69e 100644
--- a/app/mailers/emails/projects.rb
+++ b/app/mailers/emails/projects.rb
@@ -26,7 +26,7 @@ module Emails
       if @commits.length > 1
         @target_url = project_compare_url(@project, from: @commits.first, to: @commits.last)
       else
-        @target_url = project_commit_url(@project, @compare.commit)
+        @target_url = project_commit_url(@project, id: @compare.commit.id)
       end

       mail(from: sender(author_id), 
 
 
Or update your gitlab.

lunes, 28 de abril de 2014

Code Review with Redmine and Gitolite

First of all ofcourse I connected to the server throught ssh:
ssh me@server
After that I downloaded the code-review plugin from the repo
wget https://bitbucket.org/haru_iida/redmine_code_review/downloads/redmine_code_review-0.6.3.zip
That was the last download that I found, you should check it out to if there is a new version to download, or clone the repo.
Unzip:
unzip redmine_code_review-0.6.3.zip 

After install, you should configure the plugin in Redmine -> Settings
Setup user/roles permissions for the plugin Settings -> Role, User

Setup the repository for each project needed (Settings -> Repository).

Permission problems:
Create redmine group:
groupadd redmine
Add www-data to redmine group:
usermod -aG redmine www-data
If you want you could also add git user to that group:
usermod -aG redmine git

Change permissions:
sudo chmod 770 -R /hom/git/repositories
sudo chown git:redmine /home/git/repositories -R

And finally issues with gitolite and redmine:

Edit the .gitolite.rc file and to change the umask.
  1. the default umask for repositories is 0077; change this if you run stuff
  2. like gitweb and find it can't read the repos. Please note the syntax; the
  3. leading 0 is required
#$REPO_UMASK = 0077; # gets you 'rwx------'
#$REPO_UMASK = 0027; # gets you 'rwxr-x---'
$REPO_UMASK = 0022; # gets you 'rwxr-xr-x'

In my case it was actually:

UMASK                       =>  0022,

sábado, 28 de septiembre de 2013

mate-panel: Como cambiar el color de letra.

El tema gtk o "Interface Theme" que estes usando define ese color.

Entonces lo que tendrías que hacer si, por ejemplo, quieres modificar el tema *elementary*

deberías ir como root a la carpeta: /usr/share/themes/elementary/
fijarte si en el archivo gtkrc, dice algo como:
#include "Apps/xfce-panel.rc"
o
include "Apps/dark-panel.rc"

Si tiene un # enfrente quiere decir que está comentado entonces tienes que sacarlo

y editar dicho archivo, por ejemplo, si decía:

include "Apps/xfce-panel.rc"

debes editar el archivo
/usr/share/themes/elementary/gtk-2.0/Apps/xfce-panel.rc

En ese archivo debe decir:
style "elementary-panel"

Ahí es donde se define el color de letras, fg es la abreviación de foreground, y se refiere justamente a eso.
Entonces defines por ejemplo, que tu panel sea rojo:
fg[NORMAL] = "#D00"

Si no conoces los colores en hexadecimal podes usar herramientas como http://www.colorpicker.com, gimp, o incluso gedit, ya que tiene un plugin para eso.

Se me olvido algo. El archivo xfce-panel.rc debe contener las siguientes líneas:

class "PanelApp*" style "elementary-panel"
class "PanelToplevel*" style "elementary-panel"
class "*Xfce*Panel*" style "elementary-panel"
widget "*fast-user-switch*" style "elementary-panel"
widget "PanelToplevel*PanelAppletFrame" style "elementary-panel"
widget "PanelToplevel*PanelMenuBar" style "elementary-panel"
widget "PanelToplevel*PanelWidget*" style "elementary-panel"
widget "*CPUFreq*Applet*" style "elementary-panel"
widget "*Xfce*Panel*" style "elementary-panel"
widget_class "BonoboPlug*PanelApplet*" style "elementary-panel"
widget_class "*tray*" style "elementary-panel"

Si alguna está comentada, descomentala. Aparentemente esas líneas sirven para asignar el estilo definido a esas clases y widgets.
En realidad no se mucho sobre el tema, tal vez haya alguna forma más fácil de cambiar el color de letra de mate-panel. Aunque tampoco es taaan complicado.

martes, 7 de mayo de 2013

Apache y Webrick (rails 3) con certificados ssl


Una vez instalados los módulos, procederemos con la creación del certificado. En primera instancia generamos la llave privada(private-key):
openssl genrsa -out cert.key 1024
Ahora generamos el CSR (Certificate Signing Request), usando la key generada antes:
openssl req -new -key cert.key -out cert.csr
Y ahora generamos el certificado en sí utilizando la key y el CSR:
openssl x509 -req -days 365 -in cert.csr -signkey cert.key -out cert.crt

Para Webrick

Para generar server.csr
openssl req -new -x509 -days 3650 -nodes > server.csr

-nodes option ask for some info
-days 3650 ~= 10 years

Crear un RSA Key
openssl rsa -in privkey.pem -out server.key

Crear un certificado
openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650

Suponiendo que los archivos generados están en una carpeta csr, en la raíz de la aplicación, en script/rails agregar/modificar:

require 'rubygems'
require 'rails/commands/server'
require 'rack'
require 'webrick'
require 'webrick/https'

module Rails
    class Server < ::Rack::Server
        def default_options
            super.merge({
                :Port => 3000,
                :SSLEnable => true,
                :SSLVerifyClient => OpenSSL::SSL::VERIFY_NONE,
                :SSLPrivateKey => OpenSSL::PKey::RSA.new(
                       File.open("csr/server.key").read),
                :SSLCertificate => OpenSSL::X509::Certificate.new(
                       File.open("csr/server.crt").read),
                :SSLCertName => [["CN", WEBrick::Utils::getservername]]
            })
        end
    end
end 

Esto obliga al server a utilizar siempre https, lo cual en realidad no es tan útil teniendo en cuenta que solo usamos webrick en development.
En el caso de que tengas en producción apache, algo realmente más útil es usar rack-ssl-enforcer que nos permite usar https en algunas rutas y http en otras sin modificar el servidor (script/rails.rb).
Por ejemplo, si queremos que solo los archivos .js sean servidos por http y todo lo demás por https hacemos lo siguiente:
* Modificamos el archivo config/enviroments/production.rb y le agregamos las linea:
    # rack-ssl-enforcer
    config.middleware.use Rack::SslEnforcer, :except => [/\.js$/], :strict => true
para más información ver rack-ssl-enforcer.
De esta manera solo en producción necesitarás usar https y en development podrás usar http, que es más rápido.

Para apache

Generar un apache.pem con: openssl req -new -x509 -days 3650 -nodes -out apache.pem -keyout apache.pem donde Common Name es www.dominio_de_tu_empresa.com Luego hay que generar el link simbólico que apache utiliza que es un hash. Para esto vemos que salida obtenemos de: openssl x509 -hash -noout < apache.pem Obs: Para ejecutar el comando anterior apache.pem necesita tener permisos adecuados, luego podemos volver a aplicar permisos 600 (ver final del post). Al número que obtuvimos lo llamaremos 'hash_salida'. Usa ese número para generar el link simbólico: ln -sf apache.pem hash_salida.0 Aplicamos los debidos permisos: chmod 600 apache.pem

Y esta sería la configuración de un VirtualHost en un server que solo sirve una única aplicación:




<VirtualHost *:80>
ServerName nombre_de_dominio.com
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /path/de/la/aplicacion/public/
<Directory /path/de/la/aplicacion/public/>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
</Directory>
ErrorLog /var/log/apache2/nombre_de_la_app/error.log
CustomLog /var/log/apache2/nombre_de_la_app/access.log combined
</VirtualHost>


NameVirtualHost *:443
<VirtualHost *:443>
ServerName nombre_de_dominio.com
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /path/de/la/aplicacion/public/
<Directory /path/de/la/aplicacion/public/>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
</Directory>
ErrorLog /var/log/apache2/nombre_de_la_app/error.log
CustomLog /var/log/apache2/nombre_de_la_app/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
</VirtualHost>