Home

Advertisement

It's alive, it's alive, Muhahahahaha!!!

  • Sep. 5th, 2008 at 10:37 PM
Default

So yeah, another erratic update. I really should put LJ as my IE homepage (Fx is open pretty much open all the time, so there's no real point for setting a homepage for it).


Anyways, quick rundown over the last 6 weeks



New Car

A dark blue (navy?) '94 Mitsubishi Lancer. Been driving it for about three weeks now. Only thing is that I wish it had a manual transmission. Still happy with it though.

IScript Editor

I'm actively working on this at the moment. I'm planning to add in my MS-Agent replacement so I have a good reason to work on it too. I mean, who wouldn't want XP-tan to help them out?

Uni

As always (ignoring 1st Year, 2nd Semester), Math's is fun. Fields & Waves is okay. The Quantum Mechanics component of Practical Physics is far more interesting this semester. The Acoustics section is not. I'm pretty sure there's a third Physics course, but it eludes me at the moment.


So yeah, fun times :D

Tags:


; return 0;
  xor    EAX, EAX
  ret

Connection Disconnected. Reconnecting...

  • Jul. 25th, 2008 at 5:11 PM
Default

I'm still here!!!

I keep promising to myself to post here far more often, but I'm always being distracted by one thing or another, be they homework, fanfiction, or the varying manga series whose scanlations I read. In any case, I'll try to have a more regular posting schedule.

Updates on all projects )

Tags:


; return 0;
  xor    EAX, EAX
  ret

Happy Birthday to Me!!!

  • Apr. 5th, 2008 at 7:00 PM
Default

Yep, today I turn 20.

I know I haven't posted since Uni started again, but I figured that of all the days I should make a post, it should be this one.  As of right now, I'm getting ready to go to some yum cha restaurant, Eastern Palace Chinese Restaurant on Stud Rd. in Rowville.

Or at least I think that's what the place is called.  Otherwise my GoogleFu isn't as good as it should be…

7 hours after I should have posted this:
I can honestly say I would describe the food as “meh”.  Nothing terribly exciting about the food or service, despite how much my mother tried to hype up both.  Inthe end, she said it wasn't all that great either.  The restaurant staff probably tried harder when she first ate there, as a group of twenty+ people (as in the case of when she went on some office function), should eat far more than a group of six (my b/day celebration

On a side note, I just remembered that I really need to find a Unicode Character Map extension FireFox.  Though rather pointless as I could use three periods instead, I still fired up the Character Map utility provided with Windows® to find out the code for the horizontal ellipsis (…).  I'd write one myself, but unfortunately extension programming still hasn't “clicked” with me yet.

Speaking of programming, no real progress on Desktop Companion has been made since the last post.  I had began porting it to VB.Net and posted it to SourceForge, but as Uni picked up, I seem to lost the drive to even do that.  I have started yet another project, a .Net FLV Player, though it's been put on hold until I learn more about the AMF structures in the file.  I have need of this as I want a program which can download and save to disk *.flv movies while playing them.  Resuming a stopped download is a design goal.  Right now, I have to do one or the other. FireFox rarely finishes downloads the entirety of a *.flv, and it restarts the download if I tell it to refresh.

the page.

Tags:


; return 0;
  xor    EAX, EAX
  ret

Ack! Illness befalls me

  • Mar. 2nd, 2008 at 7:51 PM
Default

Absolutely no progress whatsoever since Thursday 28th February.  I progressed from having a slight fever on Thursday, to having headaches and having to constantly blow my nose today.  I've blown my nose hard enough so many times that the blood vessels in my left nostril have ruptured.  Not exactly a fun thing to have your nose start bleeding while you are in the shower.


What is even worse is that Semester 1 2008 is starting tomorrow.  I think I'll drown my sorrows in some fanfiction...

Tags:


; return 0;
  xor    EAX, EAX
  ret

DesktopBuddy Progress Report 26-02-08

  • Feb. 26th, 2008 at 11:05 PM
