Tech Kaizen

passion + usefulness = success .. change is the only constant in life

Search this Blog:

Database vs Data Warehouse

1. Database vs Datawarehouse

The primary difference between you application database and a data warehouse is that while the former is designed (and optimized) to record, the latter has to be designed (and optimized) to respond to analysis questions that are critical for your business. Application databases are OLTP (On-Line Transaction Processing) systems where every transaction has to be recorded, and super-fast at that. Consider the scenario where a bank ATM has disbursed cash to a customer but was unable to record this event in the bank records. If this started happening frequently, the bank wouldn't stay in business for too long. So the banking system is designed to make sure that every transaction gets recorded within the time you stand before the ATM machine. This system is write-optimized, and you shouldn't crib if your analysis query (read operation) takes a lot of time on such a system.

A Data Warehouse (DW) on the other end, is a database (yes, you are right, it's a database) that is designed for facilitating querying and analysis. Often designed as OLAP (On-Line Analytical Processing) systems, these databases contain read-only data that can be queried and analyzed far more efficiently as compared to your regular OLTP application databases. In this sense an OLAP system is designed to be read-optimized.

ref:
http://opensourceanalytics.com/2005/11/02/database-vs-data-warehouse/



2. Database, Datawarehousing, Generic Data Flow

Database:
1. Used for Online Transactional Processing (OLTP). This records the data from the user for history.

2. The tables and joins are complex since they are normalized. This is done to reduce redundant data and to save storage space.

3. Entity – Relational modeling techniques are used for database design.

4. Optimized for write operation.

5. Performance is low for analysis queries.

Data Warehouse:
1. Used for Online Analytical Processing (OLAP). This reads the historical data for the Users for business decisions.

2. The Tables and joins are simple since they are de-normalized. This is done to reduce the response time for analytical queries.

3. Data – Modeling techniques are used for the Data Warehouse design.

4. Optimized for read operations.

5. High performance for analytical queries.

General Data Flow – (Ex: Online Insurance Registration)
1. Customer enters the details in the Online Registration form.

2. The details are saved into the Database when the customer presses the Submit button in the form.

3. Business Intelligence Team of the Insurance Company uses an ETL tool to pull the data from the Database tables to the Data Warehouse tables.

4. Business Management uses Business Reporting Tools to pull Data from Data Warehouse tables for generating business reports.

ref:
http://www.shvoong.com/internet-and-technologies/blog/1827096-database-vs-data-warehouse/


3. Operational / informational data:
Operational data is the data you use to run your business and is realtime. This data is what is typically stored, retrieved, and updated by your Online Transactional Processing (OLTP) system. An OLTP system may be, for example, a reservations system, an accounting application, or an order entry application.

Informational data(Historical Data) is created from the wealth of operational data that exists in your business and some external data useful to analyze your business. Informational data is what makes up a data warehouse. Once data has been extracted from the operational systems into the new database it is then referred to as historical data.


ref:
Datawarehouse - http://www.pharmacyinformatics.org/datawarehouse.htm


4. What is Business Intelligence:
Business intelligence is a broad set of applications, technologies and knowledge for gathering and analyzing data for the purpose of helping users make better business decisions.

The main challenge of Business Intelligence is to gather and serve organized information regarding all relevant factors that drive the business and enable end-users to access that knowledge easily and efficiently and in effect maximize the success of an organization.

Business intelligence produces analysis and provides in depth knowledge about performance indicators such as company's customers, competitors, business counterparts, economic environment and internal operations to help making effective and good quality business decisions.

From a technical standpoint, the most important areas that Business Intelligence (BI) covers are:

• DW - Data warehousing - architecture, modeling, managing, processing

• ETL process and data integration

• Reporting, Information visualization and Dashboards

• OLAP - Online Analytical Processing and multidimensional analysis

• Data cleansing and data quality management

• Performance management

• Data mining, statistical analysis, forecasting

• MIS - Management Information Systems

Popular ETL Tools

• IBM WebSphere Information Integration (Ascential DataStage)

• Ab Initio

• Informatica

ref:

http://etl-tools.info/


5. Datawarehousing Reporting Tools:

Popular Tools

• Cognos

• Hyperion/Brio

• Business Objects (Crystal Reports)

• Argos

• Actuate

Labels: DATABASE, DOMAIN KNOWLEDGE

How to know if oracle is installed on Unix/Windows

How to know if oracle is installed in Unix -



Combination of checks below:



1. ps -ef grep pmon (or) ps -ef grep smon



This should give you at least one line of data....which will be the indication that there is an instance of Oracle running.



2. Look for a file /etc/oratab.

Its content should reveal all ORACLE_HOMEs present at your box.

When configuring a database is modify the oratab file for instance startup and shutdown at reboot.If the instance is in the oratab file, it is configured.



3. find / -name oracle -ls



4. Check if any Oracle processes are running by using "ps -ef grep ora" command



5. find / -name sqlplus



A database instance is the shell or the process that you would see in a Unix's PS and grep PMON.The database inself is instantiated with the CREATE DATABASE command, that is done within the instance.Thus you could have multiple databases in an instance. It is generally recommended to have one database per instance.The ORATAB would be used to check the database.The Oratab can be used to auto start databases as well as cycling through to backup each database on a given server. If you only have one database and one instance, then the PS command should suffice.



How to know if oracle is installed in Windows -



Combination of checks below:




If the Windows service is set to automatically start when the server boots but the database does not start, you may have a improper registry setting or you may have a bad service.



1. Check Task Manager for the ORACLE.EXE process. If it is present, then the service started.



2. Check the Alert Log for the database. If the problem is not with the database, there will be no indication in the log that the database even tried to start.



3. Check the oradim.log in the $ORACLE_HOME/database directory for errors. Check the date on the log file as versions before 9i did not date/time stamp the entries.



If there are no errors in the logs then try and start the database.

C:> sqlplus "/ as sysdba"

connected to an idle instance

SQL> starup



References:



Migrating from Oracle to SQL Server -

http://www.sql-server-performance.com/articles/dba/migrating_from_oracle_to_sql_server_p1.aspx



Oracle Basics: Querying an Oracle Database - http://www.devx.com/dbzone/article/16393



Oracle Concepts: The Instance and the Database - http://www.devx.com/dbzone/Article/20713



White Paper: SQL Server 2008 Compared to Oracle Database 11g - http://www.microsoft.com/sqlserver/2008/en/us/sql2008-oracle11g.aspx



Oracle vs SQL Server -

http://weblog.infoworld.com/dbunderground/archives/2008/03/oracle_vs_sql_s.html



Labels: DATABASE

64-bit data models



The 64-bit architecture has the following advantages:
  • A 64-bit application can directly access 4 exabytes( 1 exabyte = 1018 bytes (or)  260 bytes ) of virtual memory, and the Intel Itanium processor provides a contiguous linear address space.
  • 64-bit Linux allows for file sizes up to 4 exabytes, a very significant advantage to servers accessing large databases.


32-bit and 64-bit data models
ILP32LP64LLP64ILP64
char8888
short16161616
int32323264
long32643264
long long64646464
pointer32646464
Note:
The disadvantage of the LP64 model is that storing a long into an int may overflow. On the other hand, casting a pointer to a long will work. In the LLP model, the reverse is true.

The difference among the three 64-bit models (LP64, LLP64, and ILP64) lies in the non-pointer data types. When the width of one or more of the C data types changes from one model to another, applications may be affected in various ways. These effects fall into two main categories:

  • Size of data objects. The compilers align data types on a natural boundary; in other words, 32-bit data types are aligned on a 32-bit boundary on 64-bit systems, and 64-bit data types are aligned on a 64-bit boundary on 64-bit systems. This means that the size of data objects such as a structure or a union will be different on 32-bit and 64-bit systems.
  • Size of fundamental data types. Common assumptions about the relationships between the fundamental data types may no longer be valid in a 64-bit data model. Applications that depend on those relationships will fail when compiled on a 64-bit platform. For example, the assumption sizeof (int) = sizeof (long) = sizeof (pointer) is valid for the ILP32 data model, but not valid for others.

Sample Operating Systems:

Microsoft Win64 (X64/IA64) => LLP64

Most Unix and Unix-like systems (Solaris, Linux, HP-UX Itanium , etc.) => LP64

Fujitsu-owned HAL Computer Systems => ILP64


Endianism
Endianism refers to the way in which data is stored, and defines how bytes are addressed in integral and floating point data types.
Little-endian means that the least significant byte is stored at the lowest memory address and the most significant byte is stored at the highest memory address.
Big-endian means that the most significant byte is stored at the lowest memory address and the least significant byte is stored at the highest memory address.
Table 3 shows a sample layout of a 64-bit long integer.

Table 3. Layout of a 64-bit long int

Low addressHigh address
Little endianByte 0Byte 1Byte 2Byte 3Byte 4Byte 5Byte 6Byte 7
Big endianByte 7Byte 6Byte 5Byte 4Byte 3Byte 2Byte 1Byte 0


For example, the 32-bit word 0x12345678 will be laid out on a big endian machine as follows:

Table 4. 0x12345678 on a big-endian system

Memory offset0123
Memory content0x120x340x560x78


If we view 0x12345678 as two half words, 0x1234 and 0x5678, we would see the following in a big endian machine:

Table 5. 0x12345678 as two half words on a big-endian system

Memory offset02
Memory content0x12340x5678


However, on a little endian machine, the word 0x12345678 will be laid out as follows:

Table 6. 0x12345678 on a little-endian system

Memory offset0123
Memory content0x780x560x340x12


Similarly, the two half-words 0x1234 and 0x5678 would look like the following:

Table 7. 0x12345678 as two half words on a little-endian system

Memory offset02
Memory content0x56780x1234


The following example illustrates the difference in byte order between big endian and little endian machines.
The C program below will print out "Big endian" when compiled and run on a big endian machine, and "Little endian" when compiled and run on a little endian machine.

Listing 2. Big endian vs. little endian

#include 
main () {
int i = 0x12345678;
if (*(char *)&i == 0x12)
printf ("Big endian\n");
else if (*(char *)&i == 0x78)
      printf ("Little endian\n");
}


ref:
Porting Linux Applications to 64bit - http://www.ibm.com/developerworks/library/l-port64/index.html

Migrating to Solaris 64-bit: 32-bit Applications and Data Model - http://developers.sun.com/solaris/articles/solarisupgrade/64bit/Convert.html

Converting 32-bit Applications Into 64-bit Applications: Things to Consider - http://developers.sun.com/solaris/articles/ILP32toLP64Issues.html


Labels: PORTING

Python Integration with C++/Java

There are two, standard built-in ways of integrating Python with a Programming Language like C++/Java.

The first is writing an extension, which involves creating a wrapper for C that Python imports, builds, and then can execute.

A second built-in way of integrating these languages is called embedding, and is where C++/Java are given direct access to the Python interpreter.

C++ & Python Integration:

Boost.Python -
SIG for development of Python/C++ integration using Boost.Python - http://www.python.org/community/sigs/current/c++-sig/http://www.boost.org/doc/libs/1_37_0/libs/python/doc/index.html

Other Tools:
Extending and Embedding the Python Interpreter - http://docs.python.org/extending/
Extending Python with C - http://www.developer.com/lang/other/article.php/2191421

Java & Python Integration:

1. Jython http://www.jython.org/Project/
http://www.slideshare.net/ws.cander/jython-integrating-python-and-java-presentation

2. JPype - http://jpype.sourceforge.net/

3. jPython - Glue It All Together With Python –
http://www.python.org/doc/essays/omg-darpa-mcc-position.html
http://www.python.org/workshops/1997-10/proceedings/hugunin.html

Labels: PYTHON PROGRAMMING, SCRIPTING LANGUAGES

Java Open-Source Tools

Java Unit Testing – Junit

Swing GUI - jfcUnit

Html - HtmlUnit, WebTest

Servlets/EJB - Cactus

ANT - ANT stands for Another Neat Tool, and it lives up to its name. ANT takes your source code and builds it into an application—sort of.

CruiseControl - CruiseControl is a scheduling and reporting tool that uses ANT to build your system, and then runs all of its tests unit, integration, and acceptance (if they all exist, which they should). It then reports on the results in a variety of ways, including uploading HTML reports to a web server.

Castor - Castor is a relational-hierarchical-object mapping tool. It supports Java-to-XML , Java-to-SQL binding and lot more.

MySql - World's most popular OpenSource Databases. It's a general purpose database, and it comes with good JDBC drivers. (ConnectorJ is the official one)

Hibernate - OR mapping tool

Axis - Axis is a SOAP server from Jakarta. It implements SAAJ (SOAP with Attachments API for Java) from Sun, and SOAP 3 from W3C.

Tomcat - Servlet Engine
Catalina - the servlet container itself
Jasper - the JSP translator (it translates JSP source into Java source for a servlet)
Coyote - a web server

Reference:
The Best Java Open-Source Tools - http://www.informit.com/articles/article.aspx?p=29962

Java OpenSource Testing Tools - http://www.opensourcetesting.org/unit_java.php

Labels: J2EE PROGRAMMING

GUI MockUp Tools

A mockup is a version of how the site will generally look. There are two kinds of mockups: a completely image-based mockup, and an implemented HTML-based mockup. An image-based mockup is a picture created to represent what the website will look. It has no functionality, but it is a good way to discuss possible visual designs of the site. The second kind of mockup is an image-based mockup that has been converted to HTML. It may not be very functional, but it does show how the site will look as HTML, not just as an image.

A wireframe is the entire site without any of content. Usually this comes after the decided-upon mockup has been created and turned into HTML. This could be thought of as an outline of a book. It will include all the titles, links, etc. that will be in the final production, but will lack any of the actual content. Unlike mockups, a wireframe is completely functional, and gives a great way to test the navigation scheme on the site.

We often need a tool to quickly mockup user interfaces to help Stakeholders/Client envision the screen interactions, data structures, and/or overall look-and-feel of a proposed system that we are helping define requirements for.

Popular GUI Mockup & Wireframe Tools:

Justinmind - http://www.justinmind.com/

Balsamiq - http://www.balsamiq.com/

DesignerVista - http://www.designervista.com/

Firefox Pencil Addon - https://addons.mozilla.org/en-US/firefox/addon/8487

Mockup Screens - http://mockupscreens.com/index.php?page=Free-Download

Labels: TECHNICAL MISCELLANEOUS

libb64 : base64 encoding & decoding format

libb64 is a library of ANSI C routines for fast encoding/decoding data into and from a base64-encoded format. C++ wrappers are included, as well as the source code for standalone encoding and decoding executables.

Base64 uses a subset of displayable ASCII characters, and is therefore a useful encoding for storing binary data in a text file, such as XML, or sending binary data over text-only email.

Reference : http://sourceforge.net/projects/libb64/

Labels: TECHNICAL MISCELLANEOUS

Mobile Wireless Development

1. Microsoft Wireless LAN API



Installing this set of application programming interfaces (APIs) will enable you to create applications that can manage wireless LAN profiles and connectivity on Microsoft Windows XP Service Pack 2 (SP2) using the native wireless functionality in Windows, called Wireless Zero Configuration (WZC) service.



References:

wlanapi - http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=52A43BAB-DC4E-413F-AC71-158EFD1ADA50&displaylang=en



2. Moblin



Intel has a new mobile Linux project dubbed Moblin.



It includes a Linux kernel, a framework for a user interface, a browser, a multimedia framework, and embedded image creation tools, along with developer resources.

Sounds great until you realize there are a ton of other, similar frameworks under development. Nokia backs Maemo, Trolltech has Qtopia, and you'll remember we profiled OpenMoko just a week ago.



References:

Intel Open source Software -

http://software.intel.com/sites/oss/



3. Intel Mobile Platform Software Development Kit



Mobile Platform Software Development Kit 1.3 – Open Source Project for Windows and Linux

The Mobile Platform SDK for Moblin UMPC and Atom-based devices is covered by the BSD license. The Mobile Platform SDK is designed for developers who want a cross-platform, cross-OS solution.



References:

http://ossmpsdk.intel.com/



http://software.intel.com/en-us/articles/mobile-platform-software-development-kit-an-open-source-project-for-windows-and-linux-and-moblin/



http://www3.intel.com/cd/software/products/asmo-na/eng/download/eval/219691.htm



http://whitepapers.techrepublic.com.com/abstract.aspx?docid=261675



4. Devicescape



Devicescape enables mobile wireless devices to connect to any supported Wi-Fi hotspot or municipal network. Once the device and the network are set up from the Devicescape web site, connecting is automatic.



The Devicescape client and service allows, with minimal configuration:

• VoIP phone use at hotspots.

• Network login and authentication from small, limited-interface devices (using 802.1X).

• Automatic network login from notebook computers.



References:

DeviceScape - http://www.devicescape.com/

Labels: DOMAIN KNOWLEDGE, WIRELESS DEVELOPMENT

BPEL(Business Process Execution Language)

BPEL is a process modeling/orchestration language that standardizes process descriptions in a markup language similar to XML, allowing for the integration of business process management and automated web service applications.

BPEL allows business process users to define what business process activities interact with web services defined using web service description standards (WSDL).BPEL enables the sending and receiving of data between process activities that can be fulfilled by services or applications. Business processes modeled in the industry-wide BPMN standard can be exported to BPEL for execution, allowing for the straight-through integration of business processes and web services.

References:

Business Process Execution Language (BPEL) Tutorial -
http://searchsoa.techtarget.com/generic/0,295582,sid26_gci1330911,00.html#

From UML to BPEL -
http://www.ibm.com/developerworks/webservices/library/ws-uml2bpel/

Exposing SOA Enabled C Apps as Web Services -
http://xml.sys-con.com/node/314105

Labels: TECHNICAL MISCELLANEOUS

Windows Run Commands to access the control panel

Reference : http://www.neowin.net/forum/index.php?showtopic=251731

Common Run Commands

compmgmt.msc - Computer management
devmgmt.msc - Device manager
diskmgmt.msc - Disk management
dfrg.msc - Disk defrag
eventvwr.msc - Event viewer
fsmgmt.msc - Shared folders
gpedit.msc - Group policies
lusrmgr.msc - Local users and groups
perfmon.msc - Performance monitor
rsop.msc - Resultant set of policies
secpol.msc - Local security settings
services.msc - Various Services
msconfig - System Configuration Utility
regedit - Registry Editor
msinfo32 - System Information
sysedit - System Edit
win.ini - windows loading information(also system.ini)
winver - Shows current version of windows
mailto - Opens default email client
command - Opens command prompt

Run Commands to access the control panel

Add/Remove Programs control - appwiz.cpl
Date/Time Properties control - timedate.cpl
Display Properties control - desk.cpl
FindFast control - findfast.cpl
Internet Properties control - inetcpl.cpl
Keyboard Properties control - main.cpl
Mouse Properties control - main.cpl
Multimedia Properties control - mmsys.cpl
Network Properties control - netcpl.cpl
Password Properties control - password.cpl
Sound Properties control - mmsys.cpl
System Properties control - sysdm.cpl

Labels: TECHNICAL MISCELLANEOUS

Web Test Automation Tools

HtmlUnit - A Java unit testing framework for testing Web based applications

Selenium - Cross Browser

Watij - IE only

Sahi - An automation and testing tool for web applications, with the facility to record and playback scripts

Canoo WebTest - A free Open Source tool for automated testing of web applications in a very effective way.

JMeter - Apache JMeter is a 100% pure Java desktop application

LoadSim - A web application load simulator

Groovy - Potentially in conjunction with a specialist HTML parser to parse HTML pages as if they were XML

References:

Open Source Web Testing Tools in Java -
http://java-source.net/open-source/web-testing-tools

Watij and Selenium -
http://www.suryasuravarapu.com/2007/10/watij-and-selenium-are-they-ready-for.html

Labels: TEST AUTOMATION

MS Gina and Vista Credential Provider

Create Custom Login Experiences With Credential Providers For Windows Vista - http://msdn.microsoft.com/en-us/magazine/cc163489.aspx

Customizing GINA, Part 1 - http://msdn.microsoft.com/en-us/magazine/cc163803.aspx

Customizing GINA, Part 2 - http://msdn.microsoft.com/en-us/magazine/cc163786.aspx

Debugging a Windows Vista Credential Provider -
http://msdnfan.blogspot.com/2008/04/debugging-windows-vista-credential.html

How to implement your own Vista Credential Provider -
http://www.jwsecure.com/dan/2006/12/13/write-your-own-windows-vista-credential-provider/

Labels: VC++ PROGRAMMING

Source Static Analysis Tools

Static Analysis Tools

Klocwork
Preferred vendor approved by Intel strategic purchasing. See the Klocwork page for more information on the product and its licensing structure. For a quick overview of the Klocwork K7 tool suite and FAQ, visit Klocwork K7 Overview.

FxCop - Best tool available to date for analyzing "Managed Code" (aka .NET code) such as C#, VB or managed C++. Freely available from Microsoft.

Coverity

Fortify

Ounce Labs

Lintra - Static Analysis tool for RTL

Open-source or Noncommercial products

Multi-language

RATS — Rough Auditing Tool for Security, which can scan C, C++, Perl, PHP and Python source code.

Yasca - Yet Another Source Code Analyzer, a plugin-based framework for scanning arbitrary file types, with plugins for scanning C/C++, Java, JavaScript, ASP, PHP, HTML/CSS, COBOL, and other file types. It integrates with other scanners, including FindBugs, JLint, and PMD.

.NET (C#, VB.NET and all .NET compatible languages)

FxCop — Free static analysis for Microsoft .NET programs that compile to CIL. Standalone and integrated in some Microsoft Visual Studio editions. From Microsoft.

Java

FindBugs — an open-source static bytecode analyzer for Java (based on Jakarta BCEL).

PMD (software) — a static ruleset based Java source code analyzer that identifies potential problems.

Hammurapi - a versatile code review solution.

C

Sparse — a tool designed to find faults in the Linux kernel.

Splint — an open source evolved version of Lint (C language).

Cppcheck — a tool that can find memory leaks, buffer overruns and many other common errors.

C++

Cppcheck — a tool that can find memory leaks, buffer overruns and many other common errors.

Labels: TECHNICAL MISCELLANEOUS

WMI - IWbemServices Interface

IWbemServices Interface



The IWbemServices interface is used by clients and providers to access WMI services. The interface is implemented by WMI and WMI providers, and is the primary WMI interface.



IWbemClassObject *pObj = NULL;



//The pWbemSvc pointer is of type IWbemServices*

pWbemSvc->GetObject(L"path", 0, 0, &pObj, 0);



The IWbemServices interface inherits the methods of the IUnknown interface.



You can use the WMI Component Object Model (COM) API to write management client applications or create a new WMI provider. The COM API reference provides information for advanced system administrators, as well as developers who are writing client and provider applications.



For more information about writing WMI enterprise management applications, see Creating a WMI Application Using C++.



Examples



The following code example shows how a provider can get an IWbemServices pointer. The code requires the following #include statements and references to compile.



#include

using namespace std;

#include

# pragma comment(lib, "wbemuuid.lib")



IWbemLocator *pIWbemLocator = NULL;



HRESULT hRes = CoCreateInstance (

CLSID_WbemAdministrativeLocator,

NULL ,

CLSCTX_INPROC_SERVER CLSCTX_LOCAL_SERVER ,

IID_IUnknown ,

( void ** ) &pIWbemLocator

) ;



IWbemServices *pWbemServices = NULL;



if (SUCCEEDED(hRes))

{

hRes = pIWbemLocator->ConnectServer(

L"root\\CIMV2", // Namespace

NULL, // Userid

NULL, // PW

NULL, // Locale

0, // flags

NULL, // Authority

NULL, // Context

&pWbemServices

);



pIWbemLocator->Release(); // Free memory resources.



// Use pWbemServices



}



// Clean up

pWbemServices->Release();





References:

Creating a WMI Application Using C++ :

http://msdn.microsoft.com/en-us/library/aa389762(VS.85).aspx



Labels: VC++ PROGRAMMING

Wiki vs Sharepoint

What is wiki?

• 'wiki wiki' in Hawaiian language, meaning something "quick". This doesn't tell much about the nature of wiki, just that it is quick and easy to do what you want.

• Technically: A set of web pages that everybody can edit.

• Essentially: A tool that enables collaboration: An easy way to build a common knowledge base that is made of the contributions of different persons.

• The Definition of 'wiki' in Wikipedia: A wiki is a type of website that allows anyone visiting the site to add, remove, or otherwise edit all content, very quickly and easily, sometimes without the need for registration. This ease of interaction and operation makes a wiki an effective tool for collaborative writing. A wiki by nature enables and encourages people to add content to it.
Wiki as a developer tool

The Mozilla foundation (the developers of FireFox, Thunder bird and more) use the WikiMedia software for the development process. Like many other free software project, the contributors are spread all over the globe.

Wiki VS Sharepoint

• Sharepoint
1. Sharepoint is a shared file system - a repository for documents

2. Represents hierarchical structuring of information, within a somewhat rigid organizational framework

3. Supports MS proprietary data formats like .doc and .ppt

4. Has some scheduling and other organizational features that work with other MS tools like
Outlook

5. Requires IE running on Windows

• Wiki
1. Wiki is a shared knowledge base.

2. Very flexible organization and cross-linking structure defined by the users, although it has no
formal hierarchical organization

3. Possible in Wiki: have conversations/arguments about a topic, use interlinks, use images, Query the wiki as a data base, search for key words, look at user contributions.

4. MediaWiki has a version control mechanism (with diff capability). Possible to know who contributed what.

5. It is less frightening to edit a wiki - any mistake can be undone. However there is no WYSIWYG interface, editing is text based with simple formatting

6. Emphasis on content over format

7. Works on all platforms and browsers, requires no special proprietary software and is accessible anywhere

Wiki and Sharepoint can be used as complimentary solutions, Sharepoint as a document repository and Wiki as a front page/interactive collaboration system. The wiki can of course link to documents in Sharepoint, although simply putting a big list of Sharepoint docs in the wiki greatly reduces the benefits gained by the wiki paradigm.

Labels: TECHNICAL MISCELLANEOUS

Windows Timers

For creating timers you can use the api - SetTimer(). In SetTimer() you’ve to specify the time interval in milliseconds, a timer id as UINT, then TimerProc. For each tick of specified timer, windows will call the TimerProc. If you didn’t specify any TimerProc, then a WM_TIMER message will be posted to your window.

You can utilize the Timer ID to set multiple timers using the same TimeProc. You can use KillTimer() to remove the timer. Have a look at the code snippet. In the given code snippet, timer is handled by WM_TIMER message.

// Message Map
BEGIN_MESSAGE_MAP(CDlgDlg, CDialog)
...

ON_WM_TIMER()

END_MESSAGE_MAP()

...

// Timer ID constants.
const UINT ID_TIMER_SECONDS = 0x1009;

// Start the timers.
void CDlgDlg::StartTimer()
{
// Set timer for Seconds ; 500 milli seconds
SetTimer( ID_TIMER_SECONDS, 500, 0 );
}

// Stop the timers.
void CDlgDlg::StopTimer()
{
// Stop both timers.
KillTimer( ID_TIMER_SECONDS );
}

// Timer Handler.
void CDlgDlg::OnTimer( UINT nIDEvent )
{
// Per minute timer ticked.
if( nIDEvent == ID_TIMER_SECONDS )
{
// Do your seconds based tasks here.
}
}

References:
http://www.codeproject.com/KB/shell/systemtray.aspx

Labels: VC++ PROGRAMMING

Windows Hooks

In the Microsoft® Windows operating system, a hook is a mechanism by which a function can intercept events (messages, mouse actions, keystrokes) before they reach an application. The function can act on events and, in some cases, modify or discard them. Functions that receive events are called filter functions and are classified according to the type of event they intercept.

For example, a filter function might want to receive all keyboard or mouse events. For Windows to call a filter function, the filter function must be installed, that is attached to a Windows hook (for example, to a keyboard hook). Attaching one or more filter functions to a hook is known as setting a hook. If a hook has more than one filter function attached, Windows maintains a chain of filter functions. The most recently installed function is at the beginning of the chain, and the least recently installed function is at the end.

To install a hook, we need to call SetWindowsHookEx.
To uninstall a hook, we need to call UnhookWindowsHookEx

References:
Windows Hooks -
http://www.macadamian.com/index.php?option=com_techarticle&task=view&id=10

Windows Hooks - http://www.macadamian.com/index.php?option=com_techarticle&task=view&id=10

Labels: VC++ PROGRAMMING

C++ Unit Testing Tools

C++ Unit Testing Tools

CPPUnit => Old & proved
UnitTest++ => New & simple
NUnit => Used for .Net but can be used for C++

Labels: C++ PROGRAMMING

Change the Text color of a Control

ON_WM_CTLCOLOR =>
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);

Example Code :
HBRUSH CResolutionCenterClientUIDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// assume white brush
hbr = (HBRUSH)::GetStockObject(WHITE_BRUSH);
int nCtrlID = pWnd->GetDlgCtrlID() ;
switch(nCtrlID)
{
case IDC_ST_START_LOGGING:

case IDC_ST_GEN_REPORT:
pDC->SetBkMode(TRANSPARENT);
hbr = (HBRUSH)::GetStockObject(HOLLOW_BRUSH);
break ;

case IDC_START_LOGGING:
case IDC_GEN_REPORT:
pDC->SetBkMode(TRANSPARENT);
hbr = (HBRUSH)::GetStockObject(HOLLOW_BRUSH);
break ;

case IDC_ST_STATUS:
pDC->SetTextColor(TEXT_DARK_BLUE_COLOR);
pDC->SetBkColor(TEXT_WHITE_BGND_COLOR);
break ;

case IDC_ST_LOG_DESC:

case IDC_ST_GEN_RPT:
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(TEXT_WHITE_BGND_COLOR) ;
hbr = (HBRUSH)::GetStockObject(HOLLOW_BRUSH);
break ;
}
return hbr;
}

