Derniers articles

Catégories

Bash Jquery Linux php PluXml Proxy Raspberry Pi ssh Tools Tunnel Unix

Selector - bash history

11 décembre 2012

Selector est un petits outils de capture de commandes bash développé par François Fleuret. Il offre une interface des plus simple pour naviguer au travers de l'historique des commandes et des chemins d'accès via des raccourcis clavier. Une fois l’outil mis en place il suffit d'utiliser les touches (Alt+r) pour naviguer à travers l’historique des commandes et (Alt+d) pour retrouver tout les différents chemins visités.

Bien pratique pour naviguer rapidement dans son arborescence et retrouver rapidement des commandes déjà utilisées. Selector supporte via (Alt-r) la recherche dès le premier caractère (à la google), compatible avec les expressions régulières ...


Sa mise en place est des plus simple:

  1. Rapatrier les sources
  2. Construction du binaire
  3. Appelle du soft dans son ~.bashrc


Pour les impatients:

cd ~
mkdir bin/
cd bin/
git clone http://fleuret.org/git/selector/ 
cd selector
make selector
sudo ln -s ~/bin/selector/selector /usr/local/bin/selector

nano ~/.bashrc
#exemple d'intégration à son bash
#if [ -f ~/bin/selector/bash-selector.sh ]; then
#   . ~/bin/selector/bash-selector.sh --hist --cd
#fi

source ~/.bashrc
selector --help
Exemple de rendu de (Alt+r)

Selector (Alt+r)

Lire la suite de Selector - bash history

Classé dans : Accueil, Unix - Mots clés : Bash, Linux, Tools - aucun commentaire

bash_aliases

12 octobre 2012

Lister les alias actifs: alias
Désactiver tout les alias: unalias -a
Désactiver un alias particulier: unalias aliasname

Voici une petite collection d'alias bien pratique:


### Very usefull
alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias .....="cd ../../../.."
alias cdh='cd ~'

alias lt='ls -lhart --color=auto'
alias ll='ls -lF --color=auto'
alias la='ls -alF --color=auto'
alias ls='ls -F'

alias psgb="ps -aux | grep bash"
alias psx="ps -auxw | grep $1"

alias svi='sudo vim'
alias snan='sudo nano'

alias scr='screen -R -D'

alias hcl='history -c; clear'

#Make mount command output pretty and human readable format
alias mount='mount |column -t'

#Show open ports
alias ports='netstat -tulanp'

# if user is not root, pass all commands via sudo #
if [ $UID -ne 0 ]; then
	alias reboot='sudo reboot'
	alias poweroff='sudo poweroff'
	alias halt='sudo /sbin/halt'
	alias shutdown='sudo /sbin/shutdown'
fi

## get meminfo ## 
alias meminfo='free -m -l -t'
 
## get top process eating memory
alias psmem='ps auxf | sort -nr -k 4'
alias psmem10='ps auxf | sort -nr -k 4 | head -10'
 
## get top process eating cpu ##
alias pscpu='ps auxf | sort -nr -k 3'
alias pscpu10='ps auxf | sort -nr -k 3 | head -10'

### Debian apt
alias aptu='sudo apt-get update'
alias aptua='sudo apt-get update && sudo apt-get upgrade'
alias apti='sudo apt-get install'
alias aptr='sudo apt-get remove'
alias apts='apt-cache search'

## shortcut  for iptables and pass it via sudo#
# display all rules #
alias iptlist='sudo /sbin/iptables -L -n -v --line-numbers'
alias iptlistin='sudo /sbin/iptables -L INPUT -n -v --line-numbers'
alias iptlistout='sudo /sbin/iptables -L OUTPUT -n -v --line-numbers'
alias iptlistfw='sudo /sbin/iptables -L FORWARD -n -v --line-numbers'
alias firewall=iptlist

###   Handy Extract Program
extract () {
   ee() { # echo and execute
       echo "$@"
       $1 "$2"
   }
   for x in "$@"; do
       [[ -f $x ]] || continue
       case "$x" in
           *.tar.bz2 | *.tgz )    	ee "tar xvjf" "$x"    ;;
           *.tar.gz | *.tbz2 )    	ee "tar xvzf" "$x"    ;;
           *.bz2 )                	ee "bunzip2" "$x"     ;;
           *.rar )                	ee "unrar x" "$x"     ;;
           *.gz )                 	ee "gunzip" "$x"      ;;
           *.tar )                	ee "tar xvf" "$x"     ;;
           *.zip )                	ee "unzip" "$x"       ;;
           *.Z )                  	ee "uncompress" "$x"  ;;
           *.7z )                 	ee "7z x" "$x"        ;;
       esac
   done
}

### This piece of code lists the size of every file and subdirectory of the current directory,
### much like du -sch ./* except the output is sorted by size, 
###with larger files and directories at the end of the list. 
###Useful to find where all that space goes. 
dusa ()
{
   du -a --max-depth=1 | sort -n | awk '{
               sub("./","",$2);
               size=$1;
               $1="";
               unit="K";
               if (size >= 1024)
               {
                       size = size /1024;
                       unit="M";
               }
               if (size >= 1024)
               {
                       size = size /1024;
                       unit="G";
               }
               printf "%6.1f%s %s\n",  size, unit, $0;
       }'
}

#export
export HISTFILESIZE=5000              # Larger history
export CLICOLOR=1                     # Use colors (if possible)
export LSCOLORS=ExGxFxdxCxDxDxBxBxExEx 

Lire la suite de bash_aliases

Classé dans : Accueil, Unix - Mots clés : Unix, Linux, Bash - 1 commentaire

Du cache pour PluXml

11 octobre 2012

PLuXml est vraiment très rapide. Mais sur un mini pc à base d'arm rien n'est jamais asser léger. Un cache des parties les plus lourdes à calculer parait logique.

La fonction ob_start() de php est parfaite pour cela. Les scripts de créations de cache ne manques pas et on ne va donc pas réinventer la roue. Un script trouver sur amoweb.fr fait exactement ce que je cherche, ne reste plus qu'à l'intégrer à PluXml.

Voici pour commencer le fichier staticcache.php que l'on va utiliser. Posé le dans le dossier racine de PluXml.

<?php

if(!@opendir(PLX_ROOT.'plxCache/')) mkdir(PLX_ROOT.'plxCache/');

class plxCache
{	
	//Trouver une technique pour trouve s'il y a eu une modification
	function startCache($name, $plxMotor)
	{
		//Génère un nom de fichier pour la cache, variable en fonction de modifications :
		$filecache = filemtime(PLX_ROOT.$plxMotor->aConf['racine_commentaires'])
								. '-' . filemtime(PLX_ROOT.$plxMotor->aConf['racine_articles']) . '_' . $name . '_cache.tmp';

		//Le fichier cache existe déjà on l'affiche
		if(file_exists(PLX_ROOT.'plxCache/'.$filecache))
		{
		    $cache = fopen(PLX_ROOT.'plxCache/'.$filecache,"r");
		    while (!feof($cache)) echo fgets($cache, 2048);
		    fclose($cache);
			return 0;
		}
		else
		{
			//On supprime l'ancien fichier cache :
			$filesCache = glob(PLX_ROOT.'plxCache/*_'. $name . '_cache.tmp', GLOB_MARK );
			foreach($filesCache as $fileToDelete ) {@unlink($fileToDelete);}
			
			//On lance la caching		
        	ob_start();
			return 1;
		}
	}

	function stopCache($name, $plxMotor)
	{
		$filecache = filemtime(PLX_ROOT.$plxMotor->aConf['racine_commentaires'])
								. '-' . filemtime(PLX_ROOT.$plxMotor->aConf['racine_articles']) . '_' . $name . '_cache.tmp';

		//Le fichier existe déjà, il a donc déjà été affiché :
		if(file_exists(PLX_ROOT.'plxCache/'.$filecache)) return;

		//On récupère le contenu du cache
		$cachecontent = ob_get_contents();
        ob_end_clean();
		//On affiche le cache
        echo $cachecontent;
		//On sauvegarde le cache dans un fichier
        $cache = fopen(PLX_ROOT.'plxCache/'.$filecache, "w");
        fwrite($cache, $cachecontent);
        fclose($cache);
		
	}
}
?>

Il faut maintenant l'intégrer dans notre site, les parties les plus lourdes à calculer sont les listes des articles des pages home, tag, catégorie. Il me parait également interressant de conserver en cache le menu

