<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6122342914201524490</id><updated>2012-02-17T12:55:01.908+08:00</updated><title type='text'>HaruTech</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://haru-tech.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6122342914201524490/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://haru-tech.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Haru</name><uri>http://www.blogger.com/profile/07136062176311341430</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6122342914201524490.post-3893309862366458623</id><published>2010-12-23T00:15:00.002+08:00</published><updated>2010-12-23T00:32:57.033+08:00</updated><title type='text'>11 tips for better code</title><content type='html'>There are several reasons why you should write clean and readable code. Most importantly, every code is written once, but read many times over and over. When you come back to your code next day, you have to read it. When you show your code to someone else, he has to read it. Thus by spending little more time with writing, you save A LOT of time when reading it again.&lt;br /&gt;&lt;br /&gt;Lets see some of the basic rules&lt;br /&gt;&lt;br /&gt;1.keep methods short&lt;br /&gt;2.never ever ever reuse a variable for different purpose&lt;br /&gt;3.use self-descriptive variable and method names&lt;br /&gt;4.define variables as close as possible to the place of their usage&lt;br /&gt;5.no magic numbers&lt;br /&gt;6.be friend with your language&lt;br /&gt;7.don’t fight the convention&lt;br /&gt;8.watch out for premature optimization&lt;br /&gt;9.always refactor the code after you test it&lt;br /&gt;10.don’t get sucked into overengineering&lt;br /&gt;11.learn new things by prototyping&lt;br /&gt;&lt;br /&gt;Now, let’s look up at each point in more detail&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Keep methods short&lt;/strong&gt;&lt;br /&gt;Even though many people obey this rule, it is still very important. Method should always fit on the screen. When you have to scroll, it takes away your concentration and you can’t see whole context. Optimal length is 5-20 lines, depending on the situation. Of course getters/setters are usually one-line methods, but they’re more like accessors than actual methods.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. Never ever ever reuse a variable for different purpose&lt;/strong&gt;&lt;br /&gt;One variable should be used only for one purpose.  By making variable constant (const in C++, final in Java), you also help the compiler with optimization and make your code scream This variable is not going to change, which makes the code a lot more readable.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. Use self-descriptive variable and method names&lt;/strong&gt;&lt;br /&gt;Anyone should be able to understand your code by just looking at it. You should almost never use abbreviations, except for the most idiomatic ones like&lt;br /&gt;&lt;br /&gt;src - source&lt;br /&gt;pos - position&lt;br /&gt;prev - previousIf you think writing descriptive names is not worth the time, just compare&lt;br /&gt;n, ns, nsisd&lt;br /&gt;with&lt;br /&gt;numTeamMembers, seatCount, numSeatsInStadium&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. Define variables as close as possible to the place of their first usage&lt;/strong&gt;&lt;br /&gt;While building a house, you don’t want your hammer to be on the other side of the yard. Instead, you keep your tools as close as possible. The same applies to variables.&lt;br /&gt;&lt;br /&gt;int foo = 3;&lt;br /&gt;int bar = 5;&lt;br /&gt;// bunch of code that use "bar"&lt;br /&gt;// but doesn't care about "foo"&lt;br /&gt;// ...&lt;br /&gt;&lt;br /&gt;baz(foo);This could be easily refactored to&lt;br /&gt;&lt;br /&gt;int bar = 5;&lt;br /&gt;// bunch of code that use "bar"&lt;br /&gt;// but doesn't care about "foo"&lt;br /&gt;// ...&lt;br /&gt;&lt;br /&gt;int foo = 3;&lt;br /&gt;baz(foo);This becomes a real issue when the code between declaration and first usage is very long (more than one screen). It is much harder to keep the context in your mind, when you have to scroll a lot to find out what given variable is.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5. No magic numbers&lt;/strong&gt;&lt;br /&gt;Whenever you compare something against constant value, it should be defined as constant. There is nothing worse than debugging your teammate’s code with things like&lt;br /&gt;&lt;br /&gt;il &lt; 4384What about this instead?&lt;br /&gt;&lt;br /&gt;inputLength &lt; MAX_INPUT_LENGTH&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6. Be friend with your language&lt;/strong&gt;&lt;br /&gt;Learning new language is always fun, you can learn to do things in new cool way. There is one big downside of being pro in one language while learning other one though. Say you’re Java developer trying to learn Ruby. You should learn how to do things the Ruby way, instead of trying to apply your skill in doing things the same way you’d do them in Java.&lt;br /&gt;&lt;br /&gt;You need to write 5 times “Hello world!”. In Java, you would do something like.&lt;br /&gt;&lt;br /&gt;for (int i = 0; i &lt; 5; i++) {&lt;br /&gt;  System.out.println("Hello world!");&lt;br /&gt;}In Ruby, you might be tempted to write&lt;br /&gt;&lt;br /&gt;for i in (0..5)&lt;br /&gt;  puts "Hello world!"&lt;br /&gt;endWhich seems OK, but there is a much better way&lt;br /&gt;&lt;br /&gt;5.times { puts "Hello world!" }&lt;br /&gt;&lt;strong&gt;7. Don’t fight the convention&lt;/strong&gt;&lt;br /&gt;Many languages have many different conventions. In general, people most probably know is Code Conventions for Java. Lets look at some of those conventions.&lt;br /&gt;&lt;br /&gt;◦method names should always begin with lower-case letter, followed by CamelCase (veryLongVariableName)&lt;br /&gt;◦class names should always be in CamelCase&lt;br /&gt;◦constant names should be all in upper case with underscores (MY_CONSTANT)&lt;br /&gt;◦open brace should be on the same line as if condition&lt;br /&gt;Breaking any of conventions should have a valid reason, never do it just because you don’t like it. If you decide to change some convention inside your team, that’s OK, but you might have problem when sharing code with other not so enlightened programmers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;8. Watch out for premature optimization&lt;/strong&gt;&lt;br /&gt;Premature optimization is root of all evil, at least that’s what TV said … First thing you should care about is to write understandable code. It doesn’t have to be fast the first time you write it.&lt;br /&gt;&lt;br /&gt;All optimization is premature unless the program is slow. If you want to optimize something, at first you need to find out where the problem is. Thats why we have profilers.&lt;br /&gt;&lt;br /&gt;Trying to optimize something without finding source of the problem always ends up in breaking something, or at least your code may turn out to be unreadable. If you think that something is slow, don’t just blindly start rewriting the code, find a proof first.&lt;br /&gt;&lt;br /&gt;Don’t solve problems that don’t exist.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;9. Always refactor the code after you test it&lt;/strong&gt;&lt;br /&gt;Nothing is perfect. Even though you might think you’re writing a perfect code, try looking at it few months later. You will probably fell like “wtf is that?”.&lt;br /&gt;&lt;br /&gt;Good way to improve the quality of your code is to refactor it after you test it. By testing I mean assuring that it works, which can be done either automatically or manually.&lt;br /&gt;&lt;br /&gt;First of all, you need your code to work. Don’t write it perfect the first time, just make it work. Then refactor it to make it perfect. For those of you that  know something about Test Driven Development, this might seem very familiar. The key here is to get used to the whole refactoring thing. If you’re using powerful IDE like IntelliJ IDEA, your life will be a lot easier while refactoring.&lt;br /&gt;&lt;br /&gt;After you try refactoring, you will probably make a mistake and break something. That’s why it is good to write automated tests. Any time you refactor, you can just run all test suites and see exactly what went wrong.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;10. Don’t get sucked into overengineering&lt;/strong&gt;&lt;br /&gt;When I first read about design patterns, I thought I found The Holy Grail. It all seems to be thought out, working perfectly and making design easy to understand, because you can just say “I used an observer pattern”, instead of explaining it all.&lt;br /&gt;&lt;br /&gt;So where is the problem? Because it all looks so natural and easy, you start using design patterns for everything. Why not make this class singleton? And what about creating another factory?&lt;br /&gt;&lt;br /&gt;Then instead of writing simple 80 line script, you end up with 10 class + 15 interface monster with bunch of generics and annotations, where 97% of the code doesn’t do anything.&lt;br /&gt;&lt;br /&gt;Design patterns are very useful tool to simplify the design, which doesn’t mean using them everywhere you can. You should use them, but don’t abuse them.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;11. Learn new things by prototyping&lt;/strong&gt;&lt;br /&gt;Programming is all about learning new things. When you learn new library or language, you suddenly have the urge to throw away all old code and rewrite it from scratch. There are lots of reasons why you don’t want to do that.&lt;br /&gt;&lt;br /&gt;Adding a new library or framework to existing application is a similar problem. Say you’re writing a javascript web application, and in the middle of everything, you discover jQuery. Now you have sudden urge to throw away all your javascript and write it in jQuery, even though you haven’t used it yet.&lt;br /&gt;&lt;br /&gt;The best way to go is to first create a lot of simple things with jQuery, where you will learn all the stuff you need in your application. You need AJAX? Try it on simple example outside the project and after you fully understand it, throw it away and move into production.&lt;br /&gt;&lt;br /&gt;If you are serious about programming, I strongly recommend reading Code Complete by Steve McConnell. It will forever change the way you think about programming :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6122342914201524490-3893309862366458623?l=haru-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6122342914201524490/posts/default/3893309862366458623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6122342914201524490/posts/default/3893309862366458623'/><link rel='alternate' type='text/html' href='http://haru-tech.blogspot.com/2010/12/11-tips-for-better-code.html' title='11 tips for better code'/><author><name>Haru</name><uri>http://www.blogger.com/profile/07136062176311341430</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6122342914201524490.post-1668980453407080111</id><published>2010-12-12T16:23:00.005+08:00</published><updated>2010-12-12T16:36:15.850+08:00</updated><title type='text'>Begginers guide to Visual Studio LightSwitch</title><content type='html'>Here are the links for the tutorial enjoy&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.silverlightshow.net/items/Beginners-Guide-to-Visual-Studio-LightSwitch-Part-1.aspx"&gt;Part1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.silverlightshow.net/items/Beginners-Guide-to-Visual-Studio-LightSwitch-Part-2.aspx"&gt;Part2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.silverlightshow.net/items/Beginners-Guide-to-Visual-Studio-LightSwitch-Part-3.aspx"&gt;Part3&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.silverlightshow.net/items/Beginners-Guide-to-Visual-Studio-LightSwitch-Part-4.aspx"&gt;Part4&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6122342914201524490-1668980453407080111?l=haru-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6122342914201524490/posts/default/1668980453407080111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6122342914201524490/posts/default/1668980453407080111'/><link rel='alternate' type='text/html' href='http://haru-tech.blogspot.com/2010/12/begginers-guide-to-visual-studio.html' title='Begginers guide to Visual Studio LightSwitch'/><author><name>Haru</name><uri>http://www.blogger.com/profile/07136062176311341430</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6122342914201524490.post-1260718778909667993</id><published>2010-05-16T12:03:00.000+08:00</published><updated>2010-05-16T12:11:39.005+08:00</updated><title type='text'>Google's Going Native in Chrome With SDK</title><content type='html'>Google is accelerating its effort this week to bring more powerful and fully functioned applications to the Web with the release of the Native Client SDK preview.&lt;br /&gt;&lt;br /&gt;Native Client is an open source technology that enables native C or C++ code to run in a Web browser, bringing more advanced applications to the Web that can run inside of Google's Chrome browser.&lt;br /&gt;&lt;br /&gt;The approach extends the capabilities of Web-based applications beyond the limitations imposed by using JavaScript, and the SDK builds on efforts to promote the technology that Google has had underway since last year.&lt;br /&gt;&lt;br /&gt;"When we released the research version of Native Client a year ago, we offered a snapshot of our source tree that developers could download and tinker with, but the download was big and cumbersome to use," David Springer, a senior software engineer at Google, wrote in a blog post. "The Native Client SDK preview, in contrast, includes just the basics you need to get started writing an app in minutes."&lt;br /&gt;&lt;br /&gt;With the new SDK, Google is providing a GCC-based compiler for C and C++ source code as well as samples to help developers build native-code-compliant applications.&lt;br /&gt;&lt;br /&gt;One concern that has been raised about Native Client is its portability: JavaScript is available for multiple browsers, while Native Client is being developed by Google and currently works only for Chrome.&lt;br /&gt;&lt;br /&gt;"Native Client seems like a huge leap backwards to me," a commenter using the alias "Guspaz" wrote in response to the Native Client blog post. "Why would anybody want to use Native Client when it will prevent your app from running on a variety of platforms such as older Macs, smartphones, tablets, and even smartbooks (including ChromeOS) that run PowerPC or ARM processors? I'm just not seeing the point here."&lt;br /&gt;&lt;br /&gt;As it turns out, portability is a key theme for Native Client development, according to Google. Henry Bridge, Google's product manager for Native Client, responded to concerns about lock-in by noting that Google is deeply committed to building a system that's platform-neutral. That said, Bridge admitted that Google has yet to ship a neutral-platform format for the SDK, or an ARM compiler either. He added that Google has no plans to build a compiler for PowerPC.&lt;br /&gt;&lt;br /&gt;The Native Client effort also runs in parallel to another Google initiative. To date, the company's developers have spent time and effort on building the V8 JavaScript engine to help accelerate Web applications. In another comment, Bridge noted that Native Client is different than V8 in that it doesn't interpret JavaScript at all, but rather is focused entirely on native code.&lt;br /&gt;&lt;br /&gt;"So why don't these compete? Because we think there are parts of Web apps people want to build in JavaScript and some parts of Web apps people want to build in other languages," Bridge wrote. "Take our video editing example. I'd rather build most of my UI and features in JS -- it's easier and will be just as responsive. But when I want to do the actual editing of the video data, which requires bit operations, etc., I'd rather do that in C++: Working with binary data is easier&lt;br /&gt;in C++, and will certainly be faster."&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sean Michael Kerner is a senior editor at InternetNews.com, the news service of Internet.com, the network for technology professionals.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6122342914201524490-1260718778909667993?l=haru-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6122342914201524490/posts/default/1260718778909667993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6122342914201524490/posts/default/1260718778909667993'/><link rel='alternate' type='text/html' href='http://haru-tech.blogspot.com/2010/05/googles-going-native-in-chrome-with-sdk.html' title='Google&apos;s Going Native in Chrome With SDK'/><author><name>Haru</name><uri>http://www.blogger.com/profile/07136062176311341430</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6122342914201524490.post-632146553787821510</id><published>2010-05-08T16:32:00.004+08:00</published><updated>2010-05-08T16:41:54.127+08:00</updated><title type='text'>Guarding against database anti-forensics</title><content type='html'>&lt;span style="font-size:85%;"&gt;Database hacking has gone mainstream and is becoming harder to detect because of the increasingly sophisticated anti-forensic procedures hackers use to cover their tracks.&lt;br /&gt;&lt;br /&gt;Knowing forensics inside and out, as well as the tricks hackers use to foil forensics, is essential for professionals responsible for protecting the integrity of corporate data.&lt;br /&gt;&lt;br /&gt;Privilege Made Simple. Privilege Identity Management (PIM) Demystified: Download nowDatabases contain a high percentage of confidential data, yet many organizations lack the budget and management buy-in to implement protections. According to studies, 60% of organizations have experienced a breach in the past 12 months, 80% expect database attacks to increase and 40% on average fail security audits.&lt;br /&gt;&lt;br /&gt;There are plenty of tools to help thwart attacks -- such as vulnerability management products that include vulnerability assessment and user monitoring functionality -- but the trick is to deploy comprehensive solutions that help in forensics and provide visibility into how attackers cover their tracks. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6122342914201524490-632146553787821510?l=haru-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6122342914201524490/posts/default/632146553787821510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6122342914201524490/posts/default/632146553787821510'/><link rel='alternate' type='text/html' href='http://haru-tech.blogspot.com/2010/05/guarding-against-database-anti.html' title='Guarding against database anti-forensics'/><author><name>Haru</name><uri>http://www.blogger.com/profile/07136062176311341430</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6122342914201524490.post-8486731862478129739</id><published>2008-07-02T21:05:00.001+08:00</published><updated>2008-07-02T21:06:08.321+08:00</updated><title type='text'>The 30 skills every IT person should have</title><content type='html'>1. Be able to fix basic PC issues. These can be how to map a printer, back up files, or add a network card. You don't need to be an expert and understand how to overclock a CPU or hack the registry, but if you work in IT, people expect you to be able to do some things.&lt;br /&gt;&lt;br /&gt;[ If you have IT staffers who aren't up to snuff, fire them. Learn how to do it right. ]&lt;br /&gt;&lt;br /&gt;2. Work the help desk. Everyone, from the CIO to the senior architect, should be able to sit down at the help desk and answer the phones. Not only will you gain a new appreciation for the folks on the phones, but you will also teach them more about your process and avoid escalations in the future.&lt;br /&gt;&lt;br /&gt;3. Do public speaking. At least once, you should present a topic to your peers. It can be as simple as a five-minute tutorial on how IM works, but being able to explain something and being comfortable enough to talk in front of a crowd is a skill you need to have. If you are nervous, partner with someone who is good at it, or do a roundtable. This way, if you get flustered, someone is there to cover for you.&lt;br /&gt;&lt;br /&gt;4. Train someone. The best way to learn is to teach.&lt;br /&gt;&lt;br /&gt;5. Listen more than you speak. I very rarely say something I didn't already know, but I often hear other people say things and think, "Darn, I wish I knew that last week."&lt;br /&gt;&lt;br /&gt;6. Know basic networking. Whether you are a network engineer, a help desk technician, a business analyst, or a system administrator, you need to understand how networks work and simple troubleshooting. You should understand DNS and how to check it, as well as how to ping and trace-route machines.&lt;br /&gt;&lt;br /&gt;7. Know basic system administration. Understand file permissions, access levels, and why machines talk to the domain controllers. You don't need to be an expert, but knowing the basics will avoid many headaches down the road.&lt;br /&gt;&lt;br /&gt;8. Know how to take a network trace. Everyone in IT should be able to fire up wireshark, netmon, snoop, or some basic network capturing tool. You don't need to understand everything in it, but you should be able to capture it to send to a network engineer to examine.&lt;br /&gt;&lt;br /&gt;9. Know the difference between latency and bandwidth. Latency is the amount of time to get a packet back and forth; bandwidth is the maximum amount of data a link can carry. They are related, but different. A link with high-bandwidth utilization can cause latency to go higher, but if the link isn't full, adding more bandwidth can't reduce latency.&lt;br /&gt;&lt;br /&gt;10. Script. Everyone should be able to throw a script together to get quick results. That doesn't mean you're a programmer. Real programmers put in error messages, look for abnormal behavior, and document. You don't need to do that, but you should be able to put something together to remove lines, send e-mail, or copy files.&lt;br /&gt;&lt;br /&gt;11. Back up. Before you do anything, for your own sake, back it up.&lt;br /&gt;&lt;br /&gt;12. Test backups. If you haven't tested restoring it, it isn't really there. Trust me.&lt;br /&gt;&lt;br /&gt;13. Document. None of the rest of us wants to have to figure out what you did. Write it down and put it in a location everyone can find. Even if it's obvious what you did or why you did it, write it down.&lt;br /&gt;&lt;br /&gt;14. Read "The Cuckoo's Egg." I don't get a cut from Cliff Stoll (the author), but this is probably the best security book there is -- not because it is so technical, but because it isn't.&lt;br /&gt;&lt;br /&gt;15. Work all night on a team project. No one likes to do this, but it's part of IT. Working through a hell project that requires an all-nighter to resolve stinks, but it builds very useful camaraderie by the time it is done.&lt;br /&gt;&lt;br /&gt;16. Run cable. It looks easy, but it isn't. Plus, you will understand why installing a new server doesn't really take five minutes -- unless, of course, you just plug in both ends and let the cable fall all over the place. Don't do that -- do it right. Label all the cables (yes, both ends), and dress them nice and neat. This will save time when there's a problem because you'll be able to see what goes where.&lt;br /&gt;&lt;br /&gt;17. You should know some energy rules of thumb. For example: A device consuming 3.5kW of electricity requires a ton of cooling to compensate for the heat. And I really do mean a ton, not merely "a lot." Note that 3.5kW is roughly what 15 to 20 fairly new 1U and 2U servers consume. One ton of cooling requires three 10-inch-round ducts to handle the air; 30 tons of air requires a duct measuring 80 by 20 inches. Thirty tons of air is a considerable amount.&lt;br /&gt;&lt;br /&gt;18. Manage at least one project. This way, the next time the project manager asks you for a status, you'll understand why. Ideally, you will have already sent the status report because you knew it would be asked for.&lt;br /&gt;&lt;br /&gt;19. Understand operating costs versus capital projects. Operating costs are the costs to run the business. Capital equipment is made of assets that can have their cost spread over a time period -- say, 36 months. Operating costs are sometimes better, sometimes worse. Know which one is better -- it can make a difference between a yes and no.&lt;br /&gt;&lt;br /&gt;20. Learn the business processes. Being able to spot improvements in the way the business is run is a great technique for gaining points. You don't need to use fancy tools; just asking a few questions and using common sense will serve you well.&lt;br /&gt;&lt;br /&gt;21. Don't be afraid to debate something you know is wrong. But also know when to stop arguing. It's a fine line between having a good idea and being a pain in the ass.&lt;br /&gt;&lt;br /&gt;22. If you have to go to your boss with a problem, make sure you have at least one solution.&lt;br /&gt;&lt;br /&gt;23. There is no such thing as a dumb question, so ask it ... once. Then write down the answer so that you don't have to ask it again. If you ask the same person the same question more than twice, you're an idiot (in their eyes).&lt;br /&gt;&lt;br /&gt;24. Even if it takes you twice as long to figure something out on your own versus asking someone else, take the time to do it yourself. You'll remember it longer. If it takes more than twice as long, ask.&lt;br /&gt;&lt;br /&gt;25. Learn how to speak without using acronyms.&lt;br /&gt;&lt;br /&gt;26. IT managers: Listen to your people. They know more than you. If not, get rid of them and hire smarter people. If you think you are the smartest one, resign.&lt;br /&gt;&lt;br /&gt;27. IT managers: If you know the answer, ask the right questions for someone else to get the solution; don't just give the answer. This is hard when you know what will bring the system back up quickly and everyone in the company is waiting for it, but it will pay off in the long run. After all, you won't always be available.&lt;br /&gt;&lt;br /&gt;28. IT managers: The first time someone does something wrong, it's not a mistake -- it's a learning experience. The next time, though, give them hell. And remember: Every day is a chance for an employee to learn something else. Make sure they learn something valuable versus learning there's a better job out there.&lt;br /&gt;&lt;br /&gt;29. IT managers: Always give people more work than you think they can handle. People will say you are unrealistic, but everyone needs something to complain about anyway, so make it easy. Plus, there's nothing worse than looking at the clock at 2 p.m. and thinking, "I've got nothing to do, but can't leave." This way, your employees won't have that dilemma.&lt;br /&gt;&lt;br /&gt;30. IT managers: Square pegs go in square holes. If someone works well in a team but not so effectively on their own, keep them as part of a team.&lt;br /&gt;&lt;br /&gt;special thanx to http://www.infoworld.com for this info and of course code project for sending me the link :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6122342914201524490-8486731862478129739?l=haru-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6122342914201524490/posts/default/8486731862478129739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6122342914201524490/posts/default/8486731862478129739'/><link rel='alternate' type='text/html' href='http://haru-tech.blogspot.com/2008/07/30-skills-every-it-person-should-have.html' title='The 30 skills every IT person should have'/><author><name>Haru</name><uri>http://www.blogger.com/profile/07136062176311341430</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6122342914201524490.post-2249660332635919434</id><published>2008-02-25T19:16:00.002+08:00</published><updated>2008-02-25T19:19:53.326+08:00</updated><title type='text'>Disc Encryption</title><content type='html'>while serving the net, i come to find tt most disc encryption can be easily break&lt;br /&gt;&lt;br /&gt;Whenever a laptop containing lots of private data is lost, there are calls for 'disk encryption' that encodes all of a computer's data to become standard practice. But a dramatic new result by security researchers at Princeton suggests it is no panacea.&lt;br /&gt;&lt;br /&gt;They've shown that a computer's RAM - short term memory - can give it away.&lt;br /&gt;&lt;br /&gt;RAM needs power to hold data; but the researchers have found that information can persist for up to minutes after the power is cut. That's long enough to extract the key needed to unscramble the encrypted disk, which is always kept in a computer's RAM.&lt;br /&gt;&lt;br /&gt;An accessible video (below or here) explains the team's findings in more detail. And you can read more at a website set up to explain the work&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/JDaicPIgn9U&amp;rel=1&amp;border=0"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/JDaicPIgn9U&amp;rel=1&amp;border=0" type="application/x-shockwave-flash" wmode="transparent"width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;The RAM in most computers can hold information for a few seconds to a minute after power down. But cooling the RAM chip can extend that to up to ten minutes. Another video shows how an image held in RAM slowly degrades after the power is turned off.&lt;br /&gt;&lt;br /&gt;The attack works on any laptop powered up, or in sleep/hibernate mode. Some machines using Microsoft Vista's BitLocker disk encryption are even vulnerable when switched off completely. Apple's FileVault and popular disk encyption software TrueCrypt suffer the same problem.&lt;br /&gt;&lt;br /&gt;Since lots of sensitive data is carried around on entirely un-encrypted formats you could argue this is of little consequence. Properly safeguarding such data is more of a policy than a technical problem. Nevertheless, it will be interesting to see how long before this new attack appears 'in the wild', if at all.&lt;br /&gt;&lt;br /&gt;Tom Simonite, online technology reporter&lt;br /&gt;&lt;br /&gt;i got this article of http://www.newscientist.com/&lt;br /&gt;special thanks to them for this article&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6122342914201524490-2249660332635919434?l=haru-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6122342914201524490/posts/default/2249660332635919434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6122342914201524490/posts/default/2249660332635919434'/><link rel='alternate' type='text/html' href='http://haru-tech.blogspot.com/2008/02/disc-encryption.html' title='Disc Encryption'/><author><name>Haru</name><uri>http://www.blogger.com/profile/07136062176311341430</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6122342914201524490.post-349976902286068493</id><published>2008-02-06T15:55:00.000+08:00</published><updated>2008-02-06T15:57:41.834+08:00</updated><title type='text'>Basic to Operating System</title><content type='html'>Operating system types&lt;br /&gt;&lt;br /&gt;As computers have progressed and developed so have the types of operating systems. Below is a basic list of the different types of operating systems and a few examples of Operating Systems that fall into each of the categories. Many computer Operating Systems will fall into more than one of the below categories. &lt;br /&gt;&lt;br /&gt;GUI - Short for Graphical User Interface, a GUI Operating System contains graphics and icons and is commonly navigated by using a computer mouse. See our GUI dictionary definition for a complete definition. Below are some examples of GUI Operating Systems. &lt;br /&gt;&lt;br /&gt;System 7.x&lt;br /&gt;Windows 98&lt;br /&gt;Windows CE&lt;br /&gt;&lt;br /&gt;Multi-user - A multi-user Operating System allows for multiple users to use the same computer at the same time and/or different times. See our multi-user dictionary definition for a complete definition for a complete definition. Below are some examples of multi-user Operating Systems.&lt;br /&gt;&lt;br /&gt;Linux&lt;br /&gt;Unix&lt;br /&gt;Windows 2000 &lt;br /&gt;&lt;br /&gt;Multiprocessing - An Operating System capable of supporting and utilizing more than one computer processor. Below are some examples of multiprocessing Operating Systems.&lt;br /&gt;&lt;br /&gt;Linux&lt;br /&gt;Unix&lt;br /&gt;Windows 2000 &lt;br /&gt;&lt;br /&gt;Multitasking - An Operating system that is capable of allowing multiple software processes to run at the same time. Below are some examples of multitasking Operating Systems.&lt;br /&gt;&lt;br /&gt;Unix&lt;br /&gt;Windows 2000&lt;br /&gt;&lt;br /&gt;Multithreading - Operating systems that allow different parts of a software program to run concurrently. Operating systems that would fall into this category are:&lt;br /&gt;&lt;br /&gt;Linux&lt;br /&gt;Unix&lt;br /&gt;Windows 2000&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6122342914201524490-349976902286068493?l=haru-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6122342914201524490/posts/default/349976902286068493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6122342914201524490/posts/default/349976902286068493'/><link rel='alternate' type='text/html' href='http://haru-tech.blogspot.com/2008/02/basic-to-operating-system.html' title='Basic to Operating System'/><author><name>Haru</name><uri>http://www.blogger.com/profile/07136062176311341430</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6122342914201524490.post-3331384257558008817</id><published>2007-11-19T21:33:00.000+08:00</published><updated>2007-11-19T21:37:57.185+08:00</updated><title type='text'>J2EE Struts 2.0 Guide</title><content type='html'>&lt;strong&gt;&lt;em&gt;Strut guide &amp;amp; diff between strut 1 &amp;amp; 2&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.roseindia.net/struts/struts2/struts-2-architecture.shtml"&gt;Struts 2 Architecture&lt;/a&gt;&lt;br /&gt;Struts and webwork has joined together to develop the Struts 2 Framework. Struts 2 Framework is very extensible and elegant for the development of enterprise web application of any size. In this section we are going to explain you the architecture of Struts 2 Framework&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.roseindia.net/struts/struts2/Struts2vsStruts1.shtml"&gt;Struts 1.x Vs Struts 2.x&lt;/a&gt;&lt;br /&gt;In the following section, we are going to compare the various features between the two frameworks. Struts 2.x  is very simple in comparison to the struts 1.x,  few of its excelling features are:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.roseindia.net/struts/struts2/struts-2-hello-world-files.shtml"&gt;Writing Jsp, Java and Configuration files&lt;/a&gt;&lt;br /&gt;In this section we will write JSP, Java and required configuration files for our Struts 2 Hello World application. Now in struts 2 struts.xml is used to configure the applications. We will also deploy and test the application.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.roseindia.net/struts/struts2/actions/index.shtml"&gt;Struts 2 Actions Example&lt;/a&gt;&lt;br /&gt;When a client request matches the action's name, the framework uses the mapping from struts.xml file to process the request.&lt;br /&gt;                &lt;br /&gt;&lt;a href="http://www.roseindia.net/struts/struts2/actions/struts2-actions.shtml"&gt;Struts 2 Actions Introduction&lt;/a&gt;&lt;br /&gt;When a client request matches the action's name, the framework uses the mapping from struts.xml file to process the request. The mapping to an action is usually generated by a Struts Tag.&lt;br /&gt;                         &lt;br /&gt;&lt;a href="http://www.roseindia.net/struts/struts2/actions/struts-2-redirect-action.shtml"&gt;Struts 2 Redirect Action&lt;/a&gt;&lt;br /&gt;In this section, you will get familiar with struts 2 Redirect action and learn to use it in the struts 2 application.&lt;br /&gt;&lt;br /&gt;more tutorials at &lt;a href="http://www.roseindia.net/struts/struts2/"&gt;http://www.roseindia.net/struts/struts2/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6122342914201524490-3331384257558008817?l=haru-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6122342914201524490/posts/default/3331384257558008817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6122342914201524490/posts/default/3331384257558008817'/><link rel='alternate' type='text/html' href='http://haru-tech.blogspot.com/2007/11/j2ee-struts-20-guide.html' title='J2EE Struts 2.0 Guide'/><author><name>Haru</name><uri>http://www.blogger.com/profile/07136062176311341430</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
