Disabilitare apertura automatica iPhoto con iPhone collegato al Mac

Solitamente chi sceglie un Mac lo fà per i più svariati motivi possibili, tra cui la velocità e la semplicità con cui si possono compiere le azioni, anche quelle più complicate come la creazione di uno script che può essere fatto attraverso “Automator” (spiegato qui), oppure l’eliminazione del “deadtime” nell’aprire le applicazioni, potrei rimanere qui ad elencare tutte le potenzialità dei Device di tale azienda, ma ahimè ho script da realizzare, quindi arrivando al dunque…vi sarà capitato di collegare il vostro iPhone (o altro iDevice) al Mac e puntualmente attendete quei secondi necessari a far avviare iPhoto per poi premere cmd+q per chiuderlo nella maniera più rapida possibile in quanto non avete tempo.

Benissimo…Evitiamolo…!!!!

Per evitare questa tremenda perdita di tempo non dovrete far altro che:

  1. Collegare il vostro iPhone;
  2. Aprire l’app “Acquisizione Immagine”
  3. Selezionare nel menù a tendina situato in basso a sinistra-dove vedete ora scritto iPhoto Immagine-nessuna applicazione Immagine

Dopo di che non dovete far altro che ritornare su questa pagina, e pigiare Mi Piace così da essere tutti felici dell’obiettivo raggiunto.

Buon caricamento

Alessio.

di alexiscanny Inviato su iphone

Estrarre tabelle dal proprio Database MySql e visualizzarle attraverso pagina Php

