Showing posts with label specification. Show all posts
Showing posts with label specification. Show all posts

Friday, June 28, 2013

Bing Image Parser

How many people have noticed the different images that are displayed on the home page of the search engine Bing? I used to visit the Bing homepage just to check the image each day. As an aside you can get some trivia on the US version of the site.



It was then that I had an idea to see if there was a way to automate the way to see different images that are provided by Bing. After a search, done ironically, on well "Google" (Searching on Google is like second nature for me), I was able to get an RSS feed URL for the Bing images, and able to parse it using a small Java application.

The reason behind choosing a source which gives data as RSS is that it is a standard. What the core of this application does is parse an RSS Feed. The other functionality like console, ability to save image and other settings are built around this core. So essentially this can be reused to parse other RSS Feeds.
The UI is not very fancy, it is a invoked via command line and there is a windows shell script that can be used to run it easily. (Make sure you have Java runtime installed). If you don't want the source code, you can grab a build file (zip file with the application and shell script file) from GitHub.

After getting the build file, extract it to a folder, edit the "settings.properties" file and run the "run-biotd.cmd" file. If you are opting to save the images to disk, make sure that the folder specified exists.



The entire eclipse project is now available at GitHub and licensed under the "Apache License Version 2.0" at the link below.
https://github.com/midhunhk/the-bing-image-of-the-day-parser

Build no 0.4.5 is available at
https://github.com/midhunhk/the-bing-image-of-the-day-parser/blob/master/BIotD/builds/BIotD_0.4.5.zip

Make sure to check these out and watch out for future updates. You can use this source code to parse any other RSS feed response and make an awesome app, so don't wait up.

Sunday, October 09, 2011

Information on Audio Steganography

    In the following post, I am giving some guidelines and info about the Final Year Project that I did for my Engineering course. The information provided here is solely intended for educational purposes.

    What is Steaganography? Simply put, it is the art and science of writing hidden messages in such a way that no one, apart from the sender and intended recipient, suspects the existence of the message. Its like passing secret information right under people's noses, but no one has a clue that it contains secret information. This is unlike an encrypted file / information where people can suspect that there is a secret information.

    Anyway, there is a long history and types of Steganography that you can get from following this wikipedia link. What I am going to concentrate is hiding an encrypted file inside an audio file (*.wav). We have chosen wave format because of its simplicity and its simple structure and is based on the RIFF File Format. Why not use MP3, you may have a question? We need the Source audio file to be large enough to accomodate the encrypted contents of the file that we are going to hide and I haven't researched it, any licensing issues for using MP3 format.

    First of all, get a hold of the WAV file format specifications. The WAVE file header is 44 bytes long. You should not modify any data here, because if you do, the file will become unusable (i.e; cannot be played back in a media player software). 

   Since we decided to use the Java Programming Language to implement this, you would like to look into ByteArrayOutputStream, and byte Arrays to have access to each lower level bit of the files that you would be dealing with. So read the source file into a byte array, skip the header part, (44 bytes). Using an LSB replacement algorithm, we will add our data to this file.

LSB Audio Steganography Method


     What happens is we will replace the 2 least significant bits of each byte of the source file with bits from our secret message. You also need a method to know how much data you have to read back. You can use a marker text at the end, or keep the length of the message at the beginning which is what we did. The reason for changing the LSB is that, since they are the Least Significant (duh!), a listener cannot detect that much loss in information about the file.

    As stated in the FAQ,  I cannot post the source code for my project. I guess I have explained what goes on in a short post. You can figure out how to do all these with some simple Google Searches. I would suggest using the Eclipse IDE for development, splitting the project into a number of classes in nice packages :) and add any other features that you can think of. The complex part is encoding the message, and that will be just a few lines of code. 

    We had a user management module with a database for managing users, a log writer module for writing out a log, some extra UI libraries to make the app look unlike a java project, encrypt the message using any Encryption algorithm etc...

Tuesday, January 06, 2009