Labels: VC++ PROGRAMMING

Multithreading Problems

Reference :
http://www.ddj.com/184404032;jsessionid=1BXKTQUOD2BDGQSNDLOSKHSCJUNN2JVN?_requestid=468053

Multithreading Problems
The most obvious problem with multithreaded applications is an access violation. An access violation occurs when two or more threads attempt to access the same memory at the same time or when shared memory has been released or resized by one thread without informing the other thread.

Another access violation is caused when the MasterThread tries to access a variable in InputThread that no longer exists , which causes a GPF. This problem is common in C++ programs, where complex structures may be destructed automatically when the thread exits.

A second common problem is deadlock. One way a deadlock can occur is when Thread1 locks ResourceA while Thread2 locks ResourceB. Then, Thread1 attempts to lock ResourceB and waits patiently (keeps trying) until ResourceB is available. Meanwhile, Thread2 attempts to lock ResourceA and waits patiently for ResourceA to be made available. If both threads typically lock one, then the other in quick succession, the bug may rarely show up, and the problem may be blamed on something else, such as hardware or the operating system. You can imagine how this problem becomes complicated with a simulation program where, say, 50 threads are running in parallel.

A second source of deadlock occurs when one thread is waiting for a flag to be set using a blocking call from the Win32 API, such as WaitForSingleObject, but the thread that was supposed to set the flag no longer exists. The thread using the WaitForSingleObject call will wait forever.

