Piemonte Lab

Esperienze di programmazione

Selezionare tutti gli amici su facebook da una lista importata

Da quando lavoro come social media manager mi scontro sovente con problemi del tipo: ho importato tutta la rubrica di un indirizzo email su un profilo, però adesso ho 3000 contatti da selezionare ad uno ad uno. come fare? scaricare firebug per firefox (io lo uso per fare debug durante la programmazione lato front end, ma può servire anche semplicemente per eseguire un javascript), poi aprire firefox, premere f12, andare su console->lato destro-> scrivere queste poche righe di javascript:

javascript:var inputs = document.getElementsByClassName('checkbox');
for(var i=0;i<inputs.length;i++)
{ var input = inputs[i].children[0]; input.click(); }

fare click su esegui.

FINITO! Adesso sono tutti selezionati, tu devi solo più confermare.

Facebook prova a farci paura mettendo nel codice che passa nella Console delle frasi del tipo: 'ti stanno rubando l'account', oppure porcherie simili, ma la verità è questa (analisi riga per riga del codice javascript):

var inputs = document.getElementsByClassName('checkbox'); //dichiaro una variabile con all'interno tutti gli elementi html della pagina contraddistinti da una classe che si chiama 'checkbox'.
for(var i=0;i<inputs.length;i++)
{ var input = inputs[i].children[0]; input.click(); } //per ognuno di questi elementi prendo il primo figlio (che è appunto un elemento di tipo checkbox) e ci clicco sopra.

Per dubbi commentate pure!

Capire se l'ora di una data è solare o legale con .net framework in c#

 

DateTime datadiOggi = DateTime.Now;

TimeSpan tss = TimeZone.CurrentTimeZone.GetUtcOffset(datadiOggi);
int nOraLegale = tss.Hours - 1;

se nOraLegale = 0 => ora legale

se nOraLegale = 1 => ora solare

I segreti del telemarketing - parte 1

Ciao a tutti, in questo post voglio parlare di quello che sto imparando riguardo al telemarketing, anche detta vendita telefonica.

In questo primo post semplicemente elencherò i principali passi per una telefonata efficace:

1. La preparazione: può sembrare strano, ma per un telemarketing efficace è necessario preparare ogni telefonata (naturalmente tutto dipende se si vogliono fare 100 chiamate al giorno senza nessun filtro oppure si punta nello stesso giorno a clientela mirata); io mi preparo le chiamate in base al tipo di clientela che poi mi troverò davanti, per esempio un giorno chiamerò tutte le imprese edili di dimensione piccola nella zona 'x', un'altra volta chiamerò le realtà industriali della zona 'y'.
Per ogni caso occorre cambiare la tecnica e prepararsi ad obiezioni diverse, per esempio per aziende grandi dovremo cercare di trovare il modo per passare
quello che in gergo è chiamato 'filtro' (la segretaria oppure l'impiegato che in effetti filtra le telefonate al responsabile).
Inoltre ad alcune categorie andrà proposta un servizio (magari economico e basilare), ad altre un prodotto associato al servizio, ad altre ancora un servizio completo e di qualità superiore, naturalmente ad un prezzo maggiore.
Nella fase della preparazione della telefonata è importante anche cercare di prevedere quali saranno le obiezioni e prepararsi una risposta adeguata.

2. Apertura: in qualsiasi corso o libro di telemarketing risulta chiaro che la parte più importante di una telefonata è l'apertura; un'apertura sbagliata chiude subito i rapporti con il potenziale cliente e rende la telefonata inutile.

3. Presentazione del progetto: in questa fase è necessario essere molto convincenti ed esporre in modo conciso i punti chiave dell'offerta che stiamo andando a proporre.

4. Complicità: questa fase l'ho messa al quarto posto, ma un bravo telemarketer deve saperla gestire e spostare a seconda della telefonata; è molto importante trovare dei punti in comune con la persona chiamata, capire come pensa e come agisce, cercare di far capire al potenziale cliente che la pensa esattamente come te, che avete molte cose in comune, che conoscete aziende o persone di aziende, che qualcuno ha parlato bene di loro, etc.

5. Chiusura: che voi dobbiate vendere un prodotto o un servizio, l'importante è essere molto puntuali in questa fase; elencare chiaramente, ma sinteticamente il risultato della vostra chiamata, per esempio se dovete vendere un appuntamento occorre ripetere ora e data prima di salutare cordialmente.
Per sicurezza questa parte può essere seguita da una telefonata (magari il giorno dopo) di un'altra persona che chieda conferma dell'appuntamento, in modo da capire se la persona è convinta oppure se c'è l'appuntamento rischia di andare a vuoto.

 

Naturalmente queste linee guida sono molto soggettive, ma comunque è un argomento che io trovo molto interessante, anche se la capacità aumenterà con l'aumentare dell'esperienza..

 

Si accettano commenti e critiche!

 

Incontro Torino Technologies Group 9 aprile 2015 - Sviluppo Universal App

In questo incontro lo speaker sarà Gianluca Bertelli di Microsoft, che presenterà due sessioni:

 

Universal App – Sviluppo di App per Windows Store

Partendo da un’introduzione sul mondo delle App per Windows Store, vedremo quali sono le tecniche migliori per creare un Universal App e strutturare al meglio la nostra soluzione. Vedremo come massimizzare il riutilizzo di codice tra Windows e Windows Phone sfruttando al meglio il pattern MVVM.

 

Universal App – Sviluppo di App per realtà Enterprise

Vedremo come è possibile sviluppare una Universal App che sia in grado di eseguire lato Desktop, permettendoci di by-passare le limitazioni del framework WinRT. Ci focalizzeremo sugli scenari enterprise più richiesti quali accesso a database e riutilizzo di codice esistente per la re-ingegnerizzazione di vecchi applicativi come Modern App.

 

 

L'incontro si terrà il aprile 09, 2015, al MIC in  Corso Castelfidardo 30 a Torino.

Per info:

http://www.torinotechnologiesgroup.it/eventi/15-03-13/Incontro_community_9_aprile_2015.aspx

SEO Tool Day. Un'intera giornata gratuita sulla SEO - 31 marzo 2015


Dalla Settimana della formazione nascono i Day+, 4 interventi online incentrati su un unico argomento, in un'unica giornata formativa.


SEO Tool Day   Il primo Day+ è dedicato alla SEO


Con questa giornata di formazione imparerai a muoverti nel tuo primo faccia a faccia con la SEO... Quella vera!

Ecco di cosa parleremo:
 

•Strumenti per webmaster di Google, imparare a conoscerli
•Google Analytics per la SEO
•Majestic: analisi gratuita dei miei link
•Visual SEO Studio, uno strumento per le tue analisi
 

Quattro interventi per un'intera giornata di formazione: l’iscrizione è gratuita e puoi seguire le lezioni comodamente dal tuo computer.
 
ecco il link dell'iniziativa:

http://www.lasettimanadellaformazione.com/2015/seo-tool-day/153


 
 

 


 

Collegarsi ad un webservice svc e richiamare una funzione a runtime direttamente da codice visual studio.

WebServiceHost host = new WebServiceHost(typeof(ServiceReference2.ServiceClient), new Uri("http://www.piemontelab.com/test.svc/"));
            ServiceEndpoint ep = host.AddServiceEndpoint(typeof(ServiceReference2.Service), new WebHttpBinding(), "");

            using (ChannelFactory<ServiceReference2.Service> cf = new ChannelFactory<ServiceReference2.Service>(new WebHttpBinding(), "http://www.piemontelab.com/test.svc"))
            {
                cf.Endpoint.Behaviors.Add(new WebHttpBehavior());

                ServiceReference2.Service channel = cf.CreateChannel();

                string sjson = "{'par1':'value_of_par1'}";
                MemoryStream memStream = new MemoryStream();
                StreamWriter writer = new StreamWriter(memStream);
                writer.Write(sjson);
                writer.Flush();
                memStream.Position = 0;

                var s = channel.function1(memStream);
            }
host.Close();

Il riferimento a 'ServiceReference2' naturalmente è stato ottenuto mediante la funzione 'aggiungi riferimento web'.

Social media week - località

Ecco l'elenco delle località in cui si svolge la social media week: http://socialmediaweek.org/schedule/

Avete la possibilità di iscrivervi alla newsletter per ricevere informazioni a riguardo degli eventi.

La prossima social media week si svolgerà dal 22 al 26 settembre 2014. Non mancate!

Settimana della Formazione - Social Media Marketing - Live

Dal 13 al 17 ottobre si svolgerà questo particolare evento che si può seguire live in modo totalmente gratuito.

Programma dell'evento:

Un'intera settimana sulla gestione di progetti social: il pane quotidiano per chi fa Social Media Marketing!
Tra cambiamenti di Facebook, esplosione di Google Plus, nuove caratteristiche di Twitter e YouTube, un evento importante per il proprio aggiornamento.
Un evento gratuito che potrai seguire in tempo reale da casa o dall'ufficio, scegliendo le relazioni che più interessano te o i tuoi colleghi.

Alla fine dell'evento live verrà rilasciato un attestato di partecipazione a tutti i partecipanti attivi.

Questo è un esempio di una buona occasione per approfondire il mondo dei social media e del marketing gratuitamente, iscrivetevi!

eliminare tutte le occorrenze di viste,tabelle,trigger,etc da un database sqlserver

Di seguito scrivo la procedura (commentata in inglese) per eliminare tutte le occorrenze da un database sql server. Per esempio può venir utile se si ha la necessità di svuotarlo, ma non si può eliminare fisicamente il db:

/* Drop all non-system stored procs */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'P' AND category = 0 ORDER BY [name])