The Rubicon Panel - Control Panel

    The Rubicon  Panel is a custom developed control panel for use with the redesigned Mangalam College of Engg site. A number of features have been improvised and implemented into the panel. Shown below are the screen shots of the important features of the panel.


    This is the Rich text editor for managing the news, events and even the static contents for the site. All the data arse stored in the database. Even a person without  any knowledge with web designing can easily add or edit contents with much ease.



    This is the Add new staff member to the database form, part of the staff management module. 



    The Gallery management module has been a powerful module that has been researched and implemented for this project. New album can be created very easily and thumbnails are generated automatically for each uploaded image.



    The uploaded document manager makes it easy to upload documents to the site. It also provides the feature to get the link for each file , so that it may be added to a news or event item easily.

    That covers the important features provided by the panel ....

   

Mangalam College of Engg - Redesign

    I was working on a project for redesigning the website for Mangalam College of Engineering, Kottayam, Kerala. After studying the old site and the requirements put forward by the college, started with the design and layout. A draft was completed in a week's time incorporating all the fine details.

    The details specified included having an interesting layout and provide information to prospective students and parents, current students and their parents, the AICTE and anyone wishing to know more about the college.

     The dynamic parts of the site includes having a Latest News and Events notification on homepage itself, display the details of all faculty members and courses given by the college, a Photo Gallery and a portal for Admission Queries among other things...

    Well, I dont know if this is gonna be implemented or not, but this is the homepage of the redesigned site.


    The design was done using Fireworks, Dreamweaver and Flash. The dynamic end is coded using PHP and uses MySql Database.

    Most of the time was spent on developing the Control Panel for the site. It is codenamed Rubicon Panel and can be features a Rich Text editor, Uploaded File manager, Staff List Manager, Gallery Album Manager.

        There is now question over when or if the redesigned site will get to be implemented. There has not been much further response from the management regarding this. So at the moment, the site lives on "localhost" ........

Monday, March 10, 2008

CryptX 5 :: Class Structures revision 0.1.0.2

   Heres the newly revised specification for the class structures for the Open Source encryption software project codenamed SideLiner. Although not much input from the community, i was able to think out some more solutions for possible problems in the structure when implementing 
in C# or Java in later development life of the project.

The changes include :
1. Working around the MI (Multiple Inheritance) problem in C# and Java. 
2. Making the class structure more understandable. 
3. Made the "DiskFile" class abstract. 
4. Added ae watermark in the specification.

So expecting more help from the community out there.





  

Sunday, January 13, 2008

Module Header - New Proposal

   Ok, heres a new addition / proposal for the satndardization 
of the module structure for software projects. Its just an 
addition to the previous one.

* Name of the module [Application Domain / Type]

ie;
[Application Domain] is the addition to the Name of a module and specifies which might suggest where the module is implemented and how it can be classified. This might be useful if the software development group has multiple application domains, like us. Its more or less like keywords..

eg:

* ClientScroller [hta / script]

* AlbumGallery [web / php / script / db]

* XmlReadList [app / flash / xml]

Wednesday, January 09, 2008

Software Module Header Structure

    After much research, i found a quite standard way of writing headers for software projects. It is used in almost every professional development environment. These are just some specifications, individuals or firms may have their own changes according to their requirements.

   The need for such a standardisation is that once a module is written and debugged, the author or other software developers may understand cleanly what is going on and would help in debugging for the entire application, modification without sideeffects and ofcourse as a strong supporter of the "Open Source" movement, code sharing.

Module Header Format ($ revisoon 2)
--------------------------------------------
* Name of Module
* Synopsis of Module
* Date of creation
* Author's Name
* [Modification History]
* [Different Functions supported with in / out params]
* [Global Variables accessed or modified by it]

--End--

eg : say the module header of a new program that i created might have the following header

--Start--
* ClientScroller
* script that Scrolls the client area up and down
* Decemebr 2007
* Midhun Harikumar (Centrum inc Software Solutions)

$ Version 0.32

--End--

    Another important specification is regarding the use of global variables. While using Object Oriented Programming, i guess there would be minimum amount of 
global variables lying around. The specification is to name the global variables 
with a leading small case g and underscore.

eg :
int g_nDestFileCount;

    This way we can easily figure out where the global variables are used and might help
debugging a lot easier.