A third source of deadlock is when multiple threads simply attempt to lock the same resource at the same time. Nowadays, the operating system or the DBMS are designed to handle this situation. However, we remember some fun times back in DOS days when two threads or two processes both tried printing to the printer at the same time.

Labels: C++ PROGRAMMING

Tracepoints

Trace Points in VS2008
There's a really useful feature in VS2008 that allows you to insert a Tracepoint on a line of code. It's rather like a breakpoint, but instead of halting the execution it simply outputs the Tracepoint expression to the output window.

Trace Points in VS2005
"Trace Points" is just more accessible in VS2008 than it was in VS2005. In VS2005, simply drop a breakpoint (F9) and then right click on the breakpoint icon in the margin or on the line where the breakpoint itself resides. From the breakpoint popup select "When Hit" and check "Print Message". If "Continue Execution" is checked (which it is by default as soon as you select "Print Message"), you have a Tracepoint.

The default text for a new tracepoint ($THREAD: $FUNCTION or something) can be changed via the registry.

Links:
http://srstrong.blogspot.com/2008/06/tracepoints-in-vs2008.html
http://blogs.msdn.com/saraford/archive/2008/06/13/did-you-know-you-can-use-tracepoints-to-log-printf-or-console-writeline-info-without-editing-your-code-237.aspx

Labels: C++ PROGRAMMING

The Fundamentals of Accessibility

References:

Accessibility Blog - The Fundamentals of Accessibility -http://blogs.msdn.com/saraford/articles/223650.aspx

http://blogs.msdn.com/saraford/archive/tags/Accessibility/default.aspx

In order for Assistive Technologies (AT) to convey meaningful information to users about an application's user interface, the AT first must be able to access that information from the application. Microsoft's solution to this problem is Microsoft® Active Accessibility® (MSAA), which has been available as an add-on since Windows® 95 and built into subsequent Windows® releases.

MSAA is a technology that provides a standard, consistent mechanism for exchanging information between applications and assistive technologies. For example, MSAA allows applications to expose screen readers to the type, name, location, and current state of all objects and notifies screen readers of any Windows event that leads to a user interface change.
Although it is not the only way for an application to communicate with assistive technology, MSAA allows AT developers to support a broader variety of applications without custom programming for each one. The number of applications that support MSAA is growing, although there still are many popular applications that do not support it.

Microsoft Active Accessibility: Architecture presents the basic Active Accessibility architecture and spells out Active Accessibility Server Requirements.

Microsoft has developed a suite of tools that allows users to see the information that MSAA is exposing. Although these tools are intended for developers, they may be of interest to technical users as well. The suite, called Microsoft Active Accessibility 2.0 Software Development Kit Tools, includes the following three programs: Accessible Event Watcher, Accessible Explorer, and Inspect Objects.

With the release of Windows Vista, Microsoft unveiled a new accessibility model called UI Automation, which offers improvements over MSAA. The MSDN article UI Automation and Microsoft Active Accessibility provides information about the differences between the two.

Labels: TECHNICAL MISCELLANEOUS
Newer Posts Older Posts Home
Subscribe to: Posts (Atom)

The Verge - YOUTUBE

Loading...

Google - YOUTUBE

Loading...

Microsoft - YOUTUBE

Loading...

MIT OpenCourseWare - YOUTUBE

Loading...

FREE CODE CAMP - YOUTUBE

Loading...

NEET CODE - YOUTUBE

Loading...

GAURAV SEN INTERVIEWS - YOUTUBE

Loading...

Y Combinator Discussions

Loading...

SUCCESS IN TECH INTERVIEWS - YOUTUBE

Loading...

IGotAnOffer: Engineering YOUTUBE

Loading...

Tanay Pratap YOUTUBE

Loading...

Ashish Pratap Singh YOUTUBE

Loading...

Questpond YOUTUBE

Loading...

Kantan Coding YOUTUBE

Loading...

CYBER SECURITY - YOUTUBE

Loading...

CYBER SECURITY FUNDAMENTALS PROF MESSER - YOUTUBE

Loading...

DEEPLEARNING AI - YOUTUBE

