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

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'.

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.

 

Autenticazione con credenziali direttamente sul web.config - visual studio - c#

In questi giorni ho dovuto creare una semplice schermata di login senza utilizzare database.

La soluzione è stata creare gli utenti direttamente nel web.config.

Può essere utile anche nel caso il sito che state sviluppando si appoggi ad un database, perché magari avete un solo amministratore e quel sito con 10 visite al mese non ha particolari necessità a livello di sicurezza.

Nel web.config occorre mettere:

<authentication mode="Forms">
   <forms loginUrl="~/Login.aspx" path="/" defaultUrl="~/Default.aspx">
    <credentials passwordFormat="Clear">
     <user name="nomeUtente" password="passwordUtente"/>
    </credentials>
   </forms>
  </authentication>

Invece questa è la parte di codice:

if (FormsAuthentication.Authenticate(txt_UserName.Text, txt_Password.Text))
 {
  FormsAuthentication.SetAuthCookie(txt_UserName.Text, false);
  FormsAuthentication.RedirectFromLoginPage(txt_UserName.Text, false);
 }
 else
 {
  //Errore di connessione, utente sbagliato
 }

 

That's all!

Metodo veloce per eliminare un'intera lista con Entities

Prima di tutto setto una variabile come se fosse un array e non una list.

Entities db = new Entities();

var art = db.TabellaDaEliminare.ToArray();

In seguito faccio un semplice ciclo al contrario, partendo dal fondo dell'array (per far si che l'eliminazione non renda indisponibili gli oggetti a quell'indice).

for (int i = art.Length - 1; i >= 0; i--)
{
TabellaDaEliminare item_da_eliminare = art[i];
Console.WriteLine("delete item " + nCount.ToString());
db.TabellaDaEliminare.DeleteObject(item_da_eliminare);
db.SaveChanges();
nCount++;
}

In questo modo ho svuotato la lista, è possibile farlo anche su liste parziali (con where).