Webcopy guidelines!

Some guidelines from Webcopy books.

Good web copy tends to:

  • Be clear and more concise
  • Use shorter sentences and paragraphs
  • Depend less on linear reading
  • Be a lot easier to scan with more headings, links, and bullet lists

The copy should be written in a way that’s optimized for web reading.

-Page titles:

  • Briefly describe the contents of the page
  • Contain the most important information at the start of the title, not at the end
  • Use short, concise words

-Include most important information in the first paragaph, and keep the language simple

-Include headings and subheadings to signpost (guide) your idea

  • Use good keywords at the beginning of the subheadings
  • Have visual distinction between different levels of heading

-Use bulleted or numbered list instead of lists in paragraph form. When using lists:

  • Try to write all things in the list with similar grammar and structure
  • Use numbered lists for anything with a sequence or hierarchy and bulleted lists for everything else
  • Use consistent capitalization and formatting

-Use pull-quotes to highlight key points and add visual interest

-Use hyperlinks. When using hyperlinks:

  • Link to next steps the reader is likely want to take or next steps you’d like them to take
  • Use termilogy that make sense to your readers
  • Link approriate words, never use “click here” or “more”. But sometimes that is fine(in my opinion).
  • Two links that link to the same destination should have the same link text and two links with the same link text should link to same destination.
  • Links with highest click through rates contain 5 to 7 words ( really not sure about this)
  • Include hyperlinks within the paragraph where possible

Writing useful, functional and concise copy:

  • Who would read your content?
  • Why would they read this? Use 5 WHY questions to dig depth into content.
  • What do they need and already know?
  • What should happen next?

How to use authentic voice?

  • Write to the reader, not to yourself
  • Simple tip- call the reader YOU
  • Freewriting as you talk to someone. Don’t worry about your grammar, spelling or sentence construction.
  • Concentrate on getting your ideas down as if you’re talking to someone.
  • Anticipate questions and include them in the flow.

Advice for common pages

-Main/Home page:

  • Show the visitors that the website is what they’re looking for.
  • Suggest next steps.
  • Simplicity is key.

-About page:

  • Begin with a brief summary of what the site offers.
  • Aviod diving straight into bio about the site’s creator.
  • An about page is not a contact page.

-Services/Hire me page:

  • Inform the readers about whatt you offer and persuade them to buy the services
  • Don’t get bogged down in technical detail
  • Focus on the benifits for the prospect of the outcome. It’s not about how good you make yourself sound, it’s about how good you make the reader feel about what life will be like after they hire you.
  • Get testimonials
  • Publish client list

-The about the author/ bio page:

  • Create trust
  • Bio page is the perfect place to etablish credibility
  • Talking about your experience, achievements, and if it’s significant, how long you have been involved in the industry.
  • We trust people we like. Add something personal about your self.
  • Visitors want to hear an authetic voice.

Writing peruasive copy:

1.Uderstand clearly what you want visitors to do

2.Open with the benifits – the real benifits

3.When you really need to do persuade, use problems. Describe aspects of the problem they might not have considered. Using this tatic only on the most important actions you want visitors to take.

4.Don’t write an essay. Copy is different.

5.You ‘ve got to use YOU.

6.Finish the job by removing all objections. List all possible objections then write reasons why the objections aren’t valid.

Web copy blueprint:

-Know your objectives – target audience – your product or service

1.What is the problem? – write down your target audience problem

2.Why hasn’t the problem been solved? – write down reasons why the problem continues, persits, or longers

3.What is possible? – write down what’s possible, paint a picture of the way things will be when your prospects’ problems are solved.

4.What is different now? Write a few sentences about what differentiate your product or service

5.What should you do now? State clearly what you want your prospects to do – call to action

-Put the blueprint to work:

Step1: Inject emotion. People buy on emotion and justify with logic

Step2: Add bullect points, bonus, guarantee, and close????.

  • Bullet: state the benifits and the follow up by painting a picture of how your viewer’s life will change when he or she gets that benifits or by evaluating the desirability of that benifits by injecting emotion, drama, or intrigue. Bullets need to be powerful and tight.
  • Bonuses: free bonuses, gifts should be attached to a deadline
  • Guarantee
  • Close

Step3: Add credibility, building elements such as testimonials, interesting stories or case studies, significant facts, quotes or statistics.

Step4: Add psychological devices ????( update later)

Step5: Replacing all rational words with emotional words.

August 24, 2011 at 4:36 pm Leave a comment

From concept to consumer!

Just some key notes from the book “From concept to consumer”:

The invention is perhaps 5% of all the factors for success. Old model to develop product is Engineer –> Manufacture –> Market. But it is not suitable for the fast-changing business environment. The new model is Engineer — Manufacture — Market. The three phases can be executed parallel.