Loading...

STANFORD UNIVERSITY - YOUTUBE

Loading...

NPTEL IISC BANGALORE - YOUTUBE

Loading...

NPTEL IIT MADRAS - YOUTUBE

Loading...

NPTEL HYDERABAD - YOUTUBE

Loading...

MIT News

Loading...

MIT News - Artificial intelligence

Loading...

The Berkeley Artificial Intelligence Research Blog

Loading...

Microsoft Research

Loading...

MachineLearningMastery.com

Loading...

Harward Business Review(HBR)

Loading...

Wharton Magazine

Loading...
My photo
Krishna Kishore Koney
View my complete profile
" It is not the strongest of the species that survives nor the most intelligent that survives, It is the one that is the most adaptable to change "

View krishna kishore koney's profile on LinkedIn

Monthly Blog Archives

  • ►  2025 (2)
    • ►  May (1)
    • ►  April (1)
  • ►  2024 (18)
    • ►  December (1)
    • ►  October (2)
    • ►  September (5)
    • ►  August (10)
  • ►  2022 (2)
    • ►  December (2)
  • ►  2021 (2)
    • ►  April (2)
  • ►  2020 (17)
    • ►  November (1)
    • ►  September (7)
    • ►  August (1)
    • ►  June (8)
  • ►  2019 (18)
    • ►  December (1)
    • ►  November (2)
    • ►  September (3)
    • ►  May (8)
    • ►  February (1)
    • ►  January (3)
  • ►  2018 (3)
    • ►  November (1)
    • ►  October (1)
    • ►  January (1)
  • ►  2017 (2)
    • ►  November (1)
    • ►  March (1)
  • ►  2016 (5)
    • ►  December (1)
    • ►  April (3)
    • ►  February (1)
  • ►  2015 (15)
    • ►  December (1)
    • ►  October (1)
    • ►  August (2)
    • ►  July (4)
    • ►  June (2)
    • ►  May (3)
    • ►  January (2)
  • ►  2014 (13)
    • ►  December (1)
    • ►  November (2)
    • ►  October (4)
    • ►  August (5)
    • ►  January (1)
  • ►  2013 (5)
    • ►  September (2)
    • ►  May (1)
    • ►  February (1)
    • ►  January (1)
  • ►  2012 (19)
    • ►  November (1)
    • ►  October (2)
    • ►  September (1)
    • ►  July (1)
    • ►  June (6)
    • ►  May (1)
    • ►  April (2)
    • ►  February (3)
    • ►  January (2)
  • ►  2011 (20)
    • ►  December (5)
    • ►  August (2)
    • ►  June (6)
    • ►  May (4)
    • ►  April (2)
    • ►  January (1)
  • ►  2010 (41)
    • ►  December (2)
    • ►  November (1)
    • ►  September (5)
    • ►  August (2)
    • ►  July (1)
    • ►  June (1)
    • ►  May (8)
    • ►  April (2)
    • ►  March (3)
    • ►  February (5)
    • ►  January (11)
  • ▼  2009 (113)
    • ►  December (2)
    • ►  November (5)
    • ►  October (11)
    • ►  September (1)
    • ►  August (14)
    • ►  July (5)
    • ►  June (10)
    • ►  May (4)
    • ►  April (7)
    • ►  March (11)
    • ►  February (15)
    • ▼  January (28)
      • Database vs Data Warehouse
      • How to know if oracle is installed on Unix/Windows
      • 64-bit data models
      • Python Integration with C++/Java
      • Java Open-Source Tools
      • GUI MockUp Tools
      • libb64 : base64 encoding & decoding format
      • Mobile Wireless Development
      • BPEL(Business Process Execution Language)
      • Windows Run Commands to access the control panel
      • Web Test Automation Tools
      • MS Gina and Vista Credential Provider
      • Source Static Analysis Tools
      • WMI - IWbemServices Interface
      • Wiki vs Sharepoint
      • Windows Timers
      • Windows Hooks
      • C++ Unit Testing Tools
      • Change the Text color of a Control
      • Multithreading Problems
      • Tracepoints
      • The Fundamentals of Accessibility
      • Unix - Windows Porting
      • MSI Editor - ORCA
      • C#
      • Speical Characters in XML
      • C++ Image Processing Library - CxImage
      • Windows Services
  • ►  2008 (61)
    • ►  December (7)
    • ►  September (6)
    • ►  August (1)
    • ►  July (17)
    • ►  June (6)
    • ►  May (24)
  • ►  2006 (7)
    • ►  October (7)

