Filed under Coding, Web by Gath | 6 comments
OK, I’m the first to admit that the whole lolcats thing might not be for everyone. But it’s for me. If it’s for you, too, then enjoy
If you would like this widget on your site/blog, just add the code:
<script src='http://lolcats.com.89.seekdotnet.com' type='text/javascript'></script>
And here’s how it was done:
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim sCacheKey As String = "CACHE_ICanHasCheezburger"
        Dim oLolCat As clsLolCat
        Dim sHTML As String
        oLolCat = CType(Cache(sCacheKey), clsLolCat)
        If oLolCat Is Nothing Then
            oLolCat = PicAndCaptionGet()
            Cache.Insert(sCacheKey, oLolCat, Nothing, Now.AddHours(1), System.Web.Caching.Cache.NoSlidingExpiration)
        End If
        sHTML = "<div><a href='" & oLolCat.sLinkURL & "'><img border='0' src='" & oLolCat.sPicURL & "'/></a>"
        sHTML = sHTML & "<div>More at LolCats at <a href='http://icanhascheezburger.com'>I Can Has Cheezburger</a></div></div>"
        sHTML = "document.write(""" & sHTML & """);"
        Response.Write(sHTML)
    End Sub
This first part just checks to see if we have the LolCat HTML in the cache. If we don’t then generate the HTML and put it in the cache again. Saves us hitting the http://icanhascheezburger.com site all the time (or in this case, feedburner).
    Private Function PicAndCaptionGet() As clsLolCat
        Dim Http As HttpWebRequest
        Dim sRequestURL As String
        Dim WebResponse As HttpWebResponse
        Dim responseStream As Stream
        Dim Reader As StreamReader
        Dim sText As String
        Dim oRSSDoc As New System.Xml.XmlDocument
        Dim oFirstNode As System.Xml.XmlNode
        Dim oLolCat As New clsLolCat
        sRequestURL = "http://feeds.feedburner.com/ICanHasCheezburger?format=xml"
        Http = CType(WebRequest.Create(sRequestURL), HttpWebRequest)
        Http.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate")
        WebResponse = CType(Http.GetResponse(), HttpWebResponse)
        responseStream = WebResponse.GetResponseStream
        If (WebResponse.ContentEncoding.ToLower().Contains("gzip")) Then
            responseStream = New GZipStream(responseStream, CompressionMode.Decompress)
        ElseIf (WebResponse.ContentEncoding.ToLower().Contains("deflate")) Then
            responseStream = New DeflateStream(responseStream, CompressionMode.Decompress)
        End If
        Reader = New StreamReader(responseStream, Encoding.Default)
        sText = Reader.ReadToEnd()
        WebResponse.Close()
        responseStream.Close()
        oRSSDoc.LoadXml(sText)
        oFirstNode = oRSSDoc.SelectSingleNode("//item")
        oLolCat.sCaption = oFirstNode("title").InnerText
        oLolCat.sLinkURL = oFirstNode("link").InnerText
        oLolCat.sPicURL = oFirstNode("media:content").Attributes("url").Value
        PicAndCaptionGet = oLolCat
    End Function
End Class
Public Class clsLolCat
    Public sPicURL As String
    Public sCaption As String
    Public sLinkURL As String
End Class
This is the code that visits the icanhascheezburger RSS feed and extracts the latest post details. This is all pretty simple stuff, with one cool bit that takes care of the gzip compression that is on the feed. Full credit must go to Rick Strahl for his post talking about gzip: http://www.west-wind.com/WebLog/posts/102969.aspx
Filed under Coding, MS SQL Server, MySQL by Gath | 0 comments
Following on from my last post on converting MySQL tables to MS SQL, here is the code to convert Insert SQL statements from MySQL to MS SQL. Try it out here: The code for this is really simple. Again, if you have any improvements just post the code here and I’ll update the original and give you credit.
Dim ConvertedSQL As String = ""
ConvertedSQL = Me.txtMySQL.Text
ConvertedSQL = ConvertedSQL.Replace("rn", "")
ConvertedSQL = ConvertedSQL.Replace("'", "''")
ConvertedSQL = ConvertedSQL.Replace("\" & Chr(34), Chr(34))
ConvertedSQL = ConvertedSQL.Replace("INTO " & Me.txtOldTableName.Text, "INTO " & Me.txtNewTableName.Text)
Me.txtMSSQL.Text = ConvertedSQL
Filed under Web by Gath | 1 comment
I noticed in the paper over the weekend that two Melbourne real estate agents sought legal action in December to force Google to not display posts from a certain blog when their names were ‘googled’. The blog posts apparently showed the agents (Paul Castran and Mark Forytarz) in a bit of a bad light - suggesting one bullied a mentally disabled man into selling his house to earn the agent commission and that the other agent participated in illegal dummy bidding. Interestingly, there was no legal action brought against the blogger who wrote the posts. Also, the newspaper article stated that the posts were not removed from the Google index.
Suing Google has been tried several times before, and rarely goes well, but when I did a search the agents names:
http://www.google.com.au/search?hl=en&q=mark+forytarz&btnG=Google+Search&meta=
The defamatory article is not there, and there is this line at the bottom of the page:
In response to a legal request submitted to Google, we have removed 1 result(s) from this page. If you wish, you may read more about the request at ChillingEffects.org.
Notice that the search was done in google.com.au, if you do it in google.com then the defamatory blog post is the first result (though perhaps this will be gone soon, too).
So what caused what here? Did legal action have no effect as claimed by the newspaper? Did the two agents just approach google through other channels (similar to a DMCA takedown)? Given that the initial action reportedly failed, did the recent publicity have anything to do with google removing the blog posts?
But now the posts have been removed from google.com.au, everything is fine for the real estate agents, right?
Not quite.
Now, if you search for ‘Paul Castran’ the #2 result is Paul Castran Wins Today’s Stupid Prize!. Time for more legal action?
Filed under Coding, MS SQL Server, MySQL by Gath | 17 comments
I’ve been setting up some small database-driven sites lately and I needed to convert some MySQL tables to MS Sql Server. It’s not too hard convert them by hand, but it is oh so tedious…
So I wrote a small app to convert the MySQL tables to MS SQL, which you can try out here:
Now this was a quick & dirty app, so it really doesn’t do much else other than convert the datatypes and get the syntax right. It doesn’t convert keys/constraints/indexes or any of that stuff. It doesn’t even convert all the datatypes, but it has the main ones (ie - the ones I needed) covered. Note: If you add more datatypes or add support for indexes etc just email/post your changes and I will update this code as well as giving link credit.
Here is the code to do the conversion:
Private Function ConvertTable(ByVal sMySQL As String, _
ByRef sMSSQL As String) As String
Dim sLine As String = ""
Dim iC As Integer
Dim sVarName As String
Dim sDatatype As String
Dim sLen As String
Dim iLen As Integer
Dim sNewDataType As String = ""
Dim sOutput As String = ""
Dim iLen2 As Integer
For iC = 0 To sMySQL.Split(vbLf).GetUpperBound(0)
sLine = sMySQL.Split(vbLf)(iC)
sLine = Trim$(sLine)
If sLine.StartsWith("CREATE TABLE") = True Then
sMSSQL = sMSSQL & sLine & vbCrLf
ElseIf sLine.StartsWith("KEY") = True Or sLine.StartsWith("PRIMARY KEY") = True Then
'Ignore this
ElseIf sLine.StartsWith(")") = True Then
sMSSQL = Strings.Left$(sMSSQL, Len(sMSSQL) - 3)
sMSSQL = sMSSQL & vbCrLf & ")"
Exit For
Else
'sLine = sLine.Replace(",", " ")
sVarName = sLine.Split(" ")(0)
sDatatype = sLine.Split(" ")(1)
If InStr(sDatatype, "(") > 0 Then
sLen = Mid$(sDatatype, InStr(sDatatype, "("))
sLen = sLen.Replace("(", "").Replace(")", "")
If InStr(sLen, ",") > 0 Then
iLen = Val(sLen.Split(",")(0))
iLen2 = Val(sLen.Split(",")(1))
Else
iLen = Val(sLen)
End If
sDatatype = Strings.Left$(sDatatype, InStr(sDatatype, "(") - 1)
End If
If InStr(sDatatype, ",") > 0 Then
sDatatype = sDatatype.Split(",")(0)
End If
Select Case LCase(sDatatype)
Case "int", "smallint", "year", "tinyint"
sNewDataType = "int"
Case "blob", "text"
sNewDataType = "text"
Case "decimal"
sNewDataType = "decimal(" & iLen & "," & iLen2 & ")"
Case "double"
sNewDataType = "float(10)"
Case "date", "datetime"
sNewDataType = "datetime"
Case "timestamp"
sNewDataType = "bigint"
Case "varchar"
sNewDataType = "varchar(" & iLen & ")"
Case "char"
sNewDataType = "char(" & iLen & ")"
Case Else
sOutput = sOutput & "Unknown datatype = '" & sDatatype & "'"
sMSSQL = ""
Exit For
End Select
sMSSQL = sMSSQL & sVarName & " " & sNewDataType & "," & vbCrLf
End If
Next
If sOutput = "" Then
sOutput = "Conversion Complete"
End If
ConvertTable = sOutput
End Function
Note: I have now made another post which shows how to Convert MySQL Inserts to MS SQL Server