WHILE @name is not null
BEGIN
    SELECT @SQL = 'DROP PROCEDURE [dbo].[' + RTRIM(@name) +']'
    EXEC (@SQL)
    PRINT 'Dropped Procedure: ' + @name
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'P' AND category = 0 AND [name] > @name ORDER BY [name])
END
GO

/* Drop all views */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'V' AND category = 0 ORDER BY [name])

WHILE @name IS NOT NULL
BEGIN
    SELECT @SQL = 'DROP VIEW [dbo].[' + RTRIM(@name) +']'
    EXEC (@SQL)
    PRINT 'Dropped View: ' + @name
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'V' AND category = 0 AND [name] > @name ORDER BY [name])
END
GO

/* Drop all functions */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] IN (N'FN', N'IF', N'TF', N'FS', N'FT') AND category = 0 ORDER BY [name])

WHILE @name IS NOT NULL
BEGIN
    SELECT @SQL = 'DROP FUNCTION [dbo].[' + RTRIM(@name) +']'
    EXEC (@SQL)
    PRINT 'Dropped Function: ' + @name
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] IN (N'FN', N'IF', N'TF', N'FS', N'FT') AND category = 0 AND [name] > @name ORDER BY [name])
END
GO

/* Drop all Foreign Key constraints */
DECLARE @name VARCHAR(128)
DECLARE @constraint VARCHAR(254)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME)

WHILE @name is not null
BEGIN
    SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
    WHILE @constraint IS NOT NULL
    BEGIN
        SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT [' + RTRIM(@constraint) +']'
        EXEC (@SQL)
        PRINT 'Dropped FK Constraint: ' + @constraint + ' on ' + @name
        SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
    END
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME)
END
GO

/* Drop all Primary Key constraints */
DECLARE @name VARCHAR(128)
DECLARE @constraint VARCHAR(254)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME)

WHILE @name IS NOT NULL
BEGIN
    SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
    WHILE @constraint is not null
    BEGIN
        SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT [' + RTRIM(@constraint)+']'
        EXEC (@SQL)
        PRINT 'Dropped PK Constraint: ' + @constraint + ' on ' + @name
        SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
    END
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME)
END
GO

/* Drop all tables */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 ORDER BY [name])

WHILE @name IS NOT NULL
BEGIN
    SELECT @SQL = 'DROP TABLE [dbo].[' + RTRIM(@name) +']'
    EXEC (@SQL)
    PRINT 'Dropped Table: ' + @name
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 AND [name] > @name ORDER BY [name])

 

COMPLIMENTI!!! AVETE APPENA SVUOTATO TUTTO IL DATABASE DA TUTTE LE TABELLE,UTENTI E TUTTO CIO' CHE CONTENEVA!!

UTILIZZATE CON ATTENZIONE QUESTO CODICE, PERCHE' PER L?APPUNTO CANCELLA TUTTO IL CONTENUTO DELL?INTERO DATABASE

trovare l'ora legale e l'ora solare con C# Visual studio

Per trovare l'ora legale e l'ora solare in Italia:

DateTime dtGiorno = data (naturalmente oltre alla data dev'essere specificata l'ora) di cui ho bisogno di trovare l'ora.

TimeSpan tss = TimeZone.CurrentTimeZone.GetUtcOffset(dtGiorno);


int nOraLegale = tss.Hours - 1;

A questo punto se nOraLegale è uguale a zero, allora è l'ora legale, se invece è uguale a 1 l'ora è solare.