vb, programming, vb.net, .net, c++

After a marathon session of coding today, I'm glad to say that LibCharacter is now almost theoretically capable of displaying a non-interactive character on screen.  I say theoretically because I haven't actually executed any code yet since DCHostApp is still an empty project.  Anyways, it should be able to display alpha-blended bitmaps both via P/Invoking UpdateLayeredWindow() and simulating it with just managed code.  I just need to put in code to toggle a FramePlayer's visibility and put in Region support into the managed window (otherwise the window would remain a rectangle despite not looking like it), then I'm set to start work on the other componenents for a while.  Hopefully I can release a beta version by Sunday, though I need to create a suitable image.  I'm leaning towards DOSKitty, but I'll change to something else if its too complex an image to make.


; return 0;
  xor    EAX, EAX
  ret

DesktopBuddy Progress Report 22-02-08

  • Feb. 22nd, 2008 at 4:28 PM
vb, programming, vb.net, .net, c++

I reinstalled VS on Thursday morning (the 20th), so I've made some progress over the last couple of days.  As far as Version 1.0 release is concerned, the BitmapFrame and its base class, FrameBase, are feature complete.  I decided to leave SVG & animation (as in GIF-style animations and not hard coded into the Companion class) support for until later.  The reason for this is that SVG would have completely different animation requirements to that of a frame based one like GIF.  As I'd like to keep that distinction hidden away from the FramePlayer class, it's best to leave it unsupported for now.  Besides, calling FramePlayerInst.PlayFrame(NextFrame); multiple times in my old code worked well enough, and that was using UpdateLayeredWindow().

Next on the agenda is making a platform independant FramePlayer class, as UpdateLayeredWindow() is only available on Win2k+.


; return 0;
  xor    EAX, EAX
  ret
vb, programming, vb.net, .net, c++

Only a couple days in and I've already had two delays.  The first was getting an acceptable version control setup, and the second is having to reinstall VS2005 just so I can install the JLCA.

Read rest of rant )

; return 0;
  xor    EAX, EAX
  ret

OS-Tans

  • Feb. 15th, 2008 at 1:02 AM
vb, programming, vb.net, .net, c++

Originally, I was going to rant about Firefox, but then she got more testy than usual while writing that post.  She became crash-happy ever since I opened up Internet Explorer and started composing it, but I'm going to leave that topic now for a future time where she's asleep.

Anyways, I've decided to post about a subject I discovered last week: OS-tans

How I failed to mention it in my last post, I don't know, especially with a with 15+ tab Fx window devoted to an OS-tan forum and a VS solution inspired by OS-tans open, I truly don't know.  In any case, I'll talk more on that project of mine later in this post.

Read on )

Random fact: This post took me three days to compose


; return 0;
  xor    EAX, EAX
  ret

A month later...

  • Feb. 11th, 2008 at 1:15 PM
Default

Well, it's been over a month since my last post.  Maybe I should put this as my homepage so I'd remember...

Anyhow, on with the post! )

; return 0;
  xor    EAX, EAX
  ret

Starting to post again

  • Jan. 6th, 2008 at 10:43 PM
Default

I have no excuse for not posting - I've been home the entire time.  I've just been too lazy to.


Anyway, with summer classes starting on the 14th, who knows what wierd and wonderful things I can talk (or more likely rant) about?

Tags:


; return 0;
  xor    EAX, EAX
  ret

Battledawn Rant

  • Nov. 26th, 2007 at 9:55 PM
Default

Disclaimer: This post is purely for ranting purposes.  In all likelyhood, it will not make sense.


For all of you who haven't heard of battledawn, you can sign up at http://www.battledawn.com/.


Well anyway, this morning I found out that 49 of my workers were killed via Spy Ops.  This really annoyed me, as that accounted for 6·10% of my total population.  Now, just like the old saying of closing the barn doors after the cows have left (or something on those lines), I invested in spy protection.  Good thing I did do it though, as I caught one of my conquers trying to kill even more workers, reduce my oil, and set off an EMP in my colony.  This was all today, mind you.


