Home

Best JavaScript Frameworks (Libraries)

1 Comment

Best JavaScript Frameworks/Libraries:

1.) JQuery

2.) YUI

3.) Dojo

4.) ExtJS

5.) Prototype

6.) MooTools

7.) script.aculo.us

8.) AngularJS

9.) Backbone.js

10.)Ember.js

References:

http://www.w3schools.com/js/js_libraries.asp

http://en.wikipedia.org/wiki/Comparison_of_JavaScript_frameworks

http://readwrite.com/2014/02/06/angular-backbone-ember-best-javascript-framework-for-you

http://www.infoq.com/research/top-javascript-mvc-frameworks

http://jonathanmh.com/best-javascript-mvc-frameworks-2013-2014/

http://www.infoworld.com/d/application-development/the-10-hottest-javascript-framework-projects-228335

http://designzum.com/2014/02/19/top-best-javascript-framework-2014/

http://code.tutsplus.com/articles/20-javascript-frameworks-worth-checking-out–net-22020

How to Be an Effective CEO

Leave a comment

This is one post/chapter in a serialized book called Startup 101. For the introduction and table of contents, please click here.

First-time entrepreneurs are usually also first-time CEOs. When you look at your first business card that says CEO, don’t forget that it is not necessarily telling the truth. You earn the title of CEO through your actions and your results. You still have your training wheels on.

Fortunately, there is probably more advice available on how to be an effective CEO than on almost any other subject. This chapter gives you a quick guide, but do invest the time to read the classics, particularly:

Sponsor

  • “The Effective Executive,” by Peter Drucker,
  • “The 7 Habits of Highly Effective People,” by Stephen Covey.

These are timeless classics. Their authors do not attempt to create any modern theory or expound on any particular business or market trend. The books work because they are based on observation. The authors observed effective people to find out what they did right.

The Effective Executive

Peter Drucker’s “Effective Executive” was written in 1966. It is a slim tome and easy to read, even if the language is a bit dated. Drucker focuses on how to allocate time, because you can get more of almost any resource except time. His advice to find time for uninterrupted work is particularly relevant to today’s multi-tasking world. He is also very clear about the need to allocate enough time for people. If you need an hour with someone, don’t think you are being efficient by rushing through the meeting in 15 minutes.

CEOs allocate resources. The first resource they need to allocate is their own time.

One popular book today is “Now, Discover Your Strengths,” by Marcus Buckingham. Drucker was a big proponent of accentuating a person’s strengths rather than managing their weaknesses.

The 7 Habits of Highly Effective People

“The 7 Habits of Highly Effective People,” first published in 1989, is a self-help book written by Stephen R. Covey. It has sold over 15 million copies. Drucker observes the following habits in effective people:

Habit 1: Be proactive.
Change starts from within. Most people react to external forces. To lead effectively, you have to overcome that natural tendency.

Habit 2: Begin with the end in mind.
You cannot lead unless you know where you want to get to.

Habit 3: Put first things first.
This is similar to what Drucker recommends. You need to have a very clear view of what is important, so that you know what to spend time on. Note that this often means leaving your comfort zone by acting on tasks that you don’t naturally like or feel competent in performing.

Habit 4: Think win/win.
Seek agreement and relationships that are mutually beneficial. In cases in which a win/win deal cannot be achieved, accept that agreeing on “no deal” may be the best alternative. In developing an organizational culture, be sure to reward win/win behavior among employees, and avoid inadvertently rewarding win/lose behavior.

Habit 5: Seek first to understand, then to be understood.
First seek to understand the other person, and only then try to be understood. Stephen Covey presents this habit as the most important principle of inter-personal relations. Effective listening is not simply echoing what the other person has said through the lens of your own experience. Rather, it is putting yourself in the mindset of the other person, listening empathetically for both feeling and meaning.

Habit 6: Synergize.
Through trustful communication, find ways to leverage individual differences to create a whole that is greater than the sum of its parts. Through mutual trust and understanding, people can often solve conflicts and find better solutions than would have been obtained through either person’s own solution.

Habit 7: Sharpen the saw.
Take time out from production to build production capacity through personal renewal of the physical, mental, social/emotional, and spiritual dimensions. Maintain a balance among these dimensions.

Three Things a CEO Has to Do Well

This is all you need to do as a CEO:

  1. Set direction and milestones (resisting the tempting distraction of juicy diversification). The ability to clearly say, “No, we are not doing that,” is very important.
  2. Allocate resources (both financial and human, starting with your time).
  3. Hire and fire the top team (we have devoted a separate chapter to hiring an A-Team because this is much harder to say than do).

Making the Transition from Entrepreneur to CEO

Your average entrepreneur would probably say, “Yeah, right!” if told that they have to do only three things. The reality of a startup is that you usually have to do a bit of everything. You have to be product manager, if not the actual coder and designer. You become the chief marketing officer, chief financial officer, chief of just about anything that needs to get done.

This, of course, is unsustainable. You have to work out a transition plan that allows you to hire people to take over all the jobs that you currently do except the three CEO jobs.

Here are five tips for managing that transition:

  1. Record how much time you spend on these tasks. Understand the process. You cannot hire for, outsource, or automate a task unless you understand it yourself. Look at this “chief of everything” phase as your chance to learn.
  2. Recognize the reality that you are not an expert in these tasks. So K.I.S.S.
  3. Understand the difference between “core” and “context” in your business. Core is what you have to do really well and do in-house. Everything else you can and should outsource.
  4. Hire, outsource, and automate in proportion to the growth of your business. If you can manage five clients with everything else you are doing, and your two-year plan calls for 20 clients, hire someone who knows how to win and manage 20 clients (not someone who managed 1,000 clients at their last job). When you finally get the resources, there is a huge temptation to over-engineer.
  5. Pay particular attention to hiring someone to do the one job that you love and could continue doing very competently (whether that is coding, design, marketing, sales, or finance). Holding on to this one job, your comfort zone, is hugely tempting. But it is a huge mistake that will prevent you from becoming an effective CEO.

Elance.com

Leave a comment

Elance.com

20 Tools to Make the Life of a Web Developer Easier

Leave a comment

