Wednesday, November 28, 2012
Friday, September 28, 2012
Fun : Carry On & Some Nights & We Are young
Some Nights
We Are Young
Guild Wars II
No fees, no typical healer/tank/DPS, new game play, dynamic events, World vs World, impressive evolving story line.
PVE & PVP & WvW just give it a try you'll love it..
Well if you like these kind of MMORPGs that is :-)
Website: https://www.guildwars2.com/en/
Check out the introduction movie below... See you in the game...
Tuesday, September 25, 2012
Monday, September 17, 2012
Evolution from GSM to GPRS to 3G to LTE
The evolution of ‘Long Term Evolution’
LTE is a mobile broadband standard developed by the 3GPP (3rd Generation Partnership Project), a group that has developed all GSM standards since 1999. (Though GSM and CDMA—the network Verizon and Sprint use in the United States—were at one time close competitors, GSM has emerged as the dominant worldwide mobile standard.)Cell networks began as analog, circuit-switched systems nearly identical in function to the public switched telephone network (PSTN), which placed a finite limit on calls regardless of how many people were speaking on a line at one time.
The second-generation, GPRS, added data (at dial-up modem speed). GPRS led to EDGE, and then 3G, which treated both voice and data as bits passing simultaneously over the same network (allowing you to surf the web and talk on the phone at the same time).
GSM-evolved 3G (which brought faster speeds) started with UMTS, and then accelerated into faster and faster variants of 3G, 3G+, and “4G” networks (HSPA, HSDPA, HSUPA, HSPA+, and DC-HSPA).
Until now, the term “evolution” meant that no new standard broke or failed to work with the older ones. GSM, GPRS, UMTS, and so on all work simultaneously over the same frequency bands: They’re intercompatible, which made it easier for carriers to roll them out without losing customers on older equipment. But these networks were being held back by compatibility.
That’s where LTE comes in. The “long term” part means: “Hey, it’s time to make a big, big change that will break things for the better.”
Thursday, September 13, 2012
Chocolatey Linux' Appget for Windows
I found this nice article about an appget variant for windows.
Chocolatey puts all of your favorite Windows programs right at your fingertips. With just a few keystrokes, you can have a program up and running on your system without ever needing to open a browser, double-click on an installer, or go through any menus. To install Chocolatey, just run the following command in a Command Prompt:
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('http://bit.ly/psChocInstall'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin
Then, you can search the chocolatey database for any program using the clist command. For example, clist windirstat will let you know whether WinDirStat is in Chocolatey's database (it is), after which you can install it by typing in cinst windirstat. You may need to say "Yes" to a UAC prompt, but that's all it takes—you'll have WinDirStat up and running on your system in no time. You can even install multiple programs at once, or use Chocolatey in your favorite alternate shell like Cygwin.
-------------------------
chocolatey [install [packageName [-source source] [-version version] | pathToPackagesConfig] | installmissing packageName [-source source] | update packageName [-source source] [-version version] | l
ist [packageName] [-source source] | help | version [packageName] | webpi packageName | gem packageName [-version version] |uninstall packageName]
example: chocolatey install nunit
example: chocolatey install nunit -version 2.5.7.10213
example: chocolatey install packages.config
example: chocolatey installmissing nunit
example: chocolatey update nunit -source http://somelocalfeed.com/nuget/
example: chocolatey help
example: chocolatey list (might take awhile)
example: chocolatey list nunit
example: chocolatey version
example: chocolatey version nunit
example: chocolatey uninstall
A shortcut to 'chocolatey install' is 'cinst'
cinst [packageName [-source source] [-version version] | pathToPackagesConfig]
example: cinst 7zip
example: cinst ruby -version 1.8.7
example: cinst packages.config
Sunday, August 26, 2012
Tuesday, July 31, 2012
VB Script : Clean Files Older Then 7 Days
Option Explicit dim WshShell,fso, file, source, daysBack, toDelete(1000000), toDeleteFolder(1000000), groups, group dim i, ii, path, copySource, copyDestination, copySource1, copyDestination1, copySource2, copyDestination2,result Set fso = CreateObject("Scripting.FileSystemObject") Set WshShell = CreateObject("WScript.Shell") daysBack = 7 Path = "z:\temporary" listFiles(Path) for ii = 0 to i-1 fso.DeleteFile toDelete(ii), true Next DeleteFolders(Path) Set fso = Nothing '--------------------------------------------- private sub listFiles(folderSpec) dim file, folder For Each file In fso.GetFolder(folderSpec).files If (DateValue(file.dateCreated) < DateValue(Now - daysBack)) And (DateValue(file.dateLastModified) < DateValue(Now - daysBack)) Then toDelete(i) = file.Path i = i + 1 End If Next for each folder in fso.GetFolder(folderSpec).SubFolders listFiles(folder.path) Next end Sub Private Sub DeleteFolders(folderSpec) Dim folder If fso.GetFolder(folderSpec).size = 0 Then fso.DeleteFolder(folderSpec) End If On Error Resume Next For each folder in fso.GetFolder(folderSpec).SubFolders DeleteFolders(folder.path) Next On Error Goto 0 End Sub
Thursday, July 19, 2012
Sunday, June 17, 2012
On the hunt for malware...
Credits go to : http://channel9.msdn.com/Events/TechEd/NorthAmerica/2012/SIA302
Friday, June 15, 2012
BTProximity
BTProximity is an application for Windows Vista and Windows 7 that can detect when your bluetooth-enabled phone has come into range, and unlock your computer. When the device moves out of range, the computer is automatically locked. This isn’t a fake lock window, the desktop is actually locked the same as if you pressed Win+L.
http://www.daveamenta.com/btproximity/setup.exe
Friday, May 18, 2012
Belgium eID Card Reader Application
that's able to read out the Belgium ID cards.
- Install the driver/application http://eid.belgium.be/nl/binaries/BeidMW35-Sdk-6193-signed_tcm147-93244_tcm227-114955.msi
- Reference the Interop.EIDLIBCTRLLib.dll
- Target the x86 platform (the dll only exists in a 32bit flavour)
eID Reader Binaries
eID Reader Source Code
Friend Class eIDObject #Region "Events" Protected Friend Event Init_Failed() Protected Friend Event Exit_Failed() Protected Friend Event Finished_InfoRetrieval() #End Region #Region "Variables" Protected Friend ErrorMessage As String Private lHandle As Integer = Nothing Private Eidlib1 As New EIDLIBCTRLLib.EIDlib Private RetStatus As EIDLIBCTRLLib.RetStatus = Nothing Private MapColPicture As New EIDLIBCTRLLib.MapCollection Private MapColID As New EIDLIBCTRLLib.MapCollection Private MapColAddress As New EIDLIBCTRLLib.MapCollection Private CertifCheck As New EIDLIBCTRLLib.CertifCheck #End Region #Region "BEID Properties" #Region "BEID Card Info" Private strCardNumber As String Protected Friend ReadOnly Property CardNumber() As String Get Return strCardNumber End Get End Property Private strChipNumber As String Protected Friend ReadOnly Property ChipNumber() As String Get Return strChipNumber End Get End Property Private strIssuingMunicipality As String Protected Friend ReadOnly Property IssuingMunicipality() As String Get Return strIssuingMunicipality End Get End Property 'START DATE - INITIAL DATE Private dateBeginValidityDate As Date Protected Friend ReadOnly Property BeginValidityDate() As Date Get Return dateBeginValidityDate End Get End Property Private strBegVal As Object Private strBegValDag As String Protected Friend ReadOnly Property BeginValidityDay() As String Get Return strBegValDag End Get End Property Private strBegValMaand As String Protected Friend ReadOnly Property BeginValidityMonth() As String Get Return strBegValMaand End Get End Property Private strBegValJaar As String Protected Friend ReadOnly Property BeginValidityYear() As String Get Return strBegValJaar End Get End Property 'END DATE - EXPIRE DATE Private dateEndValidityDate As Date Protected Friend ReadOnly Property EndValidityDate() As Date Get Return dateEndValidityDate End Get End Property Private strEndVal As Object Private strEndValDag As String Protected Friend ReadOnly Property EndValidityDay() As String Get Return strEndValDag End Get End Property Private strEndValMaand As String Protected Friend ReadOnly Property EndValidityMonth() As String Get Return strEndValMaand End Get End Property Private strEndValJaar As String Protected Friend ReadOnly Property EndValidityYear() As String Get Return strEndValJaar End Get End Property #End Region #Region "BEID Person Info" Private strName As String Protected Friend ReadOnly Property Name() As String Get Return strName End Get End Property Private strFirstName1 As String Protected Friend ReadOnly Property FirstName() As String Get Return strFirstName1 End Get End Property Private strFirstName2 As String Protected Friend ReadOnly Property FirstName2() As String Get Return strFirstName2 End Get End Property Private strBirthPlace As String Protected Friend ReadOnly Property BirthPlace() As String Get Return strBirthPlace End Get End Property Private strBirthDate As String Protected Friend ReadOnly Property BirthDate() As String Get Return strBirthDate End Get End Property Private strGender As String Protected Friend ReadOnly Property Gender() As String Get Return strGender End Get End Property Private strNationality As String Protected Friend ReadOnly Property Nationality() As String Get Return strNationality End Get End Property Private strNationalNumber As String Protected Friend ReadOnly Property NationalNumber() As String Get Return strNationalNumber End Get End Property #End Region #Region "BEID Adres Info" Private strStreet As String Protected Friend ReadOnly Property Street() As String Get Return strStreet End Get End Property Private strStreetNumber As String Protected Friend ReadOnly Property StreetNumber() As String Get Return strStreetNumber End Get End Property Private strZIPCode As String Protected Friend ReadOnly Property ZIPCode() As String Get Return strZIPCode End Get End Property Private strMunicipality As String Protected Friend ReadOnly Property Municipality() As String Get Return strMunicipality End Get End Property #End Region #Region "BEID Picture Info" Private imgPicture As Global.System.Drawing.Image Protected Friend ReadOnly Property Picture() As Global.System.Drawing.Image Get Return imgPicture End Get End Property #End Region #End Region #Region "Constructor" Protected Friend Sub New() End Sub #End Region #Region "Methods" Private Function eID_Init() As Boolean Try RetStatus = Eidlib1.Init("", 0, 0, lHandle) If (RetStatus.GetGeneral = 0) Then Return True Else ErrorMessage = "Unable to initialize eID Reader!" RaiseEvent Init_Failed() Return False End If Catch ex As Exception ErrorMessage = "Unable to initialize eID Reader!" + vbCrLf + GetErrorInfo(ex) RaiseEvent Init_Failed() Return False End Try End Function Private Function eID_Exit() As Boolean Try RetStatus = Eidlib1.Exit() Return True Catch ex As Exception ErrorMessage = "Unable to exit eID Reader!" + vbCrLf + GetErrorInfo(ex) RaiseEvent Exit_Failed() Return False Finally 'release all objects RetStatus = Nothing GC.Collect() GC.WaitForPendingFinalizers() End Try End Function Protected Friend Function RetrieveInformation() As Boolean 'reset errormessage ErrorMessage = "" Try If eID_Init() Then ' get the info stored on the Belgium eID card & populate the properties RetStatus = Eidlib1.GetID(MapColID, CertifCheck) 'card strChipNumber = MapColID.GetValue("ChipNumber") strCardNumber = MapColID.GetValue("CardNumber") strBegVal = MapColID.GetValue("BeginValidityDate") strEndVal = MapColID.GetValue("EndValidityDate") strIssuingMunicipality = MapColID.GetValue("IssuingMunicipality") ' 'Opsplitsen begindatum strBegValDag = Microsoft.VisualBasic.Right(strBegVal, 2) strBegValMaand = Microsoft.VisualBasic.Mid(strBegVal, 5, 2) strBegValJaar = Microsoft.VisualBasic.Left(strBegVal, 4) ' 'Opsplitsen einddatum strEndValDag = Microsoft.VisualBasic.Right(strEndVal, 2) strEndValMaand = Microsoft.VisualBasic.Mid(strEndVal, 5, 2) strEndValJaar = Microsoft.VisualBasic.Left(strEndVal, 4) dateBeginValidityDate = CDate(strBegValDag & "/" & strBegValMaand & "/" & strBegValJaar) dateEndValidityDate = CDate(strEndValDag & "/" & strEndValMaand & "/" & strEndValJaar) 'person strName = MapColID.GetValue("Name") strFirstName1 = MapColID.GetValue("FirstName1") strFirstName2 = MapColID.GetValue("FirstName2") strBirthDate = MapColID.GetValue("BirthDate") 'transform birthdate Dim d As String = "" Dim m As String = "" Dim y As String = "" d = Microsoft.VisualBasic.Right(strBirthDate, 2) m = Microsoft.VisualBasic.Mid(strBirthDate, 5, 2) y = Microsoft.VisualBasic.Left(strBirthDate, 4) strBirthDate = CDate(d & "/" & m & "/" & y) strBirthPlace = MapColID.GetValue("BirthPlace") strGender = MapColID.GetValue("Gender") strNationality = UCase(MapColID.GetValue("Nationality")) strNationalNumber = MapColID.GetValue("NationalNumber") 'address RetStatus = Eidlib1.GetAddress(MapColAddress, CertifCheck) strStreet = Trim(MapColAddress.GetValue("Street")) 'Neerhofstraat 26 'get street number strStreetNumber = strStreet.Substring(strStreet.LastIndexOf(" ") + 1) 'get street strStreet = strStreet.Substring(0, strStreet.LastIndexOf(" ")) strZIPCode = MapColAddress.GetValue("ZIPCode") strMunicipality = MapColAddress.GetValue("Municipality") 'get picture Dim s As IO.MemoryStream = Nothing Dim o() As Byte = Nothing Dim raw As EIDLIBCTRLLib.Raw = Nothing Try Eidlib1.GetRawData(raw) raw.GetPictureData(o) s = New IO.MemoryStream(o) imgPicture = Global.System.Drawing.Image.FromStream(s) s.Dispose() s = Nothing Catch ex As Exception ErrorMessage = "Unable to retrieve picture from eID card!" + vbCrLf + GetErrorInfo(ex) Finally If Not s Is Nothing Then s.Dispose() s = Nothing End If End Try Else Return False End If Return True Catch ex As Exception ErrorMessage = "Unable to retrieve information from eID card!" + vbCrLf + GetErrorInfo(ex) Return False Finally eID_Exit() RaiseEvent Finished_InfoRetrieval() End Try End Function Protected Friend Function ExportInformationToFile(ByVal filename As String) As Boolean Dim txtwriter As IO.StreamWriter = Nothing Try If Not String.IsNullOrEmpty(filename) Then txtwriter = New IO.StreamWriter(filename) txtwriter.WriteLine("CARDNUMBER=" + Me.CardNumber) txtwriter.WriteLine("BEGINVALIDITY=" + Me.BeginValidityDate) txtwriter.WriteLine("ENDVALIDITY=" + Me.EndValidityDate) txtwriter.WriteLine("ISSUINGMUNICIPALITY=" + Me.IssuingMunicipality) txtwriter.WriteLine("FIRSTNAME=" + Me.FirstName + IIf(Me.FirstName2 = "", "", " " + Me.FirstName2)) txtwriter.WriteLine("SURNAME=" + Me.Name) txtwriter.WriteLine("GENDER=" + Me.Gender) txtwriter.WriteLine("NATIONALITY=" + Me.Nationality) txtwriter.WriteLine("BIRTHDATE=" + Me.BirthDate) txtwriter.WriteLine("BIRTHPLACE=" + Me.BirthPlace) txtwriter.WriteLine("NATIONALNUMBER=" + Me.NationalNumber) txtwriter.WriteLine("STREET=" + Me.Street) txtwriter.WriteLine("STREETNUMBER=" + Me.StreetNumber) txtwriter.WriteLine("ZIP=" + Me.ZIPCode) txtwriter.WriteLine("CITY=" + Me.Municipality) txtwriter.Close() Return True Else ErrorMessage = "Export Filename is empty!" Return False End If Catch ex As Exception ErrorMessage = "Unable to write eID card Information to file : " + filename + GetErrorInfo(ex) Return False Finally If Not txtwriter Is Nothing Then txtwriter.Dispose() txtwriter = Nothing End If End Try End Function Protected Friend Function ExportPictureToFile(ByVal filename As String) As Boolean Try If Not Me.Picture Is Nothing Then Me.Picture.Save(filename, Drawing.Imaging.ImageFormat.Jpeg) Return True Else ErrorMessage = "No picture found!" Return False End If Catch ex As Exception ErrorMessage = "Unable to export the picture to : " + filename + GetErrorInfo(ex) Return False End Try End Function #End Region End Class
GetErrorInfo Function VB.NET
Simple & useful Error Reporting Function... Thought I'd share if with you guys :-)
Module mFunctions Public Function GetErrorInfo(ByVal ex As Exception) As String Dim sb As New System.Text.StringBuilder() Dim st As New System.Diagnostics.StackTrace(ex, True) Dim FileName As String = "" Dim Method As String = "" Dim LineNumber As String = "" sb.AppendLine("") For Each frame As System.Diagnostics.StackFrame In st.GetFrames() FileName = frame.GetFileName Method = frame.GetMethod().ToString LineNumber = frame.GetFileLineNumber If FileName <> "" Then sb.AppendLine("Filename : " + FileName) If Method <> "" Then sb.AppendLine("Method : " + Method) If LineNumber <> "" Then sb.AppendLine("LineN° : " + LineNumber) Next Return sb.ToString() End Function End Module
Monday, May 14, 2012
Thursday, May 3, 2012
Create Shortcuts using late binding
Simply create a new shortcut using some late binding, instead of having to reference the Windows Scripting Host : IWshRuntimeLibrary
Usage:
Shortcut.Create_Shortcut(PathtoExecutable, PathToShortcutFolder, ShortCutName,ExecutableFolderPath, Description, "", 0, 0)
Imports System.Runtime.CompilerServices
Imports Microsoft.VisualBasic.CompilerServices
Public Class Shortcut
Public Shared Function Create_Shortcut(ByVal Target_Path As String, ByVal Shortcut_Path As String, ByVal Shortcut_Name As String, _
ByVal Working_Directory As String, ByVal Description As String, ByVal Arguments As String, ByVal Window_Style As Integer, ByVal Icon_Num As Integer) As Boolean
Try
Dim objectValue As Object = RuntimeHelpers.GetObjectValue(Interaction.CreateObject("WScript.Shell", ""))
Dim objectValue2 As Object = RuntimeHelpers.GetObjectValue(NewLateBinding.LateGet(objectValue, Nothing, _
"CreateShortcut", New Object() {Shortcut_Path & "\" & Shortcut_Name & ".lnk"}, Nothing, Nothing, Nothing))
NewLateBinding.LateSet(objectValue2, Nothing, "TargetPath", New Object() {Target_Path}, Nothing, Nothing)
NewLateBinding.LateSet(objectValue2, Nothing, "WorkingDirectory", New Object() {Working_Directory}, Nothing, Nothing)
NewLateBinding.LateSet(objectValue2, Nothing, "Arguments", New Object() {Arguments}, Nothing, Nothing)
NewLateBinding.LateSet(objectValue2, Nothing, "WindowStyle", New Object() {Window_Style}, Nothing, Nothing)
NewLateBinding.LateSet(objectValue2, Nothing, "Description", New Object() {Description}, Nothing, Nothing)
NewLateBinding.LateSet(objectValue2, Nothing, "IconLocation", New Object() {Target_Path & "," _
& Conversions.ToString(Icon_Num)}, Nothing, Nothing)
NewLateBinding.LateCall(objectValue2, Nothing, "Save", New Object() {}, Nothing, Nothing, Nothing, True)
Return True
Catch ex As Exception
Return False
End Try
End Function
End Class
A special thanks to Tirthraaj Gobin for comming up with this solution...
http://social.msdn.microsoft.com/Forums/en-US/vbide/thread/126c09a2-6f38-4747-9ddd-55ff977fcba0?prof=required
Wednesday, May 2, 2012
PDF Layer Merger
Recently I’ve created a simple .NET tool, to merge 2 PDF files, one as a layer on top of the other.
The reason behind this, was to be able to digitally remark/comment/mark-up on a PDF file using AutoCAD. People tend to print out a PDF file, use some highlighters and draw some clouds and comments on this PDF, only to re-scan this afterwards.
This is the way we used to work, but today we live in a digital era…
The tool has been built in VB.NET targeting the NET 2.0 framework, with the use of the excellent PDF library iTextSharp (based on iText).
Snippet of the actual transformation function:
'''
''' Combines two source pdf's to one single pdf.
'''
''' The file-location incl. the name of the original pdf.
''' The file-location incl. the name of the mark-up pdf.
''' The file-location incl. the name of the generated combined pdf.
''' The name which the added mark-up layer will have in the new pdf.
''' The transformation which is executed on the original pdf: rotation, scaleX, scaleY, offsetX, offsetY
'''Return boolean indication whether the combination of the pdf's was successful.
'''
Public Function PDFCombineLayer(ByVal sourceOriginal As String, ByVal sourceMarkup As String, ByVal destination As String, Optional ByVal NewLayer As String = "SOURCE-DRAWING", Optional ByVal Transform As String = "0;1;1;0;0") As Boolean
Dim oPdfOriginal As iTextSharp.text.pdf.PdfReader = Nothing
Dim oPdfMarkup As iTextSharp.text.pdf.PdfReader = Nothing
Dim oPdfStamper As iTextSharp.text.pdf.PdfStamper = Nothing
Dim PDFDirectContent As iTextSharp.text.pdf.PdfContentByte
Dim iNumberOfPages As Integer = Nothing
Dim iPage As Integer = 0
Dim matrix1 As Drawing2D.Matrix = Nothing
Dim matrix2 As Drawing2D.Matrix = Nothing
Try
'Read the source pdf-files and prepare new file.
oPdfOriginal = New iTextSharp.text.pdf.PdfReader(sourceOriginal)
oPdfMarkup = New iTextSharp.text.pdf.PdfReader(sourceMarkup)
oPdfStamper = New iTextSharp.text.pdf.PdfStamper(oPdfMarkup, New IO.FileStream(destination, IO.FileMode.Create, IO.FileAccess.Write))
'Count pages in original pdf and create new pdf wih same amount of pages.
iNumberOfPages = oPdfOriginal.NumberOfPages
oPdfStamper.GetPdfLayers()
'Make transformation matrix
If Transform = "" Then Transform = "0;1;1;0;0" 'Note transform: rotation(degrees), scaleX, scaleY, offsetX, offsetY
Dim ar() As String = Split(Transform, ";")
If Not ar.Length = 5 Then ar = New String() {0, 1, 1, 0, 0}
If ar(1) <= 0 Or ar(2) <= 0 Then Throw New ArgumentOutOfRangeException("transform", "Make sure that scaling factors of the transformation are larger than zero.")
matrix1 = New Drawing2D.Matrix
matrix1.Rotate(-CSng(ar(0)))
matrix1.Scale(CSng(ar(1)), CSng(ar(2)))
matrix1.Translate(CSng(ar(3)), CSng(ar(4)))
matrix2 = New Drawing2D.Matrix
'Add the new layer to each of the pdf-pages.
If NewLayer = "" Then NewLayer = "SOURCE-DRAWING"
Dim PDFNewLayer As New iTextSharp.text.pdf.PdfLayer(NewLayer, oPdfStamper.Writer)
Dim PDFLayerMem As New iTextSharp.text.pdf.PdfLayerMembership(oPdfStamper.Writer)
PDFLayerMem.AddMember(PDFNewLayer)
Do While (iPage < iNumberOfPages)
'Get new page
iPage += 1
Dim iPageOriginal As iTextSharp.text.pdf.PdfImportedPage = oPdfStamper.Writer.GetImportedPage(oPdfOriginal, iPage)
PDFDirectContent = oPdfStamper.GetUnderContent(iPage) 'add page under existing pdf in new layer
matrix2 = matrix1.Clone 'Cloning is necessary, otherwise all adaptations to matrix2 are also done in matrix1.
'Compensate for the orientation of the original pdf-file.
Dim iRotation As Single = oPdfOriginal.GetPageRotation(iPage)
Select Case iRotation
Case Is = 90
matrix2.Rotate(-iRotation)
matrix2.Translate(-oPdfOriginal.GetPageSize(iPage).Width, 0)
Case Is = 180 'Not tested yet.
matrix2.Rotate(-iRotation)
matrix2.Translate(-oPdfOriginal.GetPageSize(iPage).Width, -oPdfOriginal.GetPageSize(iPage).Height)
Case Is = 270 'Not tested yet.
matrix2.Rotate(-iRotation)
matrix2.Translate(0, oPdfOriginal.GetPageSize(iPage).Height)
Case Else
End Select
'Add the new layer ot this page.
PDFDirectContent.BeginLayer(PDFNewLayer)
PDFDirectContent.AddTemplate(iPageOriginal, matrix2)
PDFDirectContent.EndLayer()
Loop
oPdfStamper.SetFullCompression()
Return True
Catch ex As Exception
Return False
Finally
oPdfMarkup.Close()
oPdfOriginal.Close()
oPdfStamper.Close()
matrix1.Dispose()
matrix2.Dispose()
End Try
End Function
Code has been posted on Google Code http://code.google.com/p/pdflayermerger/
Many thanks to iText for the excellent library and to Lukasz Swiatkowski for the glass button component (http://www.codeproject.com/Articles/17695/Creating-a-Glass-Button-using-GDI).
Thursday, April 26, 2012
Apple is 10 years behind Microsoft when it comes to security. Time to face the music…
http://malware.cbronline.com/news/apple-10-years-behind-microsoft-on-security-kaspersky-250412
Credits goto Steve Evans & CBR Online
http://malware.cbronline.com/archive/4294941974
It seems it’s time to face the music for Apple..
Kaspersky founder and CEO Eugene Kaspersky,
speaking exclusively to CBR at Info Security 2012, Kaspersky told us that Apple is a long way behind Microsoft when it comes to security and will have to change the ways it approaches updates following the recent malware attacks.
"I think they are ten years behind Microsoft in terms of security," Kaspersky told CBR. "For many years I've been saying that from a security point of view there is no big difference between Mac and Windows. It's always been possible to develop Mac malware, but this one was a bit different. For example it was asking questions about being installed on the system and, using vulnerabilities, it was able to get to the user mode without any alarms."
Kaspersky added that his company is seeing more and more malware aimed at Macs, which is unsurprising given the huge number of devices being sold. Its most recent quarter revealed Mac sales of 4 million, a 7% rise on the year ago quarter. These figures are still dwarfed by PC sales of course, and Kaspersky said Windows will remain the primary target for cyber criminals.
However he added an increase in Mac malware was, "just a question of time and market share. Cyber criminals have now recognised that Mac is an interesting area. Now we have more, it's not just Flashback or Flashfake. Welcome to Microsoft's world, Mac. It's full of malware."
"Apple is now entering the same world as Microsoft has been in for more than 10 years: updates, security patches and so on," he added. "We now expect to see more and more because cyber criminals learn from success and this was the first successful one."
Tuesday, April 17, 2012
Springpad : Make your live easier
Springpad helps you share & discover with the people you trust.
Collaborate with your friends and family.
Start a notebook for any interest, any project, any “I’ve got to do this!” list. Then invite the right people to help with each one – your foodie friends, your book club buddies, your mom – anyone! Comment on each other’s contributions and build something great together.
Save anything to Springpad, from anywhere.
Fill your Springpads with things you find on the web or on the go. Clip an article, snap a photo, scan a product barcode, record a voice memo, or save a place nearby. Then access it anytime, anywhere you need it.Whatever you save, we’ll make even better.
Monday, April 16, 2012
Chronology of Programming Languages
A chronology of selected programming languages shows a few of the links between them. The diagram is not a genealogy but merely indicates major patterns of influence. The classification of languages as imperative, functional, object-oriented or declarative is also approximate; only a few "pure" languages belong exclusively to one of these categories. The chronology is based in part on time lines constructed by Éric Lévénez and by Pascal Rigaux and on information from the Association for Computing Machinery History of Programming Languages conferences. |
Brian Hayes |