Now, I'm one who believes in retribution for wrongs made against me, but I don't particularly like using spy ops.  For one, they are easily stopped.  They also cost one worker per spy.  Instead, I decided to nuke the guy.  Nukes are relatively cheap and I fire them off with reckless abandon anyway.


To ensure they learn not to annoy me, I sent three nukes.  Three nukes, each killing 10% of the worker population and a population of about 475, it should kill off 128 workers.  Kind of overkill, but I felt quite wronged, especially since they made my worker population drop below 800 and delayed the creation of another squad by at least a day.  I could have had another laser tank squad and a guided missile infantry squad.


The point of this rant? Well, let it be a lesson to all my conquers, present and future, do not annoy me.




On another conquer-related issue, I'm sad to say that I had to liberate three conquers today. All three belonged to alliances which became a sub-alliance to nWo.  The food they provided will be sorely missed.


; return 0;
  xor    EAX, EAX
  ret

Live Journal Rants

  • Nov. 19th, 2007 at 3:20 PM
Default

I discovered last night that custom css doesn't work with comment pages.  Considering how much trouble I went through just to get my previous post to look nice, I was more than annoyed.  Now, until I find a work around, I'll edit my post so it will be visible in its entirety on the front page.


; return 0;
  xor    EAX, EAX
  ret

FileDownloader 2.0 Completed!

  • Nov. 18th, 2007 at 6:27 PM
vb, programming, vb.net, .net, c++

I've finished version 2 of my command line download utility today.  I'm so happy, I can finally get around my machine's hatred of upload sites like MegaUpload and finish downloading the latest chapters of the Naruto manga (I'm stuck at Chapter 371, which I forced myself to reach).  Yeah, I know I could probably find some torrents, but I prefer http downloads for files < 10 MiB.

History of FileDownloader

Origins

Late January 2007, I discovered the wonderful manga series called Love Hina.  At that time, I hadn't used the bittorrent protocol, so I was reduced to hunting for http downloads.  Unfortunately for me, the only source I could find required that I download each and every page individually, rather than in one large archive.  Like any good programmer (i.e. a lazy one), I churned out a program to do this long, tedious, boring task for me.  The program I needed to make had the following goals:

  • Use listings of urls to choose which files to download.
  • Provide a referer.
  • Allow the save location to vary for each set of files to be downloaded
  • To skip already existing files in case I reran the program to deal with incomplete files (which I happily deleted manually).