Pour les pages home, tags et catégories l'intégration est vraiment simple, il faut juste se veiller à ce qu'il y ai un cache pour chaque numéro de page (pagination). Voici un exemple d'intégration dans le fichier home.php de mon template.

Lire la suite de Du cache pour PluXml

Classé dans : Accueil, Divers - Mots clés : PluXml, php - aucun commentaire

PluXml création d'un plugin

10 octobre 2012

Pour les besoins de ce blog il fallait un système qui puisse gérer la colorisation syntaxique de différents codes et proposer le copier coller du code. Le plugin Jquery Snippet fera l'affaire...


Le système de plugin de PluXml est très bien fait et simple mais nos modifications sont si modestes, à quoi bon alourdir la plume avec un plugin qui forcément va prendre de la ressource. Ce blog tournant sur un Raspberry ceci à son importance, toute relative j’admets...


Pour utiliser snippet il suffit donc d'éditer le fichier header.php ou le fichier correspondant et d'y ajouter quelques lignes, personnellement j’apprécie avoir mes différents fichiers css et js au même endroit, dans l'exemple ci-dessous les fichiers sont posés dans un dossier js dans le répertoire des plugins de pluxml.

<?php
	echo "\t".'<link rel="stylesheet" type="text/css" href="'.PLX_PLUGINS.'js/jquery.snippet.min.css"/>'."\n";
	echo "\t".'<script type="text/javascript" src="'.PLX_PLUGINS.'js/jquery.min.js"></script>'."\n";
	echo "\t".'<script type="text/javascript" src="'.PLX_PLUGINS.'js/jquery.snippet.min.js"></script>'."\n";
	echo "\t".'<script type="text/javascript" src="'.PLX_PLUGINS.'js/blogathome.js"></script>'."\n";
?>

Il faut également quelques lignes ou l'on va configurer les thèmes à utiliser et les différents effets. Perso tout mes codes js se trouvent dans le fichier blogathome.js listé ci-dessus.


Un exemple de directives pour appeler snippet:

$(document).ready(function(){

$("pre.htmlCode").snippet("html",{style:"vim-dark",clipboard:"/blog/plugins/snippet/ZeroClipboard.swf",showNum:false});

$("pre.styles").snippet("css",{style:"vim-dark",clipboard:"/blog/plugins/snippet/ZeroClipboard.swf",showNum:false});
	// Finds <pre> elements with the class "styles"
	// and snippet highlights the CSS code within
	// using the "vim-dark" styling.
	// without showing line numbers.

$("pre.js").snippet("javascript",{style:"vim-dark",clipboard:"/blog/plugins/snippet/ZeroClipboard.swf",showNum:true});
	

$("pre.dynamic").snippet("php",{style:"vim-dark",clipboard:"/blog/plugins/snippet/ZeroClipboard.swf",showNum:true});
		
});

Vous trouverez d'autres exemples sur le site de snippet.

Il suffit ensuite de mettre la class voulue à une balise <pre> afin de voir snippet faire son job...


Lire la suite de PluXml création d'un plugin

Classé dans : Accueil, Divers - Mots clés : PluXml, Jquery - aucun commentaire

Raspberry Pi kesako

07 octobre 2012

Le Raspberry Pi utilise un processeur de type arm, les mêmes que ceux de la pluparts de nos smartphones quoiques ceux-ci ont des processeurs plus récents, plus de mémoires et sont souvents bien plus puissants.

C'est donc un ordinateur vraiment minimaliste, lancé par la fondation du même nom, le projet est essentiellement à but éducatif. Le Raspberry possède un port GPIO lui ouvrant la porte des "sens". En effet ce port lui permet d’interagir avec des senseurs externes, ce qui le rend très intéressant et permet d'imaginer des utilités non soupçonnées.


Mon utilisation du joujou va être plus traditionnel;
  • Serveur de fichier via smb et nfs
  • Serveur de backup via rsync
  • Serveur de streaming via mpd
  • Serveur web


Voila en gros comment le petit va se faire manger...

Lire la suite de Raspberry Pi kesako

Classé dans : Accueil, Divers - Mots clés : Raspberry Pi - aucun commentaire

Fil Rss des articles

page 1 sur 2 suivante

Derniers articles

Catégories

Archives