rayed.com IPv6 Ready!
This website rayed.com is now IPv6 ready:
$ dig rayed.com AAAA
;; QUESTION SECTION:
;rayed.com. IN AAAA
;; ANSWER SECTION:
rayed.com. 21600 IN AAAA 2a01:7e00::f03c:91ff:fe70:5c6a
You can test IPv6 readiness for any website from IPv6 Test service.
Change Default Editor in Ubuntu
Just type:
sudo update-alternatives --config editor
Managing Python Environments with “virtualenvwrapper”
What is virtualenvwrapper
virtualenvwrapper is a tool that (as the name suggest) wrap “virtualenv” program, virtualenv solve the following problem:
Fixing “cannot change locale (UTF-8)” error
I am trying new way to fix the annoying “cannot change locale (UTF-8)” error, this error usually show when you login from your OSX to a Linux machine:
Update Linux without a password
So you managed to login to your Ubuntu Linux machine with a password by using the magic of ssh keys, and you installed “apticron” to email you whenever their is a system update, you login to the system and issue the update command “sudo aptitude update” and “sudo” asks you about your password! not only it is annoying, it also can’t be automated, imaging you manage 10 servers and you have to type the password to update each machine! or you want to automate using some remote execution application like Fabric or Salt (I am Python fan, so I won’t mention Chef or Puppet here).
Best GIT cheat sheet
Click on each region to find out how to change its state: http://ndpsoftware.com/git-cheatsheet.html
الحذاء وطبق الكريستال
قصة للأطفال، تحكي عن حذاء جديد يتسخ من اول استخدام مما يجعله عرضة للسخرية من قبل صحن الكريستال.
بعد فترة يمل الطبق من السخرية ويبدأ الحديث مع الحذاء عن كيفية تعرضه للاتساخ، ويبدأ الحذاء بالحديث عن مغامراته اليومية خارج المنزل، وكيف انه يفيد صاحبه كل يوم.
بعد ما تشبعت مخيلة الطبق من مغامرات الحذاء اليومية بدأ يحس بمدى تفاهة حياته، وحاجته لان يكون مفيداً أكثر من الاستخدام النادر عند قدوم الضيوف.
My First Makefile
The following is a sample Makefile for simple project, here I am building a simple “Bloom Filter” library, and “main” program to use it.
The library will have the following files:
- hash.h and hash.c
- bloom.h and bloom.c
and we should get “libbloom.a” out of it.
The “main” program will use:
- main.c
- bloom.h
- libbloom.a
and we should get “main” executable. So our make file should look like this:
$ cat Makefile
CFLAGS=-Wall -O3
LDFLAGS= -L.
LDLIBS=-lbloom
CFLAGS += `pkg-config --cflags libpcre`
LDFLAGS += `pkg-config --libs libpcre`
OBJS=main.o other.o libbloom.a
BLOOM_OBJS=hash.o bloom.o
all: main libbloom.a
main: $(OBJS)
$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
libbloom.a: $(BLOOM_OBJS)
ar rcs $@ $^
.PHONY: clean
clean:
-rm main libbloom.a *.o
Makefile use TAB not spaces for indentation.
Minimal Django Project: Part 2 … Flat Pages
In this step we will setup the Flatpage App, Flatpage allows you to create simple static pages from the Admin interface:
**mycms$ mkdir templates**
**mycms$ vi mycms/settings.py**
:
MIDDLEWARE_CLASSES = (
:
# Add Flatpage Middleware
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
)
:
TEMPLATE_DIRS = (
:
'/Users/rayed/python/mycms/templates',
)
:
INSTALLED_APPS = (
:
# Add Flat Pages App
'django.contrib.flatpages',
:
)
:
**mycms$ vi mycms/urls.py**
:
# Your other patterns here
# SHOULD BE THE LAST RULE
urlpatterns += patterns('django.contrib.flatpages.views',
(r'^(?P<url>.*)$', 'flatpage'),
)
**mycms$ ./manage.py syncdb**
**mycms$ mkdir -p templates/flatpages**
**mycms$ vi templates/flatpages/default.html**
<!DOCTYPE html>
<html>
<head>
<title>{{ flatpage.title }}</title>
</head>
<body>
<h1>{{ flatpage.title }}</h1>
{{ flatpage.content }}
</body>
</html>
Now from the admin interface add a new page from “Flat pages” app, and you can view directly from the normal site.
Minimal Django Project: Part 1 … First Run
Update: Django 1.6+ don’t need any of these steps! it will work out of the box.
The following is the shortest way to create DB backed Django project, it uses SQLite as a backend, which make the setup very easy and fast.
I usually use for testing new Django modules or apps.
**$ django-admin.py startproject mycms**
**$ cd mycms**
**mycms$ chmod +x manage.py **
**mycms$ vi mycms/settings.py **
import os
PROJECT_ROOT = os.path.abspath(os.path.dirname(__name__))
:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': './mycms.db',
:
}
}
:
TIME_ZONE = 'Asia/Riyadh'
:
TEMPLATE_DIRS = (
PROJECT_ROOT + '/templates',
)
INSTALLED_APPS = (
:
'django.contrib.admin',
:
)
:
**mycms$ vi mycms/urls.py **
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
:
# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
)
**mycms$ ./manage.py syncdb**
:
provide username, email, password for admin
:
**mycms$ ./manage.py runserver**
:
To access it from outside
:
**mycms$ ./manage.py runserver 0.0.0.0:8080**
To access it: Frontpage @ localhost Admin @ localhost