To get customer feedback early is important. But conventional marketing testing is less useful in the case products are results of a visionary leaders.

Less is more. The developer should focus to the core features of product. Additional features sometimes make products difficult to use and more cost to develop.

Excellent product is one so useful in function and clear in its operation that its users, within days or weeks, wonder how they ever got along without it.

A successful product design is one that meets the needs of its customers at a price they can afford.

Top ten rules when designing products:

1.Success depends on so much more than just having aa great product. Build it and they will come rarely works (not really understand this).

2.Manage your development using a small, focused, cros-functioned team with a strong product manager, and with authority to make decision quickly (ideally 5 to 10).

3.Be creative in the development process as you are with the invention it self.

4.Don’t obsess over developing the perfect product. Being early to market is often more important.

5.Market tests your product using simple, common sense approaches such as talking to and watching how potential customers work. Go with your gut, but do some sanity checks along the way.

6.Do what you do best and lest other companies do what they do best (and monitor the progress and results of subsidiaries thoroughly – my opinion :-) ) . Don’t reinvent what has already been done.

7.Think like your competitors. Plan your next product while doing the first. Then offer the best competitive response to your own product.

8.Understand the sales and distribution channels, you’ll be using and make sure your product costs allow for a competitive selling price.

9.Monitor sell thoroughly and manage your supply chain closely. Advoid building huge inventories of parts or products before you know how well your product will sell. It’s better to be out of stock than over stock.

10.Don’t believe your own hype.

Ph

July 27, 2011 at 5:03 pm Leave a comment

Stored procedure trong SQL Server (version 2000)

Định nghĩa: Stored procedure là tập các câu lệnh SQL được lưu trữ và biên dịch thành các Database Object do Database server quản lý. Sử dụng strored procedure sẽ nâng cao tính dùng lại, tăng hiệu suất chương trình, giảm tải cho Application server hay Web server vì công việc tính toán được chuyển cho Database server.

Định dạng Stored Procedure: cấu trúc chính của stored procedure thường có 2 phần: header và body. Header bao gồm các khai báo tên stored procedure, các parameter input và output. Body là tập hợp các câu lệnh SQL thực hiện tính toán.

Tạo stored procedure:

CREATE PROCEDURE  procedure_name

[ {@parameter  datatype} [=default] [OUTPUT] ]  [,1..n]

AS

SQL statements [1..n]

-procedure_name tối đa 128 ký tự và duy nhất trong database

-số lượng input và output tối đa là 2100

-Một stored procedure có dung lương tối đa là 128 MB

-Gọi stored procedure trong SQL dùng câu lệnh sau:   EXECUTE  procedure_name  [parameters]

Giá trị trả về từ stored procedure: giá trị trả về từ stored procedure có thể nhận được bằng các cách sau:

-Result set: các câu lệnh select thường trả về tất cả record có được

-Output parameter: gán giá trị cần trả về cho output parameter

-Return value: sử dụng câu lệnh return để trả về giá trị. Tuy nhiên, return chỉ trả về giá trị thuộc kiểu integer.

Identifier trong Stored Procedure:  các identifier được tên theo qui tắc sau:

-từ 1 đến 128 ký tự

-ký tự đầu tiên phải là : uderscore, @, #

-các ký tự tiếp theo: có thể thêm ký tự chữ và ký tự số

-không được chứa các ký tự đặc biệt, ngoại trừ @,#,_

-nếu các identifier không theo luật trên phải đặt giữa dấu ” ” hay [ ]

Data type: sử dụng data type giống như SQL Server

Variable: có hai loại local variable và global variable

-Local variable: biến local bắt đầu bằng @. Biến local chỉ có giá trị trong tầm vực của một stored procedure. Khai báo biến local dùng cú pháp:  DECLARE @variable_name  datatype. Để gán giá trị cho local variable, dùng lệnh  SELECT @variable_name = value hay SET  @variable_name = value. Đối với SELECT có thể gán giá trị cho nhiều biến cùng một lệnh. SET chỉ gán giá trị cho 1 biến. Tuy nhiên SET được sử dụng nhiền hơn. Để hiển thị giá trị của biến dùng lệnh  SELECT  @variable_name  hay PRINT  @variable_name.

-Global variable: Biến Global thường được quản lý bởi server. Biến Global chứa các giá trị về server hay session của user hiện tại. Biến Global có thể truy cập ở bất cứ đâu. Các biến Global thường chỉ trả về một giá trị và coi là scalar function. Một số biến Global thông dụng: @@identity: giá trị identity cuối cùng được cấp phát bởi hệ thống trong session hiện tại. @@error chứa giá trị 0 là stored procedure thực thi thành công, khác 0 là giá trị lỗi trả về khi câu lệnh SQL trong stored procedure có lỗi. @@rowcount: số record bị ảnh hưởng bởi câu lệnh SQL cuối cùng trong session hiện tại.

