list

Mattepuffo's logo
Visualizzare i client connessi in Redis

Visualizzare i client connessi in Redis

Redis ha determinati strumenti per visualizzare informazioni sui client connessi.

Oggi vediamo come visualizzare quelli connessi, con diversi campi; la descrizine la potete vedere qua sotto (ripresa dalla documentazione ufficiale):

    id: an unique 64-bit client ID (introduced in Redis 2.8.12).
    addr: address/port of the client
    fd: file descriptor corresponding to the socket
    age: total duration of the connection in seconds
    idle: idle time of the connection in seconds
    flags: client flags (see below)
    db: current database ID
    sub: number of channel subscriptions
    psub: number of pattern matching subscriptions
    multi: number of commands in a MULTI/EXEC context
    qbuf: query buffer length (0 means no query pending)
    qbuf-free: free space of the query buffer (0 means the buffer is full)
    obl: output buffer length
    oll: output list length (replies are queued in this list when the buffer is full)
    omem: output buffer memory usage
    events: file descriptor events (see below)
    cmd: last command played

Mattepuffo's logo
Android ListView da JSON

Android ListView da JSON

In un precedente articolo vi avevo mostrato come riempire uno Spinner in Android prendendo i dati in remoto in formato JSON.

Oggi vedremo come fare la stessa operazione con una ListView, che però inseriremo in un Fragment.

La base di partenza per i Fragment dentro a un Tab la potete trovare qua.

Adesso andremo a riempire il nostro Fragment con una ListView.

Prima però andiamo a prendere la classe Service per il recupero dei dati:

public class Service {

    private final String remote = "http://www.example.com/";
    
    public String login(String user, String pwd) throws ClientProtocolException, IOException {
        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(remote + "login.php");
        List nameValuePairs = new ArrayList(2);
        nameValuePairs.add(new BasicNameValuePair("user", user));
        nameValuePairs.add(new BasicNameValuePair("pwd", pwd));
        post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = client.execute(post);
        BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
        String line;
        String result = null;
        while ((line = reader.readLine()) != null) {
            result = line;
        }
        reader.close();
        return result;
    }
    
    public String getLastItems(String phpFile) throws ClientProtocolException, IOException, JSONException {
        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(remote + phpFile);
        HttpResponse response = client.execute(post);
        HttpEntity entity = response.getEntity();
        BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8"));
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line).append("\n");
        }
        reader.close();
        return sb.toString();
    }

}

Questo è il metodo che ci servirà nel Fragment, metodo a simile a quello spiegato in altri articoli, quindi non mi ci soffermo.

Mattepuffo's logo
Sencha Touch List da MySQL

Sencha Touch List da MySQL

Seguendo la segnalazione di Ivan (leggi i commenti) ho cambiato i Model in modo da non usare metodi deprecati.

Un ringraziamento a Ivan per la segnalazione.

 

Facciamo un passo avanti con Sencha Touch.

Oggi vediamo il componente List.

Innanzitutto vi ricordo il link di riferimento: clicca qua.

Se cliccate su List vi verranno presentati già degli esempi di partenza.

Quello che faremo noi è caricare i dati prendendoli da MySQL.

La prima cosa da fare è preparare un file in un linguaggio lato server per interrogare il db.

Io lo faccio in PHP:

<?php

$host = "";
$user = "";
$pass = "";
$db = "";
$conn = mysqli_connect($host, $user, $pass, $db) or die(mysqli_connect_error());
if (mysqli_connect_errno()) {
    echo "Connessione fallita: " . die(mysqli_connect_error());
}
$result = mysqli_query($conn, "SELECT * FROM j25_content ORDER BY created DESC LIMIT 20");
$rows = array();
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    $rows[] = array(
        'id' => $row['id'],
        'title' => $row['title'],
    );
}
echo json_encode($rows);
mysqli_close($conn);

L'output è in formato JSON e dalla tabella tiro fuori due campi.

Poi preperiamone un altro per estrarre un recordo singolo; dopo capirete il perchè:

<?php

$host = "";
$user = "";
$pass = "";
$db = "";
$conn = mysqli_connect($host, $user, $pass, $db) or die(mysqli_connect_error());
$cmd = "SELECT * FROM j25_content WHERE id = " . $_GET['id'];
if (mysqli_connect_errno()) {
    echo "Connessione fallita: " . die(mysqli_connect_error());
}
$result = mysqli_query($conn, $cmd);
$rows = array();
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    $rows[] = array(
        'title' => $row['title'],
        'fulltext' => utf8_encode($row['fulltext'])
    );
}
echo json_encode($rows);
mysqli_close($conn);

La List la metteremo in una View in modo che quando cliccheremo su una riga andiamo a vederne il dettaglio.

Mattepuffo's logo
Resizing di immagini in PHP con Wideimage

Resizing di immagini in PHP con Wideimage

Ho già parlato più volte di come effettuare il resizing di una immagine in PHP durante l'upload.

Però mi è stata suggerita quest'ottima libreria per manipolare e salvare immagini: Wideimage.

Con questa libreria è posibile fare anche il resizing, il cropping e il merging in maniera semplice.

Qui vederemo come fare l'upload e il resizing.

Com'è possibile vedere dalla documentazione è possibile passare alla funzione resize() anche solo l'altezza o la larghezza; in questi casi l'altro lato verrà ridimensionato in automatico mantenendo le proporzioni.

E questa è una cosa molto comoda.

Qui potete la doc abbastanza completa.

Nell'esempio useremo subito l'upload multiplo con il controllo sulla larghezza in modo tale che se è più larga di 500px venga ridimensionata.

Quindi partendo da questo form:

<form action="" method="post" name="news" enctype="multipart/form-data">

<input type="file" name="file[]" /><br/>

<input type="file" name="file[]" /><br/>

<input type="file" name="file[]" /><br/>

<input type="submit" value="Submit" name="btn_news" />

</form>

Che ha tre input file e quindi permette da 1 a 3 file contemporaneamente.

Mattepuffo's logo
Lista orizzontale centrata con i CSS

Lista orizzontale centrata con i CSS

Dopo vari tentativi e guide seguite sono riuscito finalmente ad ottenere quello che volevo: una lista orizzontale centrata dentro a un div.

Cominciamo dall'HTML:

<div id="menu-ita">
<ul>
<li><a href="index.php?lang=it">Home</a></li>
<li><a href="storia.php?lang=it">Storia</a></li>
<li><a href="collezioni.php?lang=it">Collezioni</a></li>
<li><a href="pv.php?lang=it">Punti vendita</a></li>
<li><a href="contatti.php?lang=it">Contatti</a></li>
<li><a href="contatti.php?lang=it">Registrati</a></li>
<li><a href="backstage.php?lang=it">Backstage</a></li>
</ul>

</div>

L'esempio ve lo prendo direttamente da un sito che mi è stato commissionato e che sta per essere messo online.

Come vedete ho un div con dentro una lista non ordinata; ogni voce della lista è un link.

In sostanza è un classico menu orizzontale.