Offrimi un caffè o una birra!
|
|
Mi è già successo alcune altre volte, che il PC (parlo del mio laptop, che monta Windows XP Home) si "impallasse" mentre ci stavo lavorando sopra. In pratica una di quelle situazioni in cui niente risponde più, tutto si blocca, premendo CTRL+ALT+CANC non succede niente e l'unica opzione è tenere premuto il tasto di spegnimento del PC. Il PC poi riparte, fa il controllo di coerenza dei dischi fissi, sembra tutto OK, ma trova dei problemi di allocazione nel file bookmarks.html, cioè il file che contiene tutti i segnalibri di Firefox. Infatti, dopo che il PC è ripartito, lancio Firefox e mi accorogo che tutti i segnalibri sono spariti. Non ne rimane nemmeno uno, come se il file si fosse smaterializzato. Ed in effetti sembra proprio che sia così, perchè il file bookmarks.html non c'è più. La cosa è piuttosto seccante, mi ero fatto una bella lista di centinaia di segnalibri per tutti i miei siti, per i vari tool di Google, etc. Ora la dovrò ricostruire, ma ci vorrà del tempo. Voi direte: "Ma non potevi fare un backup"? E vi darei ragione, ma chi pensa a perdere i segnalibri per un semplice shutdown, sebbene forzato? In ogni caso una copia del file ce l'ho, ma è vecchiotta. Ora sto usando "Multistage Recovery" per cercare di recuperare il file danneggiato. Credo che per il futuro adotterò qualche sistema di bookmark online, tipo Foxmarks o del.icio.us
|
|
|
Revver è un sito di condivisione Video, che permette, tramite annunci pubblicitari inseriti nei propri video, di guadagnare per ogni clic su di essi. Per inserire i video di Revver su un Forum phpBB2 ho creato una sorta di Mod che inserisce un bottone per Revver e permette di inserire il player direttamente nelle pagine del forum stesso tramite codice BBCode. La mia Mod si basa in realtà su una Mod per YouTube, che va installata per prima. Potete trovare le istruzioni qui. Una volta installata la Mod per YouTube, occorrerà fare alcune ulteriori modifiche al codice delle pagine .php e .tpl del phpBB Attenzione: questa non è una Mod ufficiale, è una mia implementazione, consiglio come sempre in questi casi di tenere una copia di backup delle pagine modificate prima di procedere Iniziamo con le modifiche:
1) Aprire la pagina templates/[tuotemplate]/bbcode.tpl # #-----[ FIND ]------------------------------------------ # <!-- END youtube --> # #-----[ AFTER, ADD ]------------------------------------------ # <!-- BEGIN revver --> <script src="http://flash.revver.com/player/1.0/player.js?mediaId:{REVVERID}; affiliateId:{AFFILIATEID};height:392;width:480;" type="text/javascript"></script> <!-- END revver -->
2) Aprire la pagina includes/bbcode.php # #-----[ FIND ]------------------------------------------ # // [youtube]YouTube URL[/youtube] code.. $patterns[] = "#\[youtube\]http://(?:www\.)?youtube.com/watch\?v= (a capo) ([0-9A-Za-z-_]{11})[^[]*\[/youtube\]#is"; $replacements[] = $bbcode_tpl['youtube']; # #-----[ AFTER, ADD ]------------------------------------------ # // [revver]Revver URL[/revver] code.. $patterns[] = "#\[revver\]http://(?:one\.)?revver.com/watch/([0-9A-Za-z-_]*) (a capo) flv/affiliate/([0-9A-Za-z-_]*)[^[]*\[/revver\]#is"; $replacements[] = $bbcode_tpl['revver'];
3) Sempre nella pagina includes/bbcode.php # #-----[ FIND ]------------------------------------------ # $bbcode_tpl['youtube'] = str_replace('{YOUTUBEID}', '\\1', $bbcode_tpl['youtube']); $bbcode_tpl['youtube'] = str_replace('{YOUTUBELINK}', $lang['youtube_link'], $bbcode_tpl['youtube']); # #-----[ AFTER, ADD ]------------------------------------------ # $bbcode_tpl['revver'] = str_replace('{REVVERID}', '\\1', $bbcode_tpl['revver']); $bbcode_tpl['revver'] = str_replace('{AFFILIATEID}', '\\2', $bbcode_tpl['revver']); In questo modo sarà possibile inserire i Video di Revver direttamente nei post del Forum usando i tag [revver] e [/revver] Se lo desiderate, è possibile aggiungere un pulsante che inserisca il tag in automatico, facendo alcune ulteriori semplici modifiche al codice delle pagine includes/bbcode.php e templates/[yourtemplate]/posting_body.tp, aggiungendo il pulsante all'array di pulsanti già esistente.
|
|
Tempo fa ho avuto la necessità di scrivere un generatore di Google Sitemaps per un forum phpBB, versione 2, hostato su Aruba.it con hosting Windows, che usa MySQL come Database. Il Forum ha sempre funzionato senza problemi, tranne l'impossibilità di usare il mod_rewrite per le URL. Al momento di dover generare la Sitemap mi sono trovato davanti al problema di doverla gestire con codice ASP. Ho preso allora spunto dal codice di un Sitemap Generator preesistente, per modificarlo leggermente e adattarlo al forum phpBB. Il mio codice prende tutti i forum e genera i link a tutti i post, non tiene in considerazione forum nascosti o bloccati. Inoltre, come detto sopra, non c'è riscrittura delle URL in quanto il forum gira su Hosting Windows 'MODIFICA IN BASE ALLA TUA CONNESSIONE <!--#include file="MyConnections.asp" --> <% MAXURLS_PER_SITEMAP = 50000 'MODIFICA IL PERCORSO DEL TUO SITO FORUM baseurl="http://www.yoursite.com/Forum/viewtopic.php?t="
strsql = "SELECT * FROM phpbb_topics"
utcOffset=1 response.ContentType = "text/xml" response.write "<?xml version='1.0' encoding='UTF-8'?>" response.write "<urlset xmlns='http://www.google.com/schemas/sitemap/0.84'>"
Set conn = Server.CreateObject("ADODB.Connection") conn.Open MM_conn_MySql_STRING Set rs = Server.CreateObject("ADODB.Recordset") rs.Open strsql, conn
Do while not rs.eof if URLS<MAXURLS_PER_SITEMAP then id_page=(rs("topic_id")) filelmdate=date() priority=1 if not isdate(filelmdate) then filelmdate=now() filedate=iso8601date(filelmdate,utcOffset) if priority="" or priority>1.0 then priority="1.0" response.write "<url><loc>"&(baseurl&id_page)&"</loc><lastmod>"&filedate&"</lastmod> <priority>"&priority&"</priority></url>" URLS=URLS+1 Response.Flush rs.movenext end if Loop response.write "</urlset>"
rs.Close Set rs = Nothing conn.Close Set conn = Nothing
Function iso8601date(dLocal,utcOffset) Dim d ' convert local time into UTC d = DateAdd("H",-1 * utcOffset,dLocal) iso8601date = Year(d) & "-" & Right("0" & Month(d),2) & "-" & Right("0" & Day(d),2) & "T" & _ Right("0" & Hour(d),2) & ":" & Right("0" & Minute(d),2) & ":" & Right("0" & Second(d),2) & "Z"
End Function
%> Inserite questo codice in una pagina .asp nella radice del sito, genererà una Sitemap compatibile con gli standard di Google, inseritela in Google Webmaster Tools e il gioco è fatto
|
|
SQL Server 2000 utilizzava i trigger. Un trigger è una particolare forma di Stored Procedure che viene attivata in automatico quando si verifica una operazione di INSERT, UPDATE o DELETE su una tabella. Il trigger risponde all'azione, dopo che l'azione è stata eseguita, ed è in grado di eseguire qualsiasi azione (supportata dal linguaggio Transact-SQL) e anche di fare un ROLLBACK della transazione che lo ha scatenato. I trigger fino a SQL Server 2000 erano quindi essenzialmente legati a istruzioni di tipo DML (Data Manipulation Language) SQL Server 2005 introduce i Trigger DDL. Un Trigger DDL è un trigger in grado di rispondere ad azioni di tipo Data Definition Language, cioè di scatenarsi quando si verificano delle operazioni di CREATE, ALTER o DROP. In parole povere, è possibile scatenare una operazione quando viene creato, modificato o eliminato un "oggetto" nel Database (Tabelle, Viste, Strored Procedures etc.) Il Trigger DDL espone tutti i dati relativi all'evento scatenante per mezzo di una funzione, chiamata eventdata() che contiene, sotto forma di XML, tutti i dettagli dell'evento. La funzione eventdata() fornisce un risultato tipo questo: <EVENT_INSTANCE> <EventType>CREATE_TABLE</EventType> <PostTime>2007-07-25T21:44:27.267</PostTime> <SPID>52</SPID> <ServerName>MyServer</ServerName> <LoginName>MyServer\User01</LoginName> <UserName>dbo</UserName> <DatabaseName>HotelList</DatabaseName> <SchemaName>dbo</SchemaName> <ObjectName>Hotels</ObjectName> <ObjectType>TABLE</ObjectType> <TSQLCommand> <SetOptions ANSI_NULLS="ON" ANSI_NULL_DEFAULT="ON" ANSI_PADDING="ON" QUOTED_IDENTIFIER="ON" ENCRYPTED="FALSE"/> <CommandText>create table Hotels(name varchar(50), address varchar(30), stars int)</CommandText> </TSQLCommad> </EVENT_INSTANCE> Questo frammento contiene tutto ciò che possiamo voler sapere sull'evento: EventType è il tipo di evento che ha fatto partire il Trigger, PostTime la data e l'ora dell'evento, ServerName il Server, LoginName la Login del nostro utente, TSQLCommand contiene i dettagli del comando che è stato eseguito etc. E' quindi sufficiente fare un parsing del frammento XML restituito dalla eventdata() per poter estrarre le informazioni necessarie. In questo caso ci viene in aiuto la funzione value che è possibile usare su variabili XML in SQL Server 2005, come nell'esempio seguente (clicca per ingrandire):
|
|
|
|
|
<< Inizio < Prec. 21 22 23 24 25 26 27 28 29 Succ. > Fine >>
|
|
Pagina 28 di 29 |
|