Comment:

-Một hàng:  –

-Nhiều hàng:   /* … */

Statement block: các câu lệnh SQL có thể đặt trong các khối lệnh. Các lệnh trong khối lệnh được đặt giữa BEGIN và END.

IF statement:
     IF  boolean expression
            BEGIN
                       SQL statements
           END
    [ELSE
          BEGIN
                       SQL statements
          END
      ]
-Sử dụng IF và EXISTS
  IF  [NOT]  EXISTS  (subquery)
            BEGIN
                       SQL statements
           END
    [ELSE
          BEGIN
                       SQL statements
          END
      ]
Cursor: khi làm việc với cursor sử dụng các bước sau:
1.Định nghĩa cursor và xác định tính năng
2.Xác định định vị trí của cursor
3.Di chuyển cursor đến record cấn phải lấy về
4.Xử lý thông tin trên record đã lấy về
5.Lập lại bước 3,4
6.Đóng cursor và giải phóng tài nguyên
DECLARE cursor_name cursor
FOR select_statement
(SET cursor_name
FOR select_statement)
OPEN cursor_name
FETCH  [Next|Prior|First|Last|Absolute {n | @nvar} | Relative {n|@nvar}]
FROM [GLOBAL] cursor_name
INTO var_name [1,..,n]
WHILE (@@fetch_status = 0)
   BEGIN
      SQL statements
     FETCH  [Next|Prior|First|Last|Absolute {n | @nvar} | Relative {n|@nvar}]
     FROM [GLOBAL] cursor_name
     INTO var_name [1,..,n]
  END
CLOSE cursor_name
DEALLOCATE  cursor_name
Các biến Global liên quan:
@@fetch_status: 0 : thành công; -1: cuối recrod set hay Fetch fail; -2: record bị mất (đã bị xóa bởi process khác)
@@cursor_rows: số record trong block mà cursor chỉ tới
Các cursor nếu chưa DEALLOCATE thì có thể OPEN lại.
Lấy giá trị trả về từ stored procedure trong C#:
-Trường hợp trả về result set:
string connectionString = “– your connection string–”;
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(“–stored procedure — name”, conn);
cmd.Parameters.AddWithValue(“@parameter_name”, parametervalue);
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
    // your code here
}
reader.Close();
reader.Dispose();
conn.Close();
-Lấy giá trị trả về từ câu lệnh RETURN trong stored procedure:
string connectionString = “– your connection string–”;
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(“–stored procedure — name”, conn);
cmd.Parameters.AddWithValue(“@parameter_name”, parametervalue);
cmd.Parameters.Add(new SqlParameter(“@returnValue”), SqlType.Int);
cmd.Parameters["@returnValue"].Direction = ParameterDirection.ReturnValue;
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
cmd.ExecuteNoQuery();
int returnValue = (int) cmd.Parameters["@returnValue"].Value;
conn.Close();
-Lấy giá trị trả về từ OUTPUT parameter: vì RETURN statement chỉ trả về các giá trị thuộc kiểu int, nên khi cần trả về các kiểu khác, bạn có thể sử dụng OUTPUT parameter.
string connectionString = “– your connection string–”;
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(“–stored procedure — name”, conn);
cmd.Parameters.AddWithValue(“@parameter_name”, parametervalue);
cmd.Parameters.Add(new SqlParameter(“@output”), SqlType.Int); // bạn có thể thay đổi output type
cmd.Parameters["@output"].Direction = ParameterDirection.Output;
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
cmd.ExecuteNoQuery();
int returnValue = (int) cmd.Parameters["@output"].Value;
conn.Close();
Ph.

July 18, 2011 at 10:23 am Leave a comment

Solve “Update requires a valid *Command when passed DataRow collection with modified rows”!

When inserting/updating/deleting data from dataset and updating changes to database, error ”Update requires a valid *Command when passed DataRow collection with modified rows” can appear. Just create CommandBuilder object before calling Update method of DataSet. The CommandBuilder will help DataSet to create necessary commands (insert/update/delete) for the database operations.

Ph.

February 14, 2011 at 4:18 pm Leave a comment

Use LIKE operator to retrieve data from MS Acess in C#

Both following codes are the same.

1.Do not use command parameter

string  sql = “select * from table where col like  \”%abc%\”   “;

2.Use command parameter

string sql = “select * from table where col like   ?   ”;

OleDbCommand cmd = new OleDdCommand(sql, conn);

cmd.Parameters.AddWithValue(“col”, “%abc%”);

The second code seems to be the better one :-D !!!

 

Ph.

February 14, 2011 at 11:38 am Leave a comment

Older Posts


Categories


Follow

Get every new post delivered to your Inbox.