Believe it or not, those points were all accomplished in 108 lines of VB.Net 2003 code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 Option Explicit On Option Strict On Imports System Imports System.IO Imports System.Net Module modMain Private ReadOnly Invariant As System.Globalization.CultureInfo = System.Globalization.CultureInfo.InvariantCulture Public Enum Sections Other Config Files End Enum Public Sub Main(ByVal Args() As String) Dim FS As New FileStream(Args(0), FileMode.Open) Dim SR As New StreamReader(FS) Dim Files As New ArrayList Dim S, Path, Ref As String Dim Section As Sections = Sections.Other Do S = SR.ReadLine() If S <> "" AndAlso S.Chars(0) <> "#" Then S = S.Trim() Select Case Section Case Sections.Files Files.Add(S) Case Sections.Config Dim Tmp As String = S.ToUpper(Invariant) If Tmp = "[FILES]" Then Section = Sections.Files ElseIf Tmp.StartsWith("OUTPUTDIR") Then Tmp = S.Substring(S.IndexOf("="c) + 1).Trim() If Tmp.EndsWith(IO.Path.DirectorySeparatorChar) Then Tmp &= IO.Path.DirectorySeparatorChar Path = Tmp ElseIf Tmp.StartsWith("REFERER") Then Ref = S.Substring(S.IndexOf("="c) + 1).Trim() End If Case Sections.Other S = S.ToUpper(Invariant) If S = "[CONFIG]" Then Section = Sections.Config End If End Select End If Do_Continue: Loop Until S = "" SR.Close() Dim TTL, TF, STL, SF, SkF As Integer For Each S In Files Dim OutFile As String = Path & S.Substring(S.LastIndexOf("="c) + 1) If IO.File.Exists(OutFile) Then Console.WriteLine("""{0}"" already exists. Skipping", OutFile) SkF += 1 GoTo [Continue] End If Console.Write(" Downloading ""{0}"": ", S) Try TF += 1 Dim WR As HttpWebRequest = DirectCast(WebRequest.Create(S), HttpWebRequest) WR.Referer = Ref WR.Timeout = 40000 Dim Resp As HttpWebResponse = DirectCast(WR.GetResponse(), HttpWebResponse) Dim Tmp, Cnt As Integer Cnt = 0 If Resp.StatusCode = HttpStatusCode.OK Then FS = New FileStream(OutFile, FileMode.CreateNew) Dim RS As Stream = Resp.GetResponseStream() ' Dim SRR As New StreamReader(RS, Text.Encoding.GetEncoding("iso-8859-1")) ' Debug.WriteLine(SRR.ReadToEnd) Dim B(4096) As Byte Try Do Tmp = RS.Read(B, 0, 4096) FS.Write(B, 0, Tmp) If Tmp < 4096 Then Threading.Thread.Sleep(5000) Cnt += Tmp TTL += Tmp Loop Until Tmp = 0 STL += Cnt SF += 1 Catch Ex As Exception Debug.WriteLine(Ex) End Try FS.Close() End If Console.WriteLine("[{0}] {1}", Cint( Resp.StatusCode), Resp.StatusDescription) If Cnt <> 0 Then Console.WriteLine("{0} Bytes Read", Cnt) Resp.Close() Threading.Thread.Sleep(5000) Catch Ex As Exception Console.WriteLine("Exception Occured") Console.WriteLine(Ex.ToString()) End Try [Continue]: Next Console.WriteLine(Environment.NewLine) Console.WriteLine("Downloads complete") Console.WriteLine(" Successful Downloads: {0,3} Files/{1} Bytes/{2:# ##0.00} KiBiBytes", SF, STL, STL / 1024) Console.WriteLine(" Total Downloads: {0,3} Files/{1} Bytes/{2:# ##0.00} KiBiBytes", TF, TTL, TTL / 1024) Console.WriteLine(" {0,3} Files Skipped", SkF) Console.WriteLine() End Sub End Module
Here is an excerpt from the LH Volume 1 config file:
001 002 003 004 005 006 007 008 009 010 011 ... 103 104 105 # Anything that starts with "#" is classed as a comment # These files are case insensitive as far as the downloading program goes. In fact, # anything that may be case sensitive is not parsed by the program itself. [CONFIG] OutputDir = C:\Documents And Settings\Robert\Desktop\LH\Vol 01\ Referer = http://manga.asianfanatics.net/index.php?dir=Shonen/Love%20Hina/Vol01/ [FILES] http://manga.asianfanatics.net/index.php?dir=Shonen/Love%20Hina/Vol01/&file=lh01-000e.jpg http://manga.asianfanatics.net/index.php?dir=Shonen/Love%20Hina/Vol01/&file=lh01-001e.jpg http://manga.asianfanatics.net/index.php?dir=Shonen/Love%20Hina/Vol01/&file=lh01-002e.jpg http://manga.asianfanatics.net/index.php?dir=Shonen/Love%20Hina/Vol01/&file=lh01-003e.jpg ... http://manga.asianfanatics.net/index.php?dir=Shonen/Love%20Hina/Vol01/&file=lh01-095e5.jpg http://manga.asianfanatics.net/index.php?dir=Shonen/Love%20Hina/Vol01/&file=lh01-096e5.jpg http://manga.asianfanatics.net/index.php?dir=Shonen/Love%20Hina/Vol01/&file=lh01-097e5.jpg

Functionality beyond that wasn't required, since (until recently) Download Accelerator Plus! and Free Download Manager easily handled everything I needed to do since then.

Until Now.

Version 2

Now I need a program to do the same thing but better.  This time I needed a different referer for each file.  Now, this single requirement means that I'd need to rewrite pretty much the whole program.  The new Referers need a new storage place, need to be read differently (on a per-URL basis, which meant either a tricky name-value pair system or something like XML), and be handled differently (such as in the case where a default referer is used inconjunction with the individual ones).  Relative URLs were another feature that I really wanted to put in, since I'm batch downloading, the URLs are largely similar.

Due to the need for the rewrite, I now had the opportunity to put in other features I missed out on but couldn't due to the original's simplicity:

Per-File save locations
Before, files could only be downloaded to a single directory. Now, it's possible to save files in different locations without resorting to creating a new URL listing.
Renaming of downloaded files.
The original was hard-coded to derive a filename from a certain type of URL.  Give it something like http://www.somedomain.com/some/path/script.php?file=filename.ext and it'll happily use it.  Give it http://www.somedomain.com/some/path/filename.ext and it will choke.  Now in addition to being able to handle both of the previous cases, using the same mechanism as the one that allows individual referers to be specified, problem cases which don't resemble either one can be dealt with too.
Relative everything (URLs, Referers and save paths)
There just to make life easier for me.  With my recent discovery of the useful little Shared (static in C++/CLI, C#, and the like) methods in the System.IO.Path class, as well as the System.URI class, I got .Net to do all the work for me :D.
Ability to easily add in new features
Using a more object-oriented approach but still retaining its procedural heritage, the new features are easily added without upsetting existing code.
Flexibility in what data is provided
The object-oriented approach allows more properties for each file downloaded to be calculated on the fly.  For example, if a custom filename isn't provided, it checks the URL to see if it can work it out from that.
Superior validation of input files.
Throwing exceptions makes it easier to halt program execution on finding an unexpected value in the input files

The increased power and flexibility doesn't mean increased complexity, with all the automatic defaulting as I've stated earlier. Comments are green and optional values are highlighted with a pale yellow.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ... | The vertical bar '|' is the new comment character. This is because the hash '#' is a valid | character in filenames while the vertical bar is not. [Options] | Not required if individual filenames specify an absolute path SaveDir = <Save Directory> | Not required if individual referers are specified. Referer = <Referer URL> | Not required if absolute URLs are used RefererBaseURI = <BaseURI for referers> | Not required if absolute URLs are used. Used for referers if the above is not provided. BaseURI = <BaseURI for download locations> | Completely optional, all it does is specify the string to prefix the final filename | with if it is automatically generated. FilenameStem = <Prefix> | The only compulsory value, it specifies how to deal with existing files. | 'Replace' still needs to be implemented properly. Currently, it just deletes the | original file even if it doesn't complete the download. Therefore I have commented it out. ExistingFileMode = [Skip | SkipLogged | Replace | Rename] | Completely optional. This value allows an input file to call a program upon completion. | For example, I currently use it to have WinRar archive each set of images I download. ExecuteOnComplete = <Shell string> [Files] | Repeat for every file downloaded. The URL value indicates the beginning of a new set | of data for the next file. URL = <URL, relative or absolute, of file to download> | Can be automatically generated if enough information is provided in the [Options] section & the URL. Filename = <The filename, and optionally, the path of the file to save to> | Defaults to the one in the [Options] section if not provided. Referer = <The URL for the referer> ...

The Future

For V2.5 or some other decimal iteration, I plan to fix the Replace functionality as well as add things like the logging and subsequent resuming of incomplete files, ability to handle other protocols like https and ftp, and other things so wierd and wonderful I haven't come up with them yet.  However, in the mean time, this version should serve me well.


If anyone out there is interested in a copy of the current version, just ask, even if it happens years in the future.  If I consider you trustworthy, I would probably give the source code too.


; return 0;
  xor    EAX, EAX
  ret
Default

As stated in my previous entry, I've been reading the Ah! My Goddess manga.  Well, I've finished reading up to chapter 228 as of last night (the latest chapter that I know of), and have now turned to fanfiction to help ease the withdrawal symptoms.  I must say, I am sorely disappointed by the offering found at FanFiction.Net.  I have yet to find an AMG story that I have enjoyed reading.

A bunch of reasons why I think I can't find good stories )

; return 0;
  xor    EAX, EAX
  ret

Ah! My Goddess

  • Nov. 13th, 2007 at 4:08 PM
Default

After reading a couple Ah! My Goddess & Ranma ½/Naruto crossovers over the weekend, I've finally decided to give this manga series a try.  Between Naruto, Love Hina, and Ah! My Goddess, I've got to say that AMG has quickly become my favourite of the three, despite only being 69 chapters in (that number is purely coincidental and no effort was made to stop at that point prior to posting this).

LH was hilariously funny at times, but the romance between Keitaro and Naru was dragged out for far too long - I began to get bored towards the end.  There is also its overabundance of fluffy moments which cause me to cringe.  I've read the entire series.

As for Naruto, it still has its moments, but my interest began to decline ever since Sasuke got his Cursed Seal.  That thing just never sat well with me.  I stuck by it though, just so I could have the necessary background to understand fanfiction which are based on information from later chapters. I've read up to, and including, chapter 367. Prior to finding out that the Naruto's parents were revealed in that chapter, I stopped at 359.

As it stands right now, AMG > LH > Naruto.  In terms of fanfiction preferences, it's the other way around, though that's mostly due to the number of stories written for each.

Speaking of fanfiction, I've haven't gotten round to working on that story of mine (see previous post), yet I've got a sudden desire to plan out a Naruto/AMG crossover, inspired by Divine by Kyubi88.  It is most unfortunate that all the Naruto/AMG crossover fanfics I have come across appear to be abandoned, especially since the few that have been written are quite good.


; return 0;
  xor    EAX, EAX
  ret

FREEDOM!!!

  • Nov. 4th, 2007 at 10:01 PM
Default

Ah, the nightmare that was the exams are finally over.  Overall, I think I did OK.


Summary of how I think I went )

But enough of that, the exams are over and I finally have time to work on all the little projects I've started.  Granted, I'm completely overlooking the fact I'm supposed to find a part-time job sometime in this break, but considering that I have until the end of February/start of March (I haven't checked the 2008 Academic calander), I will have plenty of time.

Just in case I have a reader (which I doubt, but I can always hope :D), here's a sneak preview to my first fanfiction.  It is an Alternate-Universe story based in the Naruto fandom.


Space and Time are Relative )

On a completely unrelated note, one of these days I'm going to have to finish creating that custom stylesheet for my L.J. pages.  I mean, look at Definition List, it looks atrocious.Aside from italized and enlarged title in the top-left, I haven't done much.  I mean, look at Definition List, it looks atrocious, and the rest of the page looks rather plain.


; return 0;
  xor    EAX, EAX
  ret

Hello World! Salut le Monde !

  • Oct. 28th, 2007 at 11:10 AM
Default

Now I've gotten the age old tradition for a programmer's first foray into a new language out of the way, it's time to introduce myself.

I'm completely stumped.  Introductions are a pain to write.

I know!  Let's see, I'm a 19 year old male Physics student at RMIT University.  I enjoy reading, programming, and other stuff that has to do with computing in general.  Computer based activities tend to lean towards those which don't require a lot of computing power or bandwidth, as neither my machine nor my internet connect are sufficiently powerful enough to handle them.  MSN Messenger has been known to crash my computer.

I should really get back to studying for my exams.  I have three this week, one of them tomorrow, and here I am, wracking my brain, trying to introduce myself to the world in a post that will in all likelyhood will merely take up space in whatever database it resides in.

I think I should just stop.  I'm just rambling now.  Anyways, expect to hear stories, rants, and other odd little things I decide to share with the world in the future.


; return 0;
  xor    EAX, EAX
  ret