Blog Archives Categories

  • .NET DEVELOPMENT (38)
  • 5G (5)
  • AI (Artificial Intelligence) (9)
  • AI/ML (4)
  • ANDROID DEVELOPMENT (7)
  • BIG DATA ANALYTICS (6)
  • C PROGRAMMING (7)
  • C++ PROGRAMMING (24)
  • CAREER MANAGEMENT (6)
  • CHROME DEVELOPMENT (2)
  • CLOUD COMPUTING (45)
  • CODE REVIEWS (3)
  • CYBERSECURITY (12)
  • DATA SCIENCE (4)
  • DATABASE (14)
  • DESIGN PATTERNS (9)
  • DEVICE DRIVERS (5)
  • DOMAIN KNOWLEDGE (14)
  • EDGE COMPUTING (4)
  • EMBEDDED SYSTEMS (9)
  • ENTERPRISE ARCHITECTURE (10)
  • IMAGE PROCESSING (3)
  • INTERNET OF THINGS (2)
  • J2EE PROGRAMMING (10)
  • KERNEL DEVELOPMENT (6)
  • KUBERNETES (19)
  • LATEST TECHNOLOGY (18)
  • LINUX (9)
  • MAC OPERATING SYSTEM (2)
  • MOBILE APPLICATION DEVELOPMENT (14)
  • PORTING (4)
  • PYTHON PROGRAMMING (6)
  • RESEARCH AND DEVELOPMENT (1)
  • SCRIPTING LANGUAGES (8)
  • SERVICE ORIENTED ARCHITECTURE (SOA) (10)
  • SOFTWARE DESIGN (13)
  • SOFTWARE QUALITY (5)
  • SOFTWARE SECURITY (23)
  • SYSTEM and NETWORK ADMINISTRATION (3)
  • SYSTEM PROGRAMMING (4)
  • TECHNICAL MISCELLANEOUS (31)
  • TECHNOLOGY INTEGRATION (5)
  • TEST AUTOMATION (5)
  • UNIX OPERATING SYSTEM (4)
  • VC++ PROGRAMMING (44)
  • VIRTUALIZATION (8)
  • WEB PROGRAMMING (8)
  • WINDOWS OPERATING SYSTEM (13)
  • WIRELESS DEVELOPMENT (5)
  • XML (3)