Mi serviva far visualizzare le tabelle del mio Database in modo da poter istruire l’utente su quali campi poteva effettuare la query, grazie a David Walsh (http://davidwalsh.name) sono arrivato a tale conclusione:

Schermata 2013-07-18 alle 20.04.51

Prima di passare alla pratica dovete avere già il database pronto e collegato al webserver, idem mysql.

Passiamo all’implementazione:

Potreste scrivere tutto il codice direttamente in una pagina, io preferisco scindere la sessione della connessione con il database con quella della configurazione per poi creare una terza pagina dove inseriremo i risultati delle query per la visualizzazione delle tabelle.

File di configurazione lo chiameremo config_db.php

<?
php$db_host='127.0.0.1';
$db_user='root';
$db_password='';
$db_name='TSA_Evolution';
?>

File di connessione che chiameremo connessione_db.php

<?php
$db_host='127.0.0.1:3306';
$db_user='root';
$db_password='';
$db_name='TSA_Evolution';
//creo direttamente un file indipendende per la connessione e lo inserisco nel file che desidero
$connessione = mysql_connect($db_host, $db_user, $db_password); 
//se avessi voluto connettermi sull'host miodominio.it avrei dovuto inserire $connessione = mysql_connect('ip:porta', 'utente', 'pwd');
if (!$connessione) // è come dire($connessione== 0)
 die ("Connessione non riuscita: " .mysql_error());
echo "Connesso al web server! "; 
echo "<br>";
$vistadatabase= mysql_select_db('TSA_Evolution');
if ($vistadatabase==0)
 die ("sono morto perche: " .mysql_error());
echo "Accesso al database di TSA Evolution----> OK";
echo "<br>";
?>

 

E infine il terzo file ossia l’esposizione delle tabelle compreso di css e dove andremo a richiamare i due file (configurazione e connessione):

<style>
table.db-table { border-right:1px solid #ccc; border-bottom:1px solid #ccc; }
table.db-table th { background:#eee; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc; }
table.db-table td { padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc; }
</style>
<?php
/* connect to the db */
require 'config_db.php';
require 'connessione_db.php';
//$connection = mysql_connect('localhost','username','password');
//mysql_select_db('my_db',$connection);

/* show tables */
$result = mysql_query('SHOW TABLES') or die('cannot show tables');
while($tableName = mysql_fetch_row($result)) {
$table = $tableName[0];
 
 echo '<h3>',$table,'</h3>';
 $result2 = mysql_query('SHOW COLUMNS FROM '.$table) or die('cannot show columns from '.$table);
 if(mysql_num_rows($result2)) {
 echo '<table cellpadding="0" cellspacing="0" class="db-table">';
 echo '<tr><th>Field</th><th>Type</th><th>Null</th><th>Key</th><th>Default<th>Extra</th></tr>';
 while($row2 = mysql_fetch_row($result2)) {
 echo '<tr>';
 foreach($row2 as $key=>$value) {
 echo '<td>',$value,'</td>';
 }
 echo '</tr>';
 }
 echo '</table><br />';
 }
}
?>

 

Ora richiamate la vostra pagina sul vostro browser e potrete vedere come è strutturato il vostro database.

Per qualsiasi informazione chiedete pure.

Good Luck

Alessio

 

Android: Connessione a MySQL usando PHP

Il motivo principale per l’adozione di un linguaggio di scripting come PHP è dovuto all’interazione con i database.

In questo tutorial vi mostrerò come utilizzare PHP e database MySQL per recuperare informazioni dal server. Per effettuare il collegamento a script PHP, utilizzeremo il protocollo HTTP dal sistema android. Inutile dirvi che comunque per implementare questo tutorial si dovrebbe avere una conoscenza di base di come eseguire script PHP e avviare il server. Se parliamo di architettura client-server, il dispositivo client è l’Android e lato server vi è una combinazione di script PHP e MySQL.

Durante il tutorial useremo un formato importantissimo per lo scambio leggero dei dati, ossia il formato JSON (JavaScript Object Notation).

Piccola premessa sul JSON:

Si basa su un sottoinsieme del Linguaggio di Programmazione JavaScriptStandard ECMA-262 Terza Edizione – Dicembre 1999 (testo sito json). JSON è un formato di testo completamente indipendente dal linguaggio di programmazione, ma utilizza convenzioni conosciute dai programmatori di linguaggi della famiglia del C, come C, C++, C#, Java, JavaScript, Perl, Python, e molti altri. Questa caratteristica fa di JSON un linguaggio ideale per lo scambio di dati.

JSON è basato su due strutture:

  • Un insieme di coppie nome/valore. In diversi linguaggi, questo è realizzato come un oggetto, un record, uno struct, un dizionario, una tabella hash, un elenco di chiavi o un array associativo.
  • Un elenco ordinato di valori. Nella maggior parte dei linguaggi questo si realizza con un array, un vettore, un elenco o una sequenza.

Come farà la nostra applicazione ad usare json?

Quando l’applicazione Android effettuerà la richiesta alla pagina PHP e rimarrà in attesa. Lo script PHP, si connetterà al DB, invierà la query, recupererà la risposta, inserirà la risposta in un oggetto json e lo darà come output. Questo output sarà codificato in formato JSON e inviato al dispositivo. L’applicazione Android otterrà questi dati codificati, li analizzerà e li visualizzerà sul dispositivo Android.

Implementiamo il tutto:

In MySQL creare il database TSA_Evolution, creare tabella Stock. Questa tabella consiste di due colonne. In primo luogo è Stock_id, che è auto_increment e primary_key e avere tipo di dati INT. Seconda colonna è Stock_name, che ha tipo di dati VARCHAR (20).

La query sarà: Vogliamo SELEZIONARE il tutti gli IDENTIFICATIVI delle azioni DALLA nostra TABELLA Stock CHE INIZINO con la lettera A (in maiuscolo ho praticamente evidenziato la query che andremo ad effettuare, ossia:

SELECT Stock_id

FROM Stock

WHERE Stock_name= A

)

Il codice PHP sarà molto semplice:

  • connessione al database
  • esecuzione della query SQL, con il WHERE  a seconda dei dati da POST / GET
  • output in formato JSON

Per esempio avremo questa funzionalità in city.php:

<?

/*ci colleghiamo al database(attenti perchè se lavorate in locale 
l'host è 10.0.2.2 e non 127.0.0.1)*/
php mysql_connect("host","username","password"); 
//selezioniamo il db a cui ci vogliamo connettere
mysql_select_db("TSA_Evolution");
//creamo al query
$sql=mysql_query("select Stock_id from Stock where STOCK_name like 'A%'"); 
/*Il metodo "mysql_fetch_assoc" restituisce un array in base alla query 
fatta e incrementa il dato*/
while($row=mysql_fetch_assoc($sql)) 
//inseriamo tutto nella variabile output
$output[]=$row;
/*stampiamo l'oggetto json, miraccomando a non stampare a video altri commenti, 
altrimenti quando andremo ad eseguire l'app android si bloccherà in quanto non 
riconoscerà i commenti come caratteri json*/
 print(json_encode($output)); 
//chiudiamo la connessione
mysql_close();

?>

Nella nostra applicazione Android dobbiamo:

  • usare un HttpPost per ottenere i dati,
  • convertire la risposta alla stringa JSON
  • analizzare i dati e usarli

Il codice per recuperare dati dal server per la nostra applicazione Android sarà:

package com.list; 

import java.io.BufferedReader; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.ArrayList;

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair; 
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;import android.app.ListActivity; 
import android.net.ParseException;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast; 
public class AndroidPhp extends Activity { /*qualcuno qui ha esteso ad una 
ListActivity ma io preferisco gestirmi da me la risposta*/
JSONArray jArray;
String result = null; 
InputStream is = null; 
StringBuilder sb=null; 

@Override
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.android_php);
final TextView textviewDariRicevuti = (TextView) findViewById(R.id.datiRicevuti);
Button buttonInviaDati = (Button) findViewById(R.id.buttonInviaDati);
buttonInviaDati.setOnClickListener(new View.OnClickListener() { 
@Override
public void onClick(View v) {
//invio richiesta
textviewDariRicevuti.setText(inviaDati());
}
});
}
public String inviaDati(){
String result="";
String stringaFinale="";
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
//Sotto scrivo come si chiama il campo che invio(azione1) e il suo valore (1)
nameValuePairs.add(new BasicNameValuePair("Stock_name","azione1"));
/*queste due righe di codice che vedete qui sotto sono un piccolo trucchetto per ovviare
 (solo per il momento
 all'eccezione “NetworkOnMainThreadException", questa eccezione è importantissima in quanto
 ci dice che siccome stiamo effettuando una connessione nel thread principale avremo dei 
problemi in quanto tutto ciò che riguarda le connessioni o tutto ciò che comporta il 
superamento del limite di tempo massimo tra richiesta/risposta superiore a 5secondi la nostra 
applicazione Android la metterà in pausa appunto perchè stiamo programmando per uno smartphone
 e non possiamo attendere processi che impegnino per troppo tempo la nostra app. Ricordatevi
 una volta testato tutto, create nella classe i thread e gestite tutto dal thread.*/
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
//http post 
try { 
HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("http://10.0.2.2/interroga.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
result = EntityUtils.toString(entity, HTTP.UTF_8);
}
catch(Exception e){ 
Log.e("log_tag", "Error in http connection"+e.toString());
} 
//convert response to string 
try{ 
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
sb = new StringBuilder();
sb.append(reader.readLine() + "\n"); 
String line=null; 
while ((line = reader.readLine()) != null) 
{ sb.append(line + "\n");
} 
is.close();
result=sb.toString(); 
}
catch(Exception e){ 
Log.e("log_tag", "Error converting result "+e.toString());
}
//paring data 

try{ 
jArray = new JSONArray(result); 
/*Quando vi dicevo di non inserire commenti nella pagina php era perchè l'app si
 bloccava proprio su questa
riga, in quanto "result" NON comprendeva caratteri json e il parsing non poteva 
essere effettuato */
JSONObject json_data=null;
for(int i=0;i<jArray.length();i++){
Log.i("TEST","id: "+json_data.getInt("Stock_id")+
", name: "+json_data.getString("Stock_name")+
", cliente: "+json_data.getString("Stock_Client_id")+
", industria: "+json_data.getString("Stock_Industry_id")
);
stringaFinale = json_data.getInt("Stock_id")+ ""+ json_data.getString("Stock_name")+
""+ json_data.getString("Stock_Client_id")+
""+ json_data.getString("Stock_Industry_id")+"\n\n";
}
} catch(JSONException e1){ 
Toast.makeText(getBaseContext(), "Titolo Azionario non trovato" ,Toast.LENGTH_LONG).show();
} catch (ParseException e1) { e1.printStackTrace();
}
}
else { //is è null e non ho avuto risposta
}
return stringaFinale;
}
}

Non me ne vogliano i più esperti ma preferisco fornire una guida completa inserendo anche il Layout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/buttonInviaDati"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Invia dati" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Dati ricevuti:"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/datiRicevuti"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Per ora nessun dato ricevuto" />

</LinearLayout>

Non dimenticatevi di inserire il permesso alla connessione internet in AndroidManifest.xml:

<uses-permission android:name=”android.permission.INTERNET”></uses-permission>

Provateci e fatemi sapere come è andata, aspetto i vostri commenti..

😉 Good Luck

Alessio Scannicchio

 

 

MAMP – mysqlcheck: Got error: 1045 Access denied

A causa della curiosità il più delle volte si imparano tante cose, ma ci sono casi in cui impari proprio dagli errori…..(eccomi presente)

Tutto funzionava benissimo con Apache, MySQL e PhpMyAdmin finché la mia curiosità non mi ha portato a fare modifiche qui:

 

Schermata 2013-07-09 alle 16.39.12

 

in questo modo ho cancellato l’account e ovviamente anche tramite MAMP non potevo più accedere al mio database.

Ho provato a modificare il server, l’user e la password sia del file config.inc.php, sia il file situato in MAMP/bin/phpMyAdmin/config.inc 11.29.24.php ma nulla (ovviamente le modifiche o da Terminale o tramite Text editor, se aprite con Text non riuscirete a salvarlo e vi trovere a dovervi loggare come superuser (“su”) cambiare mille permessi senza ottenere risultati perchè rimarrà “bloccato”)

Dopo vari tentativi ricevevo sempre lo stesso errore:

#1045 – Access denied for user ‘root’@’localhost’ (using password: YES) Unknown language: en-iso-8859-1. phpMyAdmin tried to connect to the MySQL server, and the server rejected the connection. You should check the host, username and password in your configuration and make sure that they correspond to the information given by the administrator of the MySQL server.

 

Ma la tenacia ripaga sempre, quindi ho prima di tutto ripristinato alcuni file riguardanti il phpMyAdmin dal cestino, poi da MAMP ho ripristinato i file da File->Reset to Factory Settings->Development e successivamente chiuso MAMP.

Alla sua riapertura si è presentato un “quasi” nuovo errore..questo è un aspetto fondamentale quando si cerca di risolvere un problema…significa che qualcosa qualcosa ha smosso l’errore, quindi ci manca pochissimo…

Il “quasi” nuovo errore (sempre stesso codice e stesso errore, ma ora direttamente su MAMP) che si presentava era:

Got error: 1045: Access denied for user ‘root’@’localhost’ (using password: YES) when trying to connect.

Schermata 2013-07-09 alle 16.58.51

 

Cosi ho scoperto che la password di default è presente in diversi script sotto la cartella ‘/ Applications / MAMP / bin’.

Ora i passi da seguire sono questi:

1)Scollegate MAMP con STOP e chiudetelo

2)Aprite il nostro amato Terminale (io lo chiamo, WEPS= Work Environment for Problem Solving) e prendiamo i file con estensione “.sh” (appunto shell) e li trasciniamo sul nostro Terminale

3)Per prima cosa stoppiamo tutto, quindi Drag and Drop di:

  • stopApache.sh e date Invio;
  • stopMysql.sh e date Invio

Prendete il file ‘quickCheckMysqlUpgrade.sh’ e lo modificate aprendolo con un Text editor e inserite: -u root -p root  (-u serve per indicare nome utente (root) -p serve per indicare la password) salvate.

  • Drag and Drop su Terminale del file repairMysql.sh
  • Drag and Drop su Terminale del file quickCheckMysqlUpgrade.shvi devono uscire tutti ok, in caso contrario potrete capire cosa non va’)

Successivamente riaprite MAMP startate Apache e MySQL, avviate phpMyAdmin, autenticatevi (root;root).

 

Thanks a lot

Alessio Scannicchio