Archivio della Categoria : ‘ Codice’

Linux: cancellare files più vecchi quando sono tanti

{ Inserito il 04 nov 2013 da maury }

Non so se avete mai provato a cancellare da una cartella linux i files più vecchi di una certa data, sembra facile con uno script del genere

find <path_to_folder>/*.jpg -mtime +5 -type f | xargs rm -f

ma se la cartella ha decine di migliaia di files compare l’errore “too many arguments” e non se ne esce

ho dovuto quindi andarci giù pesante scrivere uno script che prenda i files più vecchi da una cartella, verifichi se sono più vecchi di un file di riferimento e li cancelli, ma si fermi dopo un certo numero di files per non intasare il server…

fcount=0;
cd <path_to_folder>

touch -d "5 days ago" timestampfile.tmp

for f in `ls -t -r`
 do 
 let "fcount += 1"; 
 #cancello solo se più vecchio di 5 giorni
 if [ $f -ot "timestampfile.tmp" ] 
 then
  rm "$f";
 fi 
 #cancello al max 100 files
 if [ $fcount -gt 100 ]
 then
  break
 fi
done 
Leggi »

PrestaShop e prodotti casuali in vetrina

{ Inserito il 26 gen 2012 da maury }

Usando PrestaShop una delle prime funzionalità che saltano agli occhi è quella della “Vetrina” cioè di una serie di prodotti che possono essere messi in evidenza nella Home Page. La funzionalità di base è gestita dal modulo “homefeatured” ma è, nella configurazione di partenza, abbastanza limitata, in particolare vincola la presenza in vetrina SE E SOLO SE il prodotto appartiene ad una categoria preimpostata (madre di tutte le categorie) chiamata “HOME”.

Cercando in giro si trovano alcune modifiche da fare al modulo per poter mostrare nella vetrina prodotti nuovi o con altri criteri, ma tutti questi con alcuni limiti per le mie esigenze.

In particolare si voleva mostrare in vetrina dei prodotti in modo “casuale” ma cambiando la vetrina stessa solo una volta al giorno, per non confondere i visitatori.

Nessuna delle funzioni della classe Products.php aveva le informazioni necessarie per recuperare un tot di prodotti casuali, con tutte le informazioni necessarie per essere mostrati nella vetrina, ma aggiornando questa lista solo una volta al giorno.

La soluzione è stata aggiungere nel modulo una funzione che recuperi i prodotti

public static function getHProducts($id_lang, $nb)


QUI il codice completo del modulo corretto, salvare come file .php

e poi nella funzione “hookHome” richiamare questa funzione

$products = HomeFeatured::getHProducts(
intval($params['cookie']->id_lang),
($nb ? $nb : 10)
);
Leggi »

Le colonne con incremento automatico di SQL Server

{ Inserito il 21 dic 2011 da maury }

Oggi ho scoperto che le colonne con incremento automatico in SQL Server non sono così ingestibili come pensavo poco tempo fa… infatti si può sapere e modificare qual’è l’id successivo che verrà generato tramite comandi BCC:

Per sapere qual’è il “seed” della tabella:

DBCC checkident ('nome_tabella')

Per reimpostare il “seed” della tabella:

DBCC checkident ('testi', reseed)

Per reimpostare il “seed” della tabella ad un certo valore:

DBCC checkident ('testi', reseed, 144)
Leggi »

WP Table Reloaded: cercare su due tabelle

{ Inserito il 12 dic 2011 da maury }

Ultimamente ho affrontato questo problema: come poter cercare in contemporanea su due tabelle usando WordPress e il fantastico plugin Wp-Table-Reloaded? Ho dovuto fare un po’ di ricerche prima di venirne a capo: prima di tutto la soluzione è totalmente Client Side, in javascript per intenderci, perchè il plugin usa molto (lo si imposta dalle opzioni) la potentissima libreria JS Data Tables, che offre anche una ricca API.

Ecco alla fine la soluzione, poche righe di codice da includere nella pagina che inseriscono il campo per la ricerca, il pulsante per eseguirla e la funzione JS che usa la libreria di “Data Tables” per filtrare le righe nelle due tabelle con id 3 e 4 !

function myFilter(){
    theval = jQuery('#maininput').val();

    oTable3 = jQuery('#wp-table-reloaded-id-3-no-1')
        .dataTable();
    oTable4 = jQuery('#wp-table-reloaded-id-4-no-1')
        .dataTable();

    oTable3.fnFilter(theval);
    oTable4.fnFilter(theval);
}

jQuery(document).ready(function() {
  jQuery('div.PostContent')
    .before('<h3>TEST DI RICERCA:</h3><p>
      <input id="maininput" type="text">
      <input type="button" id="btnSearch" onClick="myFilter();" 
      value="CERCA" /></p><br />');
});
Leggi »

Chrome senza Javascript

{ Inserito il 22 ago 2011 da maury }

A volte, soprattutto in fase di testing delle applicazioni web è opportuno lanciare il browser ma in modo che il Javascript non sia abilitato. Con FireFox si può usare il famosissimo plugin No-Script, mentre per eseguire Chrome senza il Javascript abilitato su XP bisogna lanciare da riga di comando

"C:\Documents and Settings\[USERNAME]\Impostazioni locali\
Dati applicazioni\Google\Chrome\
Application\chrome.exe" -disable-javascript

dove “[USERNAME]” è il nome dell’utente che autenticato si sta usando.

Leggi »

Sql server 2005: informazioni su tabelle e campi

{ Inserito il 04 lug 2011 da maury }
Tags : , , ,
Categorie : Codice

In Sql server a volte sembra non proprio agevole recuperare la struttura di una tabella o altre informazioni sui campi… le seguenti query rendono invece il compito molto semplice

Elenca tutte le tabelle del Database
SELECT * FROM sys.Tables

Elenca tutte le informazioni sulla tabella TABLENAME
EXEC sp_help 'TABLENAME'

Elenca le colonne della tabella TABLENAME
EXEC sp_columns 'TABLENAME'

Elenca alcune informazioni sulle colonne della tabella TABLENAME
SELECT table_name, ordinal_position, column_name, 
data_type, is_nullable,character_maximum_length FROM
information_schema.COLUMNS 
WHERE table_name LIKE '%TABLENAME%'
ORDER BY ordinal_position

Elenca spazio e righe di ogni tabella

qui usiamo la stored procedure non documentata ‘sp_MSforeachtable’

EXEC sp_MSforeachtable @command1="EXEC sp_spaceused '?'"
Leggi »

Sql server da un backup ad un DB

{ Inserito il 23 nov 2010 da maury }

Se dovete prendere un backup di un DB Sql server fatto da un hosting provider (per esempio usando “mylittlebackup” di Aruba) ed importarlo in un Db locale, troverete un problema: tutti gli oggetti avranno come schema l’utente del database invece che il più standard “dbo”.

Per risolvere, dopo aver importato il DB è necessario eseguire per tutti gli oggetti coinvolti uno script del genere

ALTER SCHEMA dbo TRANSFER Mssql12345.tablename

(dove ‘Mssql12345′ è il nome dell’utente del DB e ‘tablename’ il nome della tabella)

questo risulta noioso se gli oggetti sono tanti, la soluzione più semplice (che non coinvolga cursori e query complesse) è quella di eseguire una query del tipo

SELECT 'ALTER SCHEMA dbo TRANSFER Mssql12345.' + name 
FROM sys.objects 
WHERE type='U'

e di usare il risultato per eseguire la query di aggiornamento dello schema…

Leggi »

WordPress Error – Headers Already Sent

{ Inserito il 11 ott 2010 da maury }
Tags : , ,
Categorie : 1 riga di codice

Se lavorate un po’ con WordPress potreste essere già incappati in questo errore, molto fastidioso e a volte di non immediata soluzione.

Sintomo: ad un certo punto viene mostrato un warning sulle pagine del sito che dice “WordPress Error – Headers Already Sent…” il file incriminato è spesso indicato nel messaggio di errore stesso.

Causa: cercando un po’ in giro si capisce subito che il problema è la presenza di spazi o righe vuote DOPO il codice di chiusura ?> in un file php (quello indicato nel messaggio di errore). A volte ma più raramente accade che il problema si uno  spazio presente PRIMA del codice di apertura <?php

Cura: sembrerebbe ovvio che cancellare le righe o gli spazi vuoti in questione dovrebbe risolvere il problema, se questo non funzionasse (per esempio perchè il server linux, il tipo di trasferimento ftp, l’editor di testo o la codifica ANSI/UTF8 aggiungono anche un solo byte) la soluzione è OMETTERE totalmente il tag di chiusura del php ?> pratica perfettamente valida che risolve definitivamente la questione.

Leggi »