Popular Posts

  • Observer Pattern - Push vs Pull Model
  • AI Agent vs AI Workflow
  • Microservices Architecture ..
  • SSCLI(Shared Source Common Language Infrastructure)

My Other Blogs

  • Career Management: Invest in Yourself
  • Color your Career
  • Attitude is everything(in Telugu language)
WINNING vs LOSING

Hanging on, persevering, WINNING
Letting go, giving up easily, LOSING

Accepting responsibility for your actions, WINNING
Always having an excuse for your actions, LOSING

Taking the initiative, WINNING
Waiting to be told what to do, LOSING

Knowing what you want and setting goals to achieve it, WINNING
Wishing for things, but taking no action, LOSING

Seeing the big picture, and setting your goals accordingly, WINNING
Seeing only where you are today, LOSING

Being determined, unwilling to give up WINNING
Gives up easily, LOSING

Having focus, staying on track, WINNING
Allowing minor distractions to side track them, LOSING

Having a positive attitude, WINNING
having a "poor me" attitude, LOSING

Adopt a WINNING attitude!

Total Pageviews

who am i

My photo
Krishna Kishore Koney

Blogging is about ideas, self-discovery, and growth. This is a small effort to grow outside my comfort zone.

Most important , A Special Thanks to my parents(Sri Ramachandra Rao & Srimathi Nagamani), my wife(Roja), my lovely daughter (Hansini) and son (Harshil) for their inspiration and continuous support in developing this Blog.

... "Things will never be the same again. An old dream is dead and a new one is being born, as a flower that pushes through the solid earth. A new vision is coming into being and a greater consciousness is being unfolded" ... from Jiddu Krishnamurti's Teachings.

Now on disclaimer :
1. Please note that my blog posts reflect my perception of the subject matter and do not reflect the perception of my Employer.

2. Most of the times the content of the blog post is aggregated from Internet articles and other blogs which inspired me. Due respect is given by mentioning the referenced URLs below each post.

Have a great time

My LinkedIn Profile
View my complete profile

Failure is not falling down, it is not getting up again. Success is the ability to go from failure to failure without losing your enthusiasm.

Where there's a Will, there's a Way. Keep on doing what fear you, that is the quickest and surest way to to conquer it.

Vision is the art of seeing what is invisible to others. For success, attitude is equally as important as ability.

Favourite RSS Syndications ...

Google Developers Blog

Loading...

Blogs@Google

Loading...

Berklee Blogs » Technology

Loading...

Martin Fowler's Bliki

Loading...

TED Blog

Loading...

TEDTalks (video)

Loading...

Psychology Today Blogs

Loading...

Aryaka Insights

Loading...

The Pragmatic Engineer

Loading...

Stanford Online

Loading...

MIT Corporate Relations

Loading...

AI at Wharton

Loading...

OpenAI

Loading...

AI Workshop

Loading...

Hugging Face - Blog

Loading...

BYTE BYTE GO - YOUTBUE

Loading...

Google Cloud Tech

Loading...

3Blue1Brown

Loading...

Bloomberg Originals

Loading...

Dwarkesh Patel Youtube Channel

Loading...

Reid Hoffman

Loading...

Aswath Damodaran

Loading...