- Hyper-Threading Arrives: This was first introduced four years ago in the Intel Pentium 4s for desktops, but never made it in as a mobile part. This latest batch of Core i7s has four physical cores, with two threads per core. The operating system recognizes it as 8 cores.
- L3 Cache: A huge L3 Cache is a first for mobile processors, and it'll play a significant role in communicating with the built-in memory controller, as well as speed up processes. The new Core i7s will have a shared L3 cache that range between 6MB to 8MB
- Goodbye NorthBridge: Getting rid of a physical chip that housed the memory and graphics controllers means a speedier system, smaller motherboard form factors, and sleeker designs in the future.
- DDR3 Memory Only: The mobile Core i7s mark the end of DDR2 memory for Intel mobile chips. Their dual-channel memory controller can support DDR3 memory speeds of up to 1333MHz.
- 16GB of Memory: PC makers can add up to 4 memory slots on the latest Core i7 motherboards, which mean the latter can support up to 16GB of DDR3 memory.
- Turbo Boost: It's like an energy drink for lightly-threaded processes. Inactive cores lend their power to active ones and require no customization from the user.
- High Performance First: This batch of Core i7s does not target commuters and long battery life seekers. They target gamers and high-end users instead, and could have decent battery life provided they come with a huge battery. Later on, the mainstream Core i7s and Core i5s (codenamed Arrandale) will focus on battery efficiency and thinner form factors.
- SouthBridge Gets A Makeover: The Intel PM55 Express chipset holds the key to future motherboard designs. It will support more internal and external peripherals than the previous Intel G45 chipset, and will be the platform for the mainstream Core i7s and Core i5s.
- Frugal Gamers, Rejoice: These systems are not only fast, but they're inexpensive, too. Upcoming laptops with Core i7 will easily come in under $2,000.
- SLI and CrossFire Support: For those seeking the ultimate gaming experience, Core i7 laptops can support dual graphics chipsets using Nvidia's SLI or ATI's CrossFire technology at the processor die, something the previous generation of Intel mobile CPUs couldn't do.
Tuesday, October 6, 2009
Intel's Mobile Core i7s: 10 Things You Should Know
Wednesday, September 23, 2009
Regular Expression Engines
A regular expression is a string containing a combination of normal characters and special metacharacters or metasequences. The normal characters match themselves. Metacharacters and metasequences are characters or sequences of characters that represent ideas such as quantity, locations, or types of characters.
Pattern matching consists of finding asection of text that is described (matched) by a regular expression. The underlying code that searches the text is the regular expression engine. You can predict the results of most matches by keeping two rules in mind:
1. The earliest (leftmost) match wins
Regular expressions are applied to the input starting at the first character and proceeding toward the last. As soon as the regular expression engine finds a match, it returns.
2. Standard quantifiers are greedy
Quantifiers specify how many times something can be repeated. The standard quantifiers attempt to match as many times as possible. They settle for less than the maximum only if this is necessary for the success of the match. The process of giving up characters and trying less-greedy matches is called backtracking.
Regular expression engines have differences based on their type. There are two classes of engines: Deterministic Finite Automaton (DFA) and Nondeterministic Finite Automaton (NFA). DFAs are faster, but lack many of the features of an NFA, such as capturing, lookaround, and nongreedy quantifiers. In the NFA world, there are two types: traditional and POSIX.
DFA engines
DFAs compare each character of the input string to the regular expression, keeping track of all matches in progress. Since each character is examined at most once, the DFA engine is the fastest. One additional rule to remember with DFAs is that the alternation metasequence is greedy. When more than one option in an
alternation (foo|foobar) matches, the longest one is selected. So, rule No. 1 can be amended to read "the longest leftmost match wins".
Traditional NFA engines
Traditional NFA engines compare each element of the regex to the input string, keeping track of positions where it chose between two options in the regex. If an
option fails, the engine backtracks to the most recently saved position. For standard quantifiers, the engine chooses the greedy option of matching more text; however, if that option leads to the failure of the match, the engine returns to a saved position and tries a less greedy path. The traditional NFA engine uses ordered alternation, where each option in the alternation is tried sequentially. A longer match may be ignored if an earlier option leads to a successful match. So, here rule #1 can be amended to read "the first leftmost match after greedy quantifiers have had their fill wins".
POSIX NFA engines
POSIX NFA Engines work similarly to Traditional NFAs with one exception: a POSIX engine always picks the longest of the leftmost matches. For example, the alternation cat|category would match the full word "category" whenever possible, even if the first alternative ("cat") matched and appeared earlier in the alternation.
Pattern matching consists of finding asection of text that is described (matched) by a regular expression. The underlying code that searches the text is the regular expression engine. You can predict the results of most matches by keeping two rules in mind:
1. The earliest (leftmost) match wins
Regular expressions are applied to the input starting at the first character and proceeding toward the last. As soon as the regular expression engine finds a match, it returns.
2. Standard quantifiers are greedy
Quantifiers specify how many times something can be repeated. The standard quantifiers attempt to match as many times as possible. They settle for less than the maximum only if this is necessary for the success of the match. The process of giving up characters and trying less-greedy matches is called backtracking.
Regular expression engines have differences based on their type. There are two classes of engines: Deterministic Finite Automaton (DFA) and Nondeterministic Finite Automaton (NFA). DFAs are faster, but lack many of the features of an NFA, such as capturing, lookaround, and nongreedy quantifiers. In the NFA world, there are two types: traditional and POSIX.
DFA engines
DFAs compare each character of the input string to the regular expression, keeping track of all matches in progress. Since each character is examined at most once, the DFA engine is the fastest. One additional rule to remember with DFAs is that the alternation metasequence is greedy. When more than one option in an
alternation (foo|foobar) matches, the longest one is selected. So, rule No. 1 can be amended to read "the longest leftmost match wins".
Traditional NFA engines
Traditional NFA engines compare each element of the regex to the input string, keeping track of positions where it chose between two options in the regex. If an
option fails, the engine backtracks to the most recently saved position. For standard quantifiers, the engine chooses the greedy option of matching more text; however, if that option leads to the failure of the match, the engine returns to a saved position and tries a less greedy path. The traditional NFA engine uses ordered alternation, where each option in the alternation is tried sequentially. A longer match may be ignored if an earlier option leads to a successful match. So, here rule #1 can be amended to read "the first leftmost match after greedy quantifiers have had their fill wins".
POSIX NFA engines
POSIX NFA Engines work similarly to Traditional NFAs with one exception: a POSIX engine always picks the longest of the leftmost matches. For example, the alternation cat|category would match the full word "category" whenever possible, even if the first alternative ("cat") matched and appeared earlier in the alternation.
Friday, August 28, 2009
Am I a hacker? - A Nice One
I used to call myself a hacker all the time. That was before the term was usurped by a different breed of people. Maybe I should back up and explain.
If you read Steven Levy's book, Hackers, it paints a picture of people who love and understand the technology they use. These are people who can "hack" together a solution to a problem with a soldering iron and a few paper clips. People who modify operating systems because they don't like the way they work. People who follow the "hacker ethic" that information should be free.
If that's a hacker, that's me.
Thursday, August 13, 2009
A Good Programmer’s key indicators
A Good Programmer’s key indicators:
#1 : Passion
#2 : Self-teaching and love of learning
#3 : Intelligence
#4 : Hidden experience
#5 : Variety of technologies
#6 : Formal qualifications
Positive indicators:
• Passionate about technology
• Programs as a hobby
• Will talk your ear off on a technical subject if encouraged
• Significant (and often numerous) personal side-projects over the years
• Learns new technologies on his/her own
• Opinionated about which technologies are better for various usages
• Very uncomfortable about the idea of working with a technology he doesn’t believe to be “right”
• Clearly smart, can have great conversations on a variety of topics
• Started programming long before university/work
• Has some hidden “icebergs”, large personal projects under the CV radar
• Knowledge of a large variety of unrelated technologies (may not be on CV)
#1 : Passion
#2 : Self-teaching and love of learning
#3 : Intelligence
#4 : Hidden experience
#5 : Variety of technologies
#6 : Formal qualifications
Positive indicators:
• Passionate about technology
• Programs as a hobby
• Will talk your ear off on a technical subject if encouraged
• Significant (and often numerous) personal side-projects over the years
• Learns new technologies on his/her own
• Opinionated about which technologies are better for various usages
• Very uncomfortable about the idea of working with a technology he doesn’t believe to be “right”
• Clearly smart, can have great conversations on a variety of topics
• Started programming long before university/work
• Has some hidden “icebergs”, large personal projects under the CV radar
• Knowledge of a large variety of unrelated technologies (may not be on CV)
Thursday, July 16, 2009
Regular Expressions
Regular expressions are the key to powerful, flexible, and efficient text processing. Regular expressions themselves, with a general pattern notation almost like a mini programming language, allow you to describe and parse text. With additional support provided by the particular tool being used, regular expressions can add, remove, isolate, and generally fold, spindle, and mutilate all kinds of text and data. It might be as simple as a text editor's search command or as powerful as a full text processing language.
The Filename Analogy
You know that report.txt is a specific filename, and the pattern "*.txt" can be used to select multiple files. With such filename patterns like this (called file globs), there are a few characters "*" that have special meanings. The star means "match anything", and a question mark "?" means "match any one character". With "*.txt", we start with a match-anything "*" and end with the literal ".txt" , so we end up with a pattern that means "select the files whose names start with anything and end with .txt".
The Language Analogy
Full regular expressions are composed of two types of characters. The special characters (like the * from the filename analogy) are called metacharacters, while everything else are called literal, or normal text characters. What sets regular expressions apart from filename patterns is the scope of power their metacharacters provide. Filename patterns provide limited metacharacters for limited needs, but a regular expression "language" provides rich and expressive metacharacters for advanced uses. It might help to consider regular expressions as their own language, with literal text acting as the words and metacharacters as the grammar. The words are combined with grammar according to a set of rules to create an expression which communicates an idea. For example, the expression used to find lines beginning with "From:" or "Subject:" is written as ^(From|Subject):.
The Filename Analogy
You know that report.txt is a specific filename, and the pattern "*.txt" can be used to select multiple files. With such filename patterns like this (called file globs), there are a few characters "*" that have special meanings. The star means "match anything", and a question mark "?" means "match any one character". With "*.txt", we start with a match-anything "*" and end with the literal ".txt" , so we end up with a pattern that means "select the files whose names start with anything and end with .txt".
The Language Analogy
Full regular expressions are composed of two types of characters. The special characters (like the * from the filename analogy) are called metacharacters, while everything else are called literal, or normal text characters. What sets regular expressions apart from filename patterns is the scope of power their metacharacters provide. Filename patterns provide limited metacharacters for limited needs, but a regular expression "language" provides rich and expressive metacharacters for advanced uses. It might help to consider regular expressions as their own language, with literal text acting as the words and metacharacters as the grammar. The words are combined with grammar according to a set of rules to create an expression which communicates an idea. For example, the expression used to find lines beginning with "From:" or "Subject:" is written as ^(From|Subject):.
A very simple case of a regular expression in this syntax would be to locate the same word spelled two different ways in a text editor, the regular expression seriali[sz]e matches both "serialise" and "serialize". Wildcards could also achieve this, but are more limited in what they can pattern (having fewer metacharacters and a simple language-base).
The usual context of wildcard characters is in globbing similar names in a list of files, whereas regexps are usually employed in applications that pattern-match text strings in general. For example, the regexp ^[ \t]+|[ \t]+$ matches excess whitespace at the beginning or end of a line. An advanced regexp used to match any numeral is ^[+-]?(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?$.
The usual context of wildcard characters is in globbing similar names in a list of files, whereas regexps are usually employed in applications that pattern-match text strings in general. For example, the regexp ^[ \t]+|[ \t]+$ matches excess whitespace at the beginning or end of a line. An advanced regexp used to match any numeral is ^[+-]?(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?$.
Tuesday, June 9, 2009
Structuring Projects and Solutions in Team Foundation Source Control
Many of the default folder conventions used by Visual Studio when creating new solutions and projects are not optimized for team development and for use with TFS source control. Rather than accepting the defaults when you create new Visual Studio projects and solutions, you should give careful consideration to your local and server-based folder structure.
Objectives
The three most common strategies used to structure solution and project files are:
Objectives
- Structure projects for effective team development in Microsoft Visual Studio Team Foundation Server (TFS) source control.
- Know when to use multiple solutions and when to use a single solution.
- Identify appropriate structures for small, medium-size and very large teams.
- Keep server-side and client-side folder structures synchronized.
- Choose a strategy for unit test structure.
- Create a folder structure that supports various branching scenarios.
- Identify files are added to source control and maps local files to source control.
The three most common strategies used to structure solution and project files are:
- Single solution. If you work on a small system, create a single solution and place all of your projects within it.
- Partitioned solution. If you work on a large system, use multiple solutions to group related projects together. Create solutions to logically group subsets of projects that a developer would be most likely to modify as a set, and then create one master solution to contain all of your projects. This approach reduces the amount of data that needs to be pulled from source control when you only need to work on specific projects.
- Multiple solutions. If you are working on a very large system that requires dozens of projects or more, use multiple solutions to work on sub-systems but for dependency mapping and performance reasons do not create a master solution that contains all projects.
- Each project generates an assembly at build time. Start by determining what assemblies you want to create and then use this to decide what projects you need. Use this to determine how to factor your codebase into projects.
- Start with the simplest single solution structure. Only add complexity to your structure when it is really necessary.
- When designing a multi-solution structure:
- Consider project dependencies. Try to group those projects that have dependencies on one another as part of the same solution. This enables you to use project references within your solution. By using project references instead of file references, you enable Visual Studio to keep build
- configurations (debug/release) synchronized, and to track versioning to determine when projects need to be rebuilt. Try to minimize the number of cross-solution project references.
- Consider source sharing. Place projects that share the same source in the same solution.
- Consider team structure. Structure your solutions to make it easy for teams to work on a set of related projects together.
- Keep a flat project structure so that it is easy for you to group projects into solutions without needing to make file system or source control folder structure changes.
Wednesday, May 6, 2009
Microsoft Office PerformancePoint Server
Microsoft Office PerformancePoint Server is a business intelligence software product released in 2007 by Microsoft. Enterprises gather data related to line-of-business (LOB) operations. Data as-is is not useful. You need to transform it into information so you can understand your business and make decisions. PerformancePoint Server 2007 is a product that can help you to build a performance management application.
Designing a Microsoft Office PerformancePoint Server 2007 topology should begin at the back end and move towards the front end. Define the number of users. Define the number of PerformancePoint Planning applications. Then determine the number of databases and cubes needed. Then build the topology plan from back end to front end.
Designing a Microsoft Office PerformancePoint Server 2007 topology should begin at the back end and move towards the front end. Define the number of users. Define the number of PerformancePoint Planning applications. Then determine the number of databases and cubes needed. Then build the topology plan from back end to front end.
To setup PerformancePoint server for an enterprise includes,
Planning Server
When determining your Planning Server deployment, research and install additional application dependencies. Any applications that Planning Server depends on should be installed first. For example, if you are using Microsoft Office SharePoint Server 2007 for the templates and reports repository, then Office SharePoint Server 2007 should be installed before you install PerformancePoint Server. The same is true for Microsoft SQL Server 2005 and SQL Server 2005 Analysis Services.
SQL Server
Installing and configuring Planning Server creates two system databases. Creating a Planning application creates another database (an application database) and an Analysis Services cube. If you create a staging database for the application, that is one more database. Therefore, consider deploying the system databases on one computer running SQL Server and the application databases on another. Also, when you are building multiple model sites, multiple Analysis Services computers should be used.
Monitoring Server
Before you install Monitoring Server and build a dashboard, you should first plan your development process. Begin by defining performance management goals. Decide if you want to build one dashboard or a set of dashboards. Define the scorecard and any related key performance indicators (KPIs) that you require to build those scorecards, and determine whether those scorecards will share a set of common KPIs. Design any reports that contribute to the information provided in the scorecard or that might help in understanding the KPIs.
Next steps include:
• Identify contributors and users In particular, identify the contributors who will participate in dashboard development.
• Identify information technology resources Locate existing databases and documents that can provide business data for KPIs, and determine whether existing SQL Server or Microsoft SharePoint Products and Technologies installations can be used. Determine if you require new databases in order to develop and deploy dashboards.
Planning Server
When determining your Planning Server deployment, research and install additional application dependencies. Any applications that Planning Server depends on should be installed first. For example, if you are using Microsoft Office SharePoint Server 2007 for the templates and reports repository, then Office SharePoint Server 2007 should be installed before you install PerformancePoint Server. The same is true for Microsoft SQL Server 2005 and SQL Server 2005 Analysis Services.
SQL Server
Installing and configuring Planning Server creates two system databases. Creating a Planning application creates another database (an application database) and an Analysis Services cube. If you create a staging database for the application, that is one more database. Therefore, consider deploying the system databases on one computer running SQL Server and the application databases on another. Also, when you are building multiple model sites, multiple Analysis Services computers should be used.
Monitoring Server
Before you install Monitoring Server and build a dashboard, you should first plan your development process. Begin by defining performance management goals. Decide if you want to build one dashboard or a set of dashboards. Define the scorecard and any related key performance indicators (KPIs) that you require to build those scorecards, and determine whether those scorecards will share a set of common KPIs. Design any reports that contribute to the information provided in the scorecard or that might help in understanding the KPIs.
Next steps include:
• Identify contributors and users In particular, identify the contributors who will participate in dashboard development.
• Identify information technology resources Locate existing databases and documents that can provide business data for KPIs, and determine whether existing SQL Server or Microsoft SharePoint Products and Technologies installations can be used. Determine if you require new databases in order to develop and deploy dashboards.
Subscribe to:
Posts (Atom)