— phpMyAdmin SQL Dump
— version 2.11.3deb1ubuntu1.1
— Host: localhost
— Generation Time: Jun 10, 2009 at 04:51 PM
— Server version: 5.0.51
— PHP Version: 5.2.4-2ubuntu5.5
SET SQL_MODE=”NO_AUTO_VALUE_ON_ZERO”;
— Database: `mcd_cricket`
— ——————————————————–
— Table structure for table `player_nicknames`
CREATE TABLE IF NOT EXISTS `player_nicknames` (
`pnid` int(3) NOT NULL auto_increment,
`team_id` int(3) NOT NULL COMMENT ‘player team_id’,
`player_id` int(4) NOT NULL COMMENT ‘player player_id’,
`nickname` varchar(50) NOT NULL COMMENT ‘player nickaname’,
PRIMARY KEY  (`pnid`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=549 ;
— Dumping data for table `player_nicknames`
INSERT INTO `player_nicknames` (`pnid`, `team_id`, `player_id`, `nickname`) VALUES
(1, 3, 146, ‘D Vettori’),
(2, 3, 146, ‘Daniel Vettori’),
(3, 3, 2, ‘Broom’),
(4, 3, 2, ‘Neil Broom’),
(5, 3, 3, ‘I Butler’),
(6, 3, 3, ‘Ian Butler’),
(7, 3, 4, ‘B Diamanti’),
(8, 3, 4, ‘Brendon Diamanti’),
(9, 3, 5, ‘J Franklin’),
(10, 3, 5, ‘James Franklin’),
(11, 3, 6, ‘M Guptill’),
(12, 3, 6, ‘Martin Guptill’),
(13, 3, 7, ‘B McCullum’),
(14, 3, 7, ‘Brendon McCullum’),
(15, 4, 43, ‘G Hamilton’),
(16, 4, 43, ‘Gavin Hamilton’),
(17, 4, 44, ‘R Berrington’),
(18, 4, 44, ‘Richie Berrington’),
(19, 4, 45, ‘K Coetzer’),
(20, 4, 45, ‘Kyle Coetzer’),
(21, 4, 46, ‘G Drummond’),
(22, 4, 46, ‘Gordon Drummond’),
(23, 4, 47, ‘M Haq’),
(24, 4, 47, ‘Majid Haq’),
(25, 4, 48, ‘N McCallum’),
(26, 4, 48, ‘Neil McCallum’),
(41, 2, 32, ‘J Smits ‘),
(40, 3, 2, ‘N Broom’),
(42, 2, 32, ‘Jeroen Smits ‘),
(43, 1, 16, ‘P Collingwood’),
(44, 1, 16, ‘Paul Collingwood’),
(45, 1, 17, ‘J Anderson’),
(46, 1, 17, ‘James Anderson’),
(47, 1, 18, ‘R Bopara’),
(48, 1, 18, ‘Ravi Bopara’),
(49, 1, 19, ‘S Broad’),
(50, 1, 19, ‘Stuart Broad’),
(51, 2, 33, ‘P Borren ‘),
(52, 2, 33, ‘Peter Borren ‘),
(53, 1, 20, ‘J Foster ‘),
(54, 1, 20, ‘James Foster’),
(55, 1, 21, ‘R Key’),
(56, 1, 21, ‘Robert Key’),
(57, 2, 34, ‘M Bukhari ‘),
(58, 2, 34, ‘Mudassar Bukhari ‘),
(59, 1, 22, ‘D Mascarenhas’),
(60, 1, 22, ‘Dimitri Mascarenhas’),
(61, 2, 35, ‘T Grooth ‘),
(62, 2, 35, ‘Tom de Grooth ‘),
(63, 1, 23, ‘E Morgan’),
(64, 1, 23, ‘Eoin Morgan’),
(65, 2, 36, ‘M Jonkman ‘),
(66, 2, 36, ‘Maurits Jonkman ‘),
(67, 1, 24, ‘G Napier’),
(68, 1, 24, ‘Graham Napier’),
(69, 2, 37, ‘A Kervezee ‘),
(70, 2, 37, ‘Alexei Kervezee ‘),
(71, 1, 25, ‘K Pietersen’),
(72, 1, 25, ‘peterson’),
(73, 1, 25, ‘petersen’),
(74, 1, 26, ‘A Rashid’),
(75, 1, 26, ‘Adil Rashid’),
(76, 2, 38, ‘D Nannes ‘),
(77, 2, 38, ‘Dirk Nannes ‘),
(78, 1, 27, ‘O Shah’),
(79, 1, 27, ‘Owais Shah’),
(80, 2, 39, ‘R Nijman ‘),
(81, 2, 39, ‘Ruud Nijman ‘),
(82, 1, 28, ‘R Sidebottom’),
(83, 1, 28, ‘Ryan Sidebottom’),
(84, 2, 40, ‘D Reekers ‘),
(85, 2, 40, ‘Darron Reekers ‘),
(86, 1, 29, ‘G Swann’),
(87, 1, 29, ‘Graeme Swann’),
(88, 1, 30, ‘L Wright’),
(89, 1, 30, ‘Luke Wright’),
(90, 2, 41, ‘E Schiferli ‘),
(91, 2, 41, ‘Edgar Schiferli ‘),
(92, 1, 31, ‘A Flintoff’),
(93, 1, 31, ‘Andrew Flintoff’),
(94, 2, 42, ‘P Seelaar ‘),
(95, 2, 42, ‘Pieter Seelaar ‘),
(96, 12, 162, ‘M Ashraful’),
(97, 12, 162, ‘Mohammad Ashraful’),
(98, 12, 163, ‘A Razzak’),
(99, 12, 163, ‘Abdur Razzak’),
(100, 2, 182, ‘E Szwarczynski ‘),
(101, 2, 182, ‘Eric Szwarczynski ‘),
(102, 12, 164, ‘J Siddique’),
(103, 12, 164, ‘Junaid Siddique’),
(104, 2, 183, ‘R Doeschate ‘),
(105, 2, 183, ‘Ryan ten Doeschate ‘),
(106, 12, 166, ‘M Mortaza’),
(107, 12, 166, ‘Mashrafe Mortaza’),
(108, 12, 167, ‘M Ali’),
(109, 12, 167, ‘Mithun Ali’),
(110, 12, 168, ‘M Rahim’),
(111, 12, 168, ‘Mushfiqur Rahim’),
(112, 12, 169, ‘N Islam’),
(113, 12, 169, ‘Naeem Islam’),
(114, 12, 170, ‘R Hasan’),
(115, 12, 170, ‘Raqibul Hasan’),
(116, 4, 184, ‘D Bunge ‘),
(117, 4, 184, ‘Daan van Bunge ‘),
(118, 12, 171, ‘R Hossain’),
(119, 12, 171, ‘Rubel Hossain’),
(120, 4, 185, ‘B Zuiderent ‘),
(121, 4, 185, ‘Bas Zuiderent ‘),
(122, 12, 172, ‘S Hossain’),
(123, 12, 172, ‘Shahadat Hossain’),
(124, 12, 173, ‘S Rahman’),
(125, 12, 173, ‘Shamsur Rahman’),
(126, 12, 174, ‘Shakib Al Hasan’),
(127, 12, 175, ‘S Rasel’),
(128, 12, 175, ‘Syed Rasel’),
(129, 12, 176, ‘T Iqba’),
(130, 12, 176, ‘Tamim Iqba’),
(131, 3, 8, ‘Nathan McCullum’),
(132, 3, 9, ‘P McGlashan’),
(133, 3, 9, ‘Peter McGlashan’),
(134, 3, 10, ‘K Mills’),
(135, 3, 10, ‘Kyle Mills’),
(136, 3, 11, ‘I OBrien’),
(137, 3, 11, ‘Iain Obrien’),
(138, 3, 11, ‘Obrian’),
(139, 3, 12, ‘J Oram’),
(140, 3, 12, ‘Jacob’),
(141, 3, 13, ‘J Ryder’),
(142, 3, 13, ‘Jesse’),
(143, 3, 14, ‘S Styris’),
(144, 3, 14, ‘Scott Styris’),
(145, 3, 15, ‘R Taylor’),
(146, 3, 15, ‘Ross Taylor’),
(147, 8, 101, ‘R Ponting  ‘),
(148, 8, 101, ‘Ricky Ponting ‘),
(149, 8, 102, ‘M Clarke ‘),
(150, 8, 102, ‘Michael Clarke ‘),
(151, 8, 103, ‘N Bracken  ‘),
(152, 8, 103, ‘Nathan Bracken  ‘),
(153, 8, 104, ‘B Haddin  ‘),
(154, 8, 104, ‘Brad Haddin ‘),
(155, 4, 50, ‘C MacLeod’),
(156, 4, 50, ‘Calum MacLeod’),
(157, 8, 105, ‘N Hauritz  ‘),
(158, 8, 105, ‘Nathan Hauritz  ‘),
(159, 4, 51, ‘D Nel’),
(160, 4, 51, ‘Dewald Nel’),
(161, 8, 106, ‘B Hilfenhaus ‘),
(162, 8, 106, ‘Ben Hilfenhaus ‘),
(163, 4, 52, ‘N Poonia’),
(164, 4, 52, ‘Navdeep Poonia’),
(165, 8, 107, ‘J Hopes  ‘),
(166, 8, 107, ‘James Hopes  ‘),
(167, 4, 53, ‘G Rogers’),
(168, 4, 53, ‘Glenn Rogers’),
(169, 4, 54, ‘C Smith ‘),
(170, 4, 54, ‘Colin Smith’),
(236, 6, 79, ‘A Fletcher’),
(172, 8, 108, ‘David Hussey ‘),
(251, 6, 84, ‘L Simmons ‘),
(174, 8, 109, ‘Michael Hussey  ‘),
(175, 4, 177, ‘J Stander’),
(176, 4, 177, ‘Jan Stander’),
(177, 8, 110, ‘M Johnson ‘),
(178, 8, 110, ‘Mitchell Johnson ‘),
(179, 4, 178, ‘Ryan Watson ‘),
(180, 4, 179, ‘F Watts’),
(181, 4, 179, ‘Fraser Watts’),
(182, 8, 111, ‘B Lee  ‘),
(183, 8, 111, ‘Brett Lee  ‘),
(184, 4, 180, ‘C Wright ‘),
(185, 4, 180, ‘Craig Wright ‘),
(186, 8, 112, ‘P Siddle ‘),
(187, 8, 112, ‘Peter Siddle ‘),
(188, 4, 181, ‘J Blain’),
(189, 4, 181, ‘John Blain’),
(190, 8, 113, ‘A Symonds  ‘),
(191, 8, 113, ‘Andrew Symonds  ‘),
(192, 8, 114, ‘D Warner ‘),
(193, 8, 114, ‘David Warner ‘),
(194, 8, 115, ‘S Watson ‘),
(195, 8, 115, ‘Shane Watson ‘),
(196, 11, 147, ‘M Dhoni  ‘),
(197, 11, 147, ‘MS Dhoni  ‘),
(199, 11, 147, ‘M S Dhoni’),
(200, 6, 71, ‘C Gayle ‘),
(201, 6, 71, ‘Chris ‘),
(202, 11, 148, ‘V Sehwag’),
(203, 11, 148, ‘Virender’),
(204, 11, 149, ‘G Gambhir ‘),
(205, 11, 149, ‘Gautam’),
(206, 11, 149, ‘Gautam Gambhir’),
(207, 11, 150, ‘H Singh’),
(208, 11, 150, ‘Harbhajan Singh’),
(221, 6, 75, ‘D Bernard  ‘),
(210, 6, 71, ‘Chris Gayle ‘),
(211, 11, 148, ‘Virender Sehwag’),
(212, 6, 72, ‘D Ramdin ‘),
(213, 6, 72, ‘Denesh ‘),
(214, 6, 72, ‘Denesh Ramdin ‘),
(215, 6, 73, ‘L Baker  ‘),
(216, 6, 73, ‘Lionel ‘),
(217, 6, 73, ‘Lionel Baker ‘),
(218, 6, 74, ‘S Benn ‘),
(219, 6, 74, ‘Sulieman ‘),
(220, 6, 74, ‘Sulieman Benn ‘),
(222, 6, 75, ‘David ‘),
(223, 6, 75, ‘David Bernard ‘),
(224, 6, 76, ‘D Bravo ‘),
(225, 6, 76, ‘Dwayne ‘),
(226, 6, 76, ‘Dwayne Bravo ‘),
(227, 11, 151, ‘R Jadeja ‘),
(228, 11, 151, ‘Ravindra’),
(229, 11, 151, ‘Ravindra Jadeja’),
(230, 6, 77, ‘S Chanderpaul  ‘),
(231, 6, 77, ‘Shivnarine ‘),
(232, 6, 77, ‘Shivnarine Chanderpaul ‘),
(233, 6, 78, ‘F Edwards ‘),
(234, 6, 78, ‘Fidel ‘),
(235, 6, 78, ‘Fidel Edwards ‘),
(237, 6, 79, ‘Andre ‘),
(238, 6, 79, ‘Andre Fletcher ‘),
(239, 6, 80, ‘X Marshall ‘),
(240, 6, 80, ‘Xavier ‘),
(241, 6, 80, ‘Xavier Marshall ‘),
(242, 6, 81, ‘K Pollard  ‘),
(243, 6, 81, ‘Kieron ‘),
(244, 6, 81, ‘Kieron Pollard ‘),
(245, 6, 82, ‘D Sammy ‘),
(246, 6, 82, ‘Darren ‘),
(247, 6, 82, ‘Darren Sammy ‘),
(248, 6, 83, ‘R Sarwan  ‘),
(249, 6, 83, ‘Ramnaresh ‘),
(250, 6, 83, ‘Ramnaresh Sarwan ‘),
(252, 6, 84, ‘Lendl ‘),
(253, 6, 84, ‘Lendl Simmons ‘),
(254, 11, 152, ‘Z Khan’),
(255, 11, 152, ‘Zaheer Khan’),
(256, 6, 85, ‘J Taylor ‘),
(257, 6, 85, ‘Jerome ‘),
(258, 6, 85, ‘Jerome Taylor ‘),
(259, 11, 153, ‘P Kumar ‘),
(260, 11, 153, ‘Praveen Kumar’),
(261, 11, 154, ‘P Ojha’),
(262, 11, 154, ‘Pragyan’),
(263, 11, 154, ‘Pragyan Ojha’),
(264, 11, 155, ‘I Pathan ‘),
(265, 11, 155, ‘Irfan Pathan’),
(266, 10, 131, ‘G Smith ‘),
(267, 10, 131, ‘Graeme Smith ‘),
(268, 11, 156, ‘Y Pathan’),
(269, 11, 156, ‘Yusuf Pathan’),
(270, 10, 132, ‘J Botha ‘),
(271, 10, 132, ‘Johan Botha ‘),
(272, 11, 157, ‘S Raina ‘),
(273, 11, 157, ‘Suresh’),
(274, 11, 157, ‘Suresh Raina’),
(275, 10, 133, ‘Y Abdulla  ‘),
(276, 10, 133, ‘Yusuf Abdulla  ‘),
(277, 11, 158, ‘I Sharma’),
(278, 11, 158, ‘Ishant Sharma’),
(279, 10, 134, ‘M Boucher  ‘),
(280, 10, 134, ‘Mark Boucher ‘),
(281, 11, 159, ‘R Sharma ‘),
(282, 11, 159, ‘Rohit Sharma ‘),
(283, 10, 135, ‘AB Villiers  ‘),
(284, 10, 135, ‘AB de Villiers  ‘),
(285, 10, 135, ‘devilliers ‘),
(286, 11, 161, ‘Y Singh ‘),
(287, 11, 161, ‘Yuvi ‘),
(288, 11, 161, ‘Yuvraj Singh’),
(289, 10, 136, ‘J P Duminy ‘),
(290, 10, 136, ‘Jean-Paul Duminy ‘),
(291, 10, 136, ‘JPDuminy ‘),
(292, 10, 137, ‘H Gibbs  ‘),
(293, 10, 137, ‘Herschelle Gibbs  ‘),
(294, 9, 116, ‘K Sangakkara ‘),
(295, 9, 116, ‘Kumar Sangakkara’),
(296, 10, 138, ‘J Kallis ‘),
(297, 10, 138, ‘Jacques Kallis ‘),
(298, 10, 139, ‘Albie Morkel  ‘),
(299, 10, 140, ‘Morne Morkel ‘),
(300, 10, 141, ‘J Ontong  ‘),
(301, 10, 141, ‘Justin Ontong  ‘),
(302, 10, 142, ‘W Parnell ‘),
(303, 10, 142, ‘Wayne Parnell ‘),
(304, 10, 143, ‘Robin Peterson  ‘),
(305, 10, 144, ‘D Steyn ‘),
(306, 10, 144, ‘Dale Steyn ‘),
(307, 9, 117, ‘M Muralitharan ‘),
(308, 9, 117, ‘Muttiah Muralitharan’),
(309, 10, 145, ‘R Merwe ‘),
(310, 10, 145, ‘Roelof van der Merwe ‘),
(311, 9, 118, ‘I Saram ‘),
(312, 9, 118, ‘Indika de Saram’),
(313, 9, 118, ‘de Saram’),
(314, 9, 119, ‘T Dilshan’),
(315, 9, 119, ‘Tillakaratne Dilshan’),
(316, 9, 120, ‘S Jayasuriya ‘),
(317, 9, 120, ‘Sanath Jayasuriya ‘),
(318, 9, 121, ‘M Jayawardene’),
(319, 9, 121, ‘Mahela Jayawardene’),
(320, 9, 122, ‘N Kulasekara ‘),
(321, 9, 122, ‘Nuwan Kulasekara ‘),
(322, 9, 123, ‘F Maharoof’),
(323, 9, 123, ‘Farveez Maharoof’),
(324, 9, 124, ‘L Malinga ‘),
(325, 9, 124, ‘Lasith Malinga ‘),
(326, 9, 125, ‘A Mathews’),
(327, 9, 125, ‘Angelo Mathews’),
(328, 9, 126, ‘A Mendis ‘),
(329, 9, 126, ‘Ajantha Mendis ‘),
(330, 9, 127, ‘J Mubarak’),
(331, 9, 127, ‘Jehan Mubarak’),
(332, 10, 145, ‘deMerve ‘),
(333, 10, 145, ‘der merve’),
(334, 10, 145, ‘dermerwe’),
(335, 9, 128, ‘C Silva ‘),
(336, 9, 128, ‘Chamara’),
(337, 9, 129, ‘T Thushara’),
(338, 9, 129, ‘Thilan Thushara’),
(339, 9, 130, ‘I Udana’),
(340, 9, 130, ‘Isuru Udana’),
(341, 5, 55, ‘Y Khan’),
(342, 5, 55, ‘Younis Khan’),
(343, 7, 86, ‘W Porterfield’),
(344, 7, 86, ‘William Porterfield’),
(345, 7, 87, ‘A Botha’),
(346, 7, 87, ‘Andre Botha’),
(347, 5, 56, ‘A Shehzad’),
(348, 5, 56, ‘Ahmed’),
(349, 5, 56, ‘Ahmed Shehzad’),
(350, 7, 88, ‘J Bray’),
(351, 7, 88, ‘Jeremy Bray’),
(352, 7, 89, ‘P Connell’),
(353, 7, 89, ‘Peter Connell’),
(354, 5, 57, ‘F Alam’),
(355, 5, 57, ‘Fawad’),
(356, 5, 57, ‘Fawad Alam’),
(357, 7, 90, ‘A Cusack’),
(358, 7, 90, ‘Alex Cusack’),
(359, 5, 58, ‘I Anjum’),
(360, 5, 58, ‘Iftikar’),
(361, 5, 58, ‘Iftikhar Anjum’),
(362, 7, 91, ‘T Johnston’),
(363, 7, 91, ‘Trent Johnston’),
(364, 5, 59, ‘K Akmal’),
(365, 5, 59, ‘Kamran’),
(366, 5, 59, ‘Kamran Akmal’),
(367, 7, 92, ‘K McCallan’),
(368, 7, 92, ‘Kyle McCallan’),
(369, 7, 93, ‘J Mooney’),
(370, 7, 93, ‘John Mooney’),
(371, 5, 60, ‘M Haq’),
(372, 5, 60, ‘Misbah’),
(373, 7, 94, ‘Kevin OBrien’),
(374, 5, 61, ‘M Aamer’),
(375, 5, 61, ‘Aamir’),
(376, 5, 61, ‘Mohammad Aamer’),
(377, 7, 95, ‘Niall OBrien’),
(378, 5, 62, ‘S Ajmal’),
(379, 5, 62, ‘Saeed’),
(380, 5, 62, ‘Saeed Ajmal’),
(381, 7, 96, ‘B Rankin’),
(382, 7, 96, ‘Boyd Rankin’),
(383, 7, 97, ‘P Stirling’),
(384, 7, 97, ‘Paul Stirling’),
(385, 5, 63, ‘S Butt’),
(386, 5, 63, ‘butt’),
(387, 5, 63, ‘Salman Butt’),
(388, 7, 98, ‘R West’),
(389, 7, 98, ‘Regan West’),
(390, 5, 64, ‘S Afridi’),
(391, 5, 64, ‘afridi’),
(392, 5, 64, ‘Shahid Afridi’),
(393, 7, 99, ‘A White’),
(394, 7, 99, ‘Andrew White’),
(395, 7, 100, ‘G Wilson’),
(396, 7, 100, ‘Gary Wilson’),
(397, 5, 65, ‘S Hasan’),
(398, 5, 65, ‘Hasan’),
(399, 5, 65, ‘Shahzaib Hasan’),
(400, 5, 66, ‘S Malik’),
(401, 5, 66, ‘Malik’),
(402, 5, 67, ‘S Tanvir’),
(403, 5, 67, ‘Tanvir’),
(404, 5, 67, ‘Sohail Tanvir’),
(405, 5, 68, ‘U Gul’),
(412, 1, 31, ‘filtoph’),
(407, 5, 69, ‘Y Arafat’),
(408, 5, 69, ‘Arafat’),
(409, 5, 69, ‘Yasir Arafat’),
(410, 5, 70, ‘S Akhtar’),
(411, 5, 70, ‘Akhtar’),
(413, 1, 31, ‘filtoph’),
(414, 1, 30, ‘l.right’),
(415, 1, 27, ‘shah’),
(416, 5, 55, ‘younus’),
(417, 5, 55, ‘yusaf yuhana’),
(418, 5, 55, ‘yusavyuhana’),
(419, 5, 55, ‘yunus khan’),
(420, 5, 55, ‘y .khan’),
(421, 5, 55, ‘younus khan’),
(422, 1, 25, ‘pitarshan’),
(423, 1, 25, ‘pitersen’),
(424, 1, 25, ‘pitersan’),
(425, 1, 25, ‘kevin peterson’),
(426, 5, 55, ‘yunis khan’),
(427, 5, 55, ‘yunis’),
(428, 1, 19, ‘stuard broad’),
(429, 1, 18, ‘r.bopara’),
(430, 1, 18, ‘boppra’),
(431, 5, 60, ‘mis bahul haq’),
(432, 1, 17, ‘j.anderson’),
(433, 1, 17, ‘andersan’),
(434, 1, 16, ‘colligwood’),
(435, 12, 176, ‘tamim iqbal’),
(436, 12, 176, ‘iqbal’),
(437, 12, 176, ‘t.iqbal’),
(438, 5, 66, ‘mallik’),
(439, 5, 66, ‘shoeb malik’),
(440, 5, 66, ‘shoib malik’),
(441, 5, 66, ‘s.malik’),
(442, 12, 174, ‘shakib ul hasan’),
(443, 12, 174, ‘saqibul hasan’),
(444, 12, 174, ‘shakib’),
(445, 5, 68, ‘gul’),
(446, 5, 68, ‘umer’),
(447, 12, 174, ‘sakib’),
(448, 5, 70, ‘sohib akhtar’),
(449, 5, 70, ‘sohibakhtar’),
(450, 6, 71, ‘c.gayle’),
(451, 6, 83, ‘sarvan’),
(452, 9, 116, ‘k sangakara’),
(453, 9, 116, ‘k sangkara’),
(454, 9, 116, ‘sangkara’),
(455, 9, 116, ‘kumar sangakara’),
(456, 3, 146, ‘vectori’),
(457, 6, 85, ‘tailor’),
(458, 3, 15, ‘tailor’),
(459, 9, 117, ‘m.muralitharan’),
(460, 9, 117, ‘muttiah muralidharan’),
(461, 9, 117, ‘murlitharan’),
(462, 9, 117, ‘murali’),
(463, 9, 117, ‘muralidharan’),
(464, 3, 12, ‘jacob oram’),
(465, 9, 119, ‘t dilsan’),
(466, 9, 119, ‘t.dilshan’),
(467, 9, 119, ‘dilsan’),
(468, 3, 7, ‘macullam’),
(469, 3, 7, ‘b macullam’),
(470, 3, 7, ‘b macullum’),
(471, 2, 35, ‘growth’),
(472, 11, 161, ‘youraj’),
(473, 11, 161, ‘youraj sing’),
(474, 9, 120, ‘jayasurya’),
(475, 9, 120, ‘s.jayasurya’),
(476, 9, 120, ‘Ps.jaisurya’),
(477, 9, 120, ‘s.jaisurya’),
(478, 9, 120, ‘jaysurya’),
(479, 9, 120, ‘sanath jayasuriya’),
(480, 11, 160, ‘r. p. singh’),
(481, 11, 160, ‘r.p.singh’),
(482, 11, 160, ‘rp.singh’),
(483, 9, 120, ‘s.jaysurya’),
(484, 9, 120, ‘sanath jayasoorya’),
(485, 9, 120, ‘jaisurya’),
(486, 11, 160, ‘r.p singh’),
(487, 11, 160, ‘rpsing’),
(488, 11, 159, ‘r shrma’),
(489, 11, 159, ‘r.sharma’),
(490, 11, 159, ‘rohitsharma’),
(491, 9, 121, ‘m jayawardina’),
(492, 9, 121, ‘jayawardena’),
(493, 11, 159, ‘mr. rohit sharma’),
(494, 11, 159, ‘rohit sarma’),
(495, 9, 124, ‘l.malinga’),
(496, 9, 124, ‘l.malga’),
(497, 11, 158, ‘isant sarma’),
(498, 11, 158, ‘i shrma’),
(499, 11, 158, ‘sharma’),
(500, 9, 125, ‘mathew’),
(501, 11, 158, ‘i.sharma’),
(502, 11, 158, ‘ishant shrma’),
(503, 11, 158, ‘iasant sharma’),
(504, 11, 158, ‘ishaant’),
(505, 11, 155, ‘ifran pathan’),
(506, 11, 155, ‘irfan patan’),
(507, 11, 149, ‘gawtham’),
(508, 11, 149, ‘goutam gambhir’),
(509, 11, 149, ‘gambher’),
(510, 10, 131, ‘greame smith’),
(511, 10, 131, ‘greem smith’),
(512, 10, 131, ‘grame smith’),
(513, 11, 149, ‘g gambir’),
(514, 11, 149, ‘gautam gambheer’),
(515, 11, 149, ‘gumber’),
(516, 10, 134, ‘broucher’),
(517, 10, 134, ‘m.boucher’),
(518, 11, 149, ‘gamber’),
(519, 10, 135, ‘ab devilliers’),
(520, 10, 135, ‘devilers’),
(521, 10, 135, ‘a b de villiers’),
(522, 10, 135, ‘devillers’),
(523, 10, 135, ‘a.devillers’),
(524, 10, 135, ‘ab d viliyars’),
(525, 10, 135, ‘ab.devilliers’),
(526, 10, 135, ‘a.b. devillies’),
(527, 10, 136, ‘paul duminy’),
(528, 10, 136, ‘dummny’),
(529, 10, 136, ‘j.p. duminy’),
(530, 10, 137, ‘gibs’),
(531, 10, 137, ‘h.gibbs’),
(532, 10, 137, ‘gibes’),
(533, 10, 137, ‘gibse’),
(534, 10, 138, ‘j.kalis’),
(535, 10, 138, ‘jh kallis’),
(536, 10, 138, ‘kalis’),
(537, 10, 138, ‘kallies’),
(538, 10, 143, ‘pitarshan’),
(539, 10, 143, ‘pitersen’),
(540, 10, 143, ‘pitersan’),
(541, 10, 144, ‘dayl sten’),
(542, 10, 144, ‘dal steyn’),
(543, 10, 144, ‘dail steyn’),
(544, 10, 144, ‘dell stene’),
(545, 10, 144, ‘dale styen’),
(546, 10, 144, ‘d.steyn’),
(547, 10, 144, ‘styen’),
(548, 10, 145, ‘rd merve’);

via Nettuts+ by Victor Escobedo on 6/9/09

Developing a well-rounded aesthetically pleasing website can be a daunting task even for the most seasoned web developer. You must identify current trends and standards and determine ways to incorporate them into your designs. Luckily, there are many free tools which are available that can help you speed up your efforts and work in a more efficient manner. Below are 20 tools which are sure to benefit all developers.

Typetester

Typetester is an online application for comparing how different fonts and font attributes will appear on a given set of text.
Its primary role is to make the life of a web designer easier by allowing them to quickly and easily visually compare different typefaces.

pForm

Create a php form in seconds with this free and easy to use tool. If you need a little more power you can check out its parent program
MachForm or great alternatives wufoo and formspring (both of which offer limited free versions and paid premium versions).

ColourLovers

An international site created for color lovers. You can search the site for color palettes that you may use for projects or create new
palettes which can be rated by peers. Great for inspiration or critique of design ideas.

Firebug

Firebug integrates with Firefox to put a wealth of web development tools at your fingertips while you browse. You can edit, debug, and monitor
CSS, HTML, and JavaScript live in any web page. This is probably one of the most widely used web developer tools out there. If you don’t have it,
get it now!

HTML Entity Character Lookup

Need to know how to display the trademark symbol on one of your pages, this tool if just for you. The HTML Entity Lookup searches the html
entities for matches to the searched character based on how the character looks. For instance, the letter “c” would match © and ¢ entity, because
of the way they look. This is really a tool that you need to try to understand how useful it is (also available as a dashboard widget for you Mac
users).

960 Grid System

The 960 Grid System is an effort to streamline web development workflow by providing commonly used dimensions, based on a width of 960 pixels.
There are two variants: 12 and 16 columns, which can be used separately or in tandem. Watch an in depth screencast on this framework.

Em Calculator

Em Calculator is a small JavaScript tool which allows you to enter a size in pixels and displays what the corresponding em value would be.
This tool is extremely easy to use and handy for a quick reference.

Browser Shots

Browser Shots allows you to view your website in around 100 different browsers on 4 different platforms to determine the ultimate cross browser
support. Given how many different types of configurations exists today, it is important to ensure that your site looks its best on as many platforms
as possible.

Icon Finder

Iconfinder provides high quality icons for web designers and developers in an easy and efficient way. You simply type in a keyword into the search
box and Iconfinder brings you back icons beautiful icons which you can freely use.

WhatTheFont

Want to know the font that your favorite blog uses, this tool can help you. Just upload an image of the font that you are intrigued about and the
tool will do its best to match it with the right font. If you would rather trust a real person, the WhatTheFont forums are a great resource as well.

MeasureIt

A great Firefox plugin that lets you draw out a ruler to get the pixel width and height of any elements on a webpage.

ColorZilla

With ColorZilla you can get a color reading from any point in your browser, quickly adjust this color and paste it into another program. You can zoom
the page you are viewing and measure distances between any two points on the page.

Pingdom

Pingdom loads a complete HTML page including all objects (images, CSS, JavaScripts, RSS, Flash and frames/iframes). It mimics the way a page is loaded
in a web browser and then displays how long each of those elements took to load using nice visual time bars. This can be very useful when you are trying
to improve the efficiency of your site.

Test Everything

Test Everything lets you run your website though approx. 100 different validators and testers, all from the comfort of one application. This can save
an enormous amount of time during the testing phase of your site development.

CSS Sprite Generator

Sprites can increase the speed of your site by reducing the number of HTTP requests and are therefore becoming more popular. Using them, however,
requires a good amount of foresight and planning which can make using them somewhat difficult. This amazing online tool allows you to upload your
images in a zip file where they are then combined into a sprite. Once the sprite is created, it creates the CSS that you will need to use the sprite
and allows you to download all of if free of charge.

Web Developer Toolbar

An extremely useful Firefox plugin which provides many tools which web developers use on a daily basis. Great for quickly validating your XHTML or
inspecting HTTP header information.

Domainr

There are plenty of tools available that tell you whether a domain is taken or not. What sets Domainr apart is that it takes your query and then
tries to create a more memorable name. Domainr helps you explore the entire domain name space beyond the ubiquitous and crowded .com, .net and .org.
Inspired by jish.nuburri.to and del.icio.us this tool can come in handy when you just can’t think of a unique domain name.

Font Burner

Font Burner is a free online tool that allows you to search through over 1000 fonts they have available. Once you have found a font you like, the
tool provides you with a snippet of code which allows you to use the font on your site, free of charge. The font will then be displayed on every
computer, regardless if the user has the font installed or not.

Smush.It

Smush.It is a neat application which uses non-lossy image optimization tools to squeeze the last bytes out of your images

Load Impact

Are you about to release a product or come out of beta and are wondering whether your site will be able to take the increased traffic? Load Impact
is a free tool which tests your site at different load levels and then displays your results in an easy to understand graph.

The End!

Well hopefully you will find something useful in this list. It is by no means an exhaustive list, but simply a list of tools that I have found to
be useful in the past and that you may as well.

Things you can do from here:

10 Essential SQL Tips for Developers

Leave a comment

via Nettuts+ by Eric Shafer on 6/4/09

SQL is yet another essential language for developers wishing to create data-driven websites. However, many developers are unfamiliar with various aspects of SQL; so in this article, we’ll analyze ten essential tips.

 

1. Use The Right Language

Web developers often have a plethora of languages at their disposal. It is crucial for developers to use the proper language for the job.

Let’s review the following code. In the first example, the developer is selecting all columns and all rows from the customer table. In the second example, the developer is selecting only the first name, last name and address from the customer table for a single customer with ID 1001. Not only does the second query limit the columns that are returned, it will also perform better.

SELECT * FROM customer;
SELECT firstName, lastName, shippingAddress FROM customer WHERE customerID = 1001;

When you are writing code, make sure that it works efficiently.

Too many developers are satisfied with code that performs adequately on 100 rows of data, with little thought ahead to when the database will have 10,000 rows.

2. Secure Your Code

Databases store valuable information. Because of this fact, databases are often prime targets for attack. Many developers are unaware that their code has critical security vulnerabilities, which is a very scary fact not only for clients, but also for you. Currently, developers can be held legally accountable if their own personal negligence results in a database security risk that is then exploited.

In case you aren’t convinced about the seriousness of database security, these two articles should help drive the point home:

“The FBI and Virginia State Police are searching for hackers who demanded that the state pay them a $10 million ransom by Thursday for the return of millions of personal pharmaceutical records they say they stole from the state’s prescription drug database.”
Read the Washington Post article

“Kaspersky Lab, a Moscow-based security company, admitted today that a database containing customer information had been exposed for almost 11 days and that it only learned of the breach when Romanian hackers told the firm about it last Saturday.”
Read the ComputerWorld article

Let’s review another example using pseudo-code.

// Theoretical code
txtUserName.setText("eshafer' OR 1=1");
query = "SELECT username, password FROM users WHERE username = '" + txtUserName.getText() + "';";

// Final statement
query = "SELECT username, password FROM users WHERE username = ejshafer OR 1=1;"

Hopefully you looked at that code above and noticed the vulnerability. The query will end up selecting all username and password records from the table, because 1 always is equal to 1. Now, this particular example doesn’t accomplish much for the would-be hacker. However, there are nearly limitless possibilities for additional malicious code that can be added with catastrophic results.

 

How Can You Write Secure Code?

The solution is often DBMS specific; that is, it varies between MySQL, Oracle or SQL Server. In PHP with MySQL, for example, it is usual to escape parameters using the function mysql_real_escape_string before sending the SQL query. Alternatively, you can utilizeprepared statements to “prepare” your queries. Make it your mission to understand the DBMS with which you are working and the inherent security issues.

SQL injection isn’t the only security vulnerability for databases and developers to worry about, however, it is one of the most common methods of attack. It is important to test your code and be familiar with the latest security issues for your DBMS in order to protect against attacks.

3. Understand Joins

Single table SQL select statements are rather easy to write. However, business requirements often dictate that more complex queries must be written. For example, “find all orders for each customer, and display the products for each order”. Now, in this particular situation, it would be likely that there is a customer table, an order table, and an order_line table (the last would be to resolve a possible many-to-many record relationship). For those who are slightly more familiar with SQL, it is readily apparent that a table join, actually, two table joins will be required for this query. Let’s look at some sample code.

SELECT customer.customerID, order.order_id, order_line.order_item
FROM customer
	INNER JOIN order
		ON customer.customerID = order.customerID
	INNER JOIN order_line
		ON order.orderID = order_line.orderID;

Alright, simple enough. For those who don’t know, the code above is an inner join. More specifically, the code above is an equi-join.
Let’s define the various types of joins.

Inner Joins: The basic purpose of inner joins is to return matching records.

Outer Joins: Outer joins do not require each record to have a matching record.

  • Left outer join: A left outer join of tables A and B will return all matching records of A and B, as well as any non-matched records from the left table, in this case, A.
  • Right outer join: A right outer join of tables A and B will return all matching records of A and B, as well as any non-matched records from the right table, in this case, B.
  • Full outer join: A full outer join of tables A and B will return all matching records of A and B, as well as any non-matched records from both tables.

Special thanks to Ronald Erdei for the images.

Self Joins

There is one last type of join that must be considered, which is a self join. A self join is merely a join from a table to itself.

EMPLOYEE TABLE
-EmployeeName
-SupervisorID

In this situation, in order to find which employees are supervised by a given employee, a self join would be required.

Hopefully this clarifies the basic tenets of joins, as they are one of the primary features of SQL that makes it such a powerful database language. Make sure you use the proper join for your given situation.

4. Know Your Data Types

In SQL, typically each table column has an associated data type. Text, Integer, VarChar, Date, and more, are typically available types for developers to choose from.

When developing, make sure you choose the proper data type for the column. Dates should be DATE variables, numbers should be a numeric type, etc. This becomes especially important when we deal with a later topic: indexing; but I’ll demonstrate an example of poor knowledge of data types below:

SELECT employeeID, employeeName
FROM employee
WHERE employeeID = 112457891;

Looks fine based on what we currently know, correct? However, what if employeeID is actually a string. Now we’ve got a problem, because the DBMS might not find a match (because string data types and integers are different types).

Therefore, if you’re using indexing, you’ll probably be perplexed as to why your query is taking forever, when it should be a simple index scan. This is the reason that developers need to pay special attention to data types and their applications. Non-key attributes which are IDs are often string types, as opposed to integers, because of the increased flexibility that is granted. However, this is also a trouble area for junior developers, who assume that ID fields will be integers.

Properly utilizing data types is essential to proper database programming, as they directly lead to query efficiency. Efficient queries are essential to creating quality, scalable applications.

5. Write Compliant Code

All programming languages have standards which web developers should be aware, and SQL isn’t any different. SQL was standardized by ANSI and then ISO, with new revisions to the language being occasionally submitted. The latest revision is SQL:2008, although the most important revision that developers should be aware of is SQL:1999. The 1999 revision introduced recursive queries, triggers, support for PL/SQL and T-SQL, and a few newer features. It also defined that the JOIN statements be done in the FROM clause, as opposed to the WHERE clause.

When writing code, it is important to keep in mind why standards-compliant code is useful. There are two primary reasons why standards are used. The first is maintainability, and the second is cross-platform standardization. As with desktop applications, it is assumed that websites will have long lifespans, and will go through various updates to add new functionality and repair problems. As any systems analyst will tell you, systems spend a majority of their lifespan in the maintenance phase. When a different programmer accesses your code in 2, 5 or 10 years, will they still be able to understand what your code is doing? Standards and comments are designed to promote maintainability.

The other reason is cross-platform functionality. With CSS, there is currently an ongoing standards battle between Firefox, Internet Explorer, Chrome, and other browsers about the interpretation of code. The reason for the SQL standards is to prevent a similar situation between Oracle, Microsoft and other SQL variants such as MySQL.

6. Normalize Your Data

Database normalization is a technique to organize the contents of databases. Without normalization, database systems can be inaccurate, slow, and inefficient. The community of database professionals developed a series of guidelines for the normalization of databases. Each ‘level’ of normalization is referred to as a form, and there are 5 forms, total. First normal form is the lowest level of normalization, up to fifth normal form, which is the highest level of normalization.

  • First Normal Form (1NF): The most basic level of data normalization, first normal form requires the elimination of all duplicate columns in a table, and also requires the creation of separate tables for related data, and identification of each table with a primary key attribute.
  • Second Normal Form (2NF): Meets all the requirements of first normal form, and creates relationships between tables using foreign keys.
  • Third Normal Form (3NF): Meets all the requirements of second and first normal forms, and removes all columns that are not dependent upon the primary key. Third normal form also removes all derived attributes, such as age.
  • Fourth Normal Form (4NF): Fourth normal form adds one additional requirement, which is the removal of any multi-valued dependencies in relationships.
  • Fifth Normal Form (5NF): Fifth normal form is a rarer form of normalization, in which case join dependencies are implied by candidate keys (possibly primary key values).

In the reality of database development, getting to 3NF is the most important jump. 4NF and 5NF are a bit more of a luxury (and sometimes a nuisance) in database development, and are rarely seen in practice. If you’re struggling with the concepts, or remembering the first three forms, there is a simple relation. “The key, the whole key, and nothing but the key.”, which relates to 1NF, 2NF, and 3NF.

The Benefits of Normalization

Now, without venturing too far into database theory, let’s simply focus on the benefits of normalization. As the data progresses through the normalization forms, it becomes cleaner, better organized, and faster. Now, with a small database that has only 5 tables and 100 rows of data, this won’t be readily apparent. However, as the database grows, the effects of normalization will become much more apparent with regards to speed and maintaining data integrity. However, there are some situations in which normalization doesn’t make sense, such as when normalizing the data will create excessively complex queries required to return the data.

7. Fully Qualify Your Database Object Names

Now, this is a commonly ignored point; in fact, all the sample code I’ve demonstrated in this tutorial has essentially violated this tip. In terms of database development, a fully qualified object name looks as follows: DATABASE.schema.TABLE. Now, let’s look at why fully qualified names are important, and in what situations they are necessary. The purpose of a fully qualified object name is to eliminate ambiguity. Beginning developers rarely have access to multiple databases and schemas, which complicates the issues in the future. When a given user has access to multiple databases, multiple schemas, and the tables therein, it becomes crucial to directly specify what the user is attempting to access. If you have an employee table, your boss has an employee table, and the schema that your web application is running on has an employee table, which are you really attempting to access?

Logically, the fully qualified name would look like DATABASE.SCHEMA.OBJECTNAME, however, syntactically (ie, in executable statements), it would simply be SCHEMA.OBJECTNAME. Although various DBMSes do have various syntax differences, the above style is generally applicable.

-- Not ''SELECT * FROM table''
SELECT * FROM schema.TABLE

Fully qualifying your database names is important when working with databases that are larger and are used by multiple users and contain multiple schemas. However, it is a good habit to get into.

8. Understand Indexing

A database index is a data structure that improves the speed of operations on a database table. Indexes can be created using one or more columns of a database table, providing the basis for both rapid random look ups and efficient access of ordered records. Indexing is incredibly important when working with large tables, however, occasionally smaller tables should be indexed, if they are expected to grow. Small tables that will remain small, however, should not be indexed (for example, if your book is 1 page, does it make sense to turn to the index?)

Many developers write their code and test it on a table with 10, or 100 rows, and are satisfied when their code performs adequately. However, as the table grows to 10,000, or 1,000,000 rows, the code slows to a snail’s pace, and the client might as well go out to lunch waiting for the code to execute.

When a query searches a database for a matching record, there are two ways in which the search can be performed.

  • The first, and the slowest way is a table scan. In a table scan, the query searches every record in the table looking for a match.
  • The second, and the faster way is an index scan. In an index scan, the query searches the index to find the record. In non-database terms, a table scan would be the equivalent to reading every page in a book looking for a word, while an index scan would be the equivalent of flipping to the back of the book, finding the word, flipping to the specified page, and then reading the words on the page to find the word.

It is important to remember that indexes need to be rebuilt occasionally, as data is added to the table. Additionally, while indexes increase data access performance, it slows the modification of data. Because of this, most DBMSes have an option to temporarily disable an index to facilitate mass data modification, and then allow it to be re-enabled and rebuilt later.

9. Properly Use Database Permissions

When working with a database that has multiple users, it is important to properly handle various database permissions. Obviously, most databases have an administrator user, but does it always make sense to run your queries as the administrator? Additionally, would you want to provide all your junior developers and users with your administrator credentials in order to write their queries? Most likely not. The various possible permissions for your database depend on your DBMS, but there are common themes between them.

In MySQL, for example, typing “SHOW TABLES” will reveal a list of tables on your database, of which you will likely notice a ‘user’ table. Typing ‘DESC user’ will reveal that there are various fields on the user table. Along with a host, username and password, there is also a list of privileges that can be set for a user. Additionally, there is a ‘db’ table that governs more privileges for a specific database.

SQL Server provides the GRANT, DENY, and REVOKE statements to give or take away permissions from a user or role. Additionally, SQL Server provides roles such as db_writer, db_reader. Often, unknowledgeable developers grant these roles (as opposed to creating their own, custom roles) to other users, resulting in overall lowered database security, as well as the possibility of a user performing an unwanted operation.

Properly managing your database user permissions is essential to managing not only security, but also providing a foundation for faster development and protecting data integrity.

10. Know Your DBMS Limitations

Databases are powerful tools, however, they aren’t without limitations. Oracle, SQL Server, and MySQL all have unique limitations on things such as maximum database sizes, maximum number of tables, and others. Many developers unknowingly choose a DBMS solution for their project without planning or considering the later requirements of their database.

Refer to your DBMS manual for the various limitations, for example, SQL Server limitations are located on the MSDN Website:http://msdn.microsoft.com/en-us/library/ms143432.aspx

Conclusion

In this article, we reviewed 10 essential tips for SQL developers. However, there are many other useful SQL techniques that could be mentioned; so please leave your thoughts in the comments, whether you think this article covered all the essential topics, or you think one was left out. Keep developing, and remember, the code you write supports the internet infrastructure, and without you, the internet would not be as successful as it is.

 

 

    

 

 

 
 

Things you can do from here:

 
 

Mahesh Prasad

Leave a comment

Welcome to You on my Blog

Hello friends!

Leave a comment

Welcome to you on my blog.

%d bloggers like this: