Archive

Posts Tagged ‘linux’

LAZY Agnostic Application Generators (padrino-lazy)

May 21st, 2011

Overview

Through padrino-lazy, we can include some common properties shared between the model object used a base model object

Padrino is very good framework, and almost follows the DRY principle (Don’t Repeat Yourself) When we need to have some common properties shared between the model object of our ORM, using the generator padrino-gen, We can only include these properties in each model to generate.

I hope this idea will be included in Padrino Framework.
Principle / Step

  1. generate a model
  2. convert the model into base model ( move this model into lib/ folder)
  3. save config file with model base’s list
  4. generate a model from base model
  5. generate a migration file

Usage

Step 1-2-3

1
$ padrino-lazy base --c config_file --b base_model_name --f field_to_create

Step 4-5

1
$ padrino-lazy model --c config_file --b base_model_name --f field_to_create --m model_name

Install

1
gem install padrino-lazy --pre

Example

1
$ padrino-lazy base --c config --b BaseModel --f "create_at:datetime is_active:boolean"

now we have

lib/base_model.rb class BaseModel

1
2
3
4
5
6
7
8
9
 
include DataMapper::Resource
 
  # property ,
  property :id, Serial
  property :create_at, DateTime
  property :is_active, Boolean
 
end

config/config.yml

1
2
3
4
 
---
- base: BaseModel
fields: create_at:datetime is_active:boolean
1
$ padrino-lazy model --c config --b BaseModel --f "name:string have_children:boolean born:date foo:integer"  --m User

app/models/user.rb

1
2
3
4
5
6
7
8
class User <  BaseModel
 
  # property ,
  property :name, String
  property :have_children, Boolean
  property :born, Date
  property :foo, Integer
end

db/migrate/001_create_users.rb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
migration 1, :create_users do
  up do
    create_table :users do
      column :id, Integer, :serial =&gt; true
      column :name, String
      column :have_children, Boolean
      column :born, Date
      column :foo, Integer
    end
  end
 
  down do
    drop_table :users
    end
  end

db/migrate/002_add_basic_model_to_user.rb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
migration 2, :add_basic_model_to_user do
  up do
    modify_table :users do
      add_column :name, String
      add_column :have_children, Boolean
      add_column :born, Date
      add_column :foo, Integer
  end
end
 
down do
modify_table :users do
drop_column :name
drop_column :have_children
drop_column :born
drop_column :foo
end
end
end

Known issue

  • VERY VERY alpha code !! (thanks to my pig/lazy side :D )
  • —f options need dobule quote around fields
  • —b write in CamelCase
  • TESTING only with datamapper and activerecord into linux machine

TODO:

  • Test all code !
  • Use Padrino::Generators instead of Commander
  • Default config file name (very lazy :P )

THANK

  • Team Padrino
  • DaddYE
  • Piedinodifata

CODE
https://github.com/WaYdotNET/padrino-lazy

ruby, Script, tips, Uncategorized , , , ,

automatic-screenshot-insertion-in-org

May 4th, 2011

Original idea from http://emacsworld.blogspot.com/2011/05/automatic-screenshot-insertion-in-org.html

Original script using imagemagick:

Using scrot :

1
2
3
4
5
6
7
8
9
10
11
12
(defun org-screenshot ()
  "Take a screenshot into a time stamped unique-named file in the same directory as the org-buffer and insert a link to this file."
  (interactive)
  (setq filename
        (concat
         (make-temp-name
          (concat (buffer-file-name)
                  "_"
                  (format-time-string "%Y%m%d_%H%M%S_")) ) ".png"))
  (call-process "scrot" nil nil nil  "-s" filename)
  (insert (concat "[[" filename "]]"))
  (org-display-inline-images))

Script, tips , , , ,

How to resize LVM logical volumes with ext4 as filesystem

February 3rd, 2011
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
# Unmount the filesystem and check its' LV
umount /mnt/foo
e2fsck -f /dev/mapper/vg0-foo
 
# Shrink ext4 and then the LV to the desired size
resize2fs -p /dev/mapper/vg0-foo 40G
lvreduce -L 40G /dev/mapper/vg0-foo
 
# Before continuing, run e2fsck. If it bails because the partition
# is too small, don't panic! The LV can still be extended with
# lvextend until e2fsck succeeds, e.g.:
# lvextend -L +1G /dev/mapper/vg0-foo
e2fsck -f /dev/mapper/vg0-foo
 
# Resize the filesystem to match the LVs size, check and mount it
resize2fs -p /dev/mapper/vg0-foo
e2fsck -f /dev/mapper/vg0-foo
mount /mnt/foo
1
2
3
4
5
6
7
8
9
10
11
 
umount /mnt/bar
 
# Extend the LV to use all free space
lvextend -l +100%FREE /dev/mapper/vg0-bar
e2fsck -f /dev/mapper/vg0-bar
 
# Resize the partition to fill the LV
resize2fs -p /dev/mapper/vg0-bar
e2fsck -f /dev/mapper/vg0-bar
mount /mnt/bar

source:
source

Script, tips , , , , , ,

tips: search text into list file and order by date

January 13th, 2011

Simple but power command to search text inside file ed order list file by date ….. thx to google and all user

1
grep -rl 'REGEX' * | xargs ls -trl

Script , ,

mini backup with rsync

July 1st, 2010
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/bash
# Backup file remote/local
# By Carlo Bertini [WaYdotNET]
# il tutto utilizzando rsync senza scomodare subversion
 
# RSYNC OPTION 
# -r => ricorsivo
# -l => copy symlinks as symlinks
# -p => preserve permissions
# -v => verbose
# -u => update, ignorare i file che sono più nuovi nella destinazione
# -a => archive mode
# -z => comprime i file durante l invio
# -h => rendere leggibile l output
# --delete => cancello i file estranei nella destinazione
 
# il comando si deve chiamare con:
demo="sync_to_waydotnet [up or down] local_folder remote_folder" 
 
# VARIABILI
base="~/backup"
type=$1
local_folder=$2
remote_folder=$base/$3
host="HOST.EXT"
user="user"
 
if [ $type = "up" ] ; then
	echo "UPLOAD $local ==> $remote"	
	rsync -lrpuazhv --delete -e ssh $local_folder $user@$host:$remote_folder
elif [ $type = "down" ] ; then
	echo "DOWNLOAD ...... $remote ==> $local"
	rsync -lrpuazhv --delete -e ssh  $user@$host:$remote_folder $local_folder
else
	echo -e "la forma corretta da scrivere e' \n $demo'"
fi
echo "Have a nice day :P"

Script, tips , , ,