July - 2010 15

Dùng VS2008 và VS2010 trong nhóm

Ngày 14/04/2010 vừa rồi Microsoft chính thức giới thiệu phiên bản phát triển Visual Studio 2010 cho cộng đồng .NET. Tính đến hôm nay 17/05/2010 (hơn 1 tháng), Phước nghĩ đã có nhiều bạn chuyển qua sử dụng VS2010 rồi phải không ? (trong đó có Phước). Tuy nhiên hiện tại các dự án của bạn theo Phước nghĩ thì vẫn dùng VS2008 !

Vậy nếu bạn muốn dùng VS2010 để phát triển dự án mình đang viết trên VS2008 được không ? câu trả lời là hoàn toàn được (chỉ cần updrage solution và projects là xong).

Tuy nhiên khi làm dự án, các bạn không có làm một mình mà các bạn làm trong một nhóm. Vậy để upgrade lên VS2010 cho dự án bạn đang viết thì toàn bộ nhóm của bạn phải download và cài đặt VS2010.

Vấn đề ở chỗ trong nhóm mình có vài thành viên, máy tính không đủ mạnh và không thể nào upgrade lên VS2010 được, và điều kiện không cho phép nên bắt buộc họ phải sử dụng VS2008 (và chỉ VS008 mà thôi)

Vậy có cách nào sử dụng VS2008 và VS2010 trong nhóm được không ? câu trả lời vẫn là có, tuy nhiên phải dùng một vài tips như sau.

Bài viết này Phước chia sẽ kinh nghiệm hack để sử dụng VS2008 và VS2010 trong nhóm

  1. Trước tiên, check-in toàn bộ source của các bạn lên source control. (ở đây Phước sử dụng SVN)
  2. Copy file solution (.sln) và Paste vào cùng cấp với file .sln này, sau đó đổi tên lại thành [YourSolution].2010.sln chẳng hạn.
  3. Mở file [YourSolution].2010.sln lên bằng notepad và sửa nội dung file này lại như sau.
    a. Tìm nội dung
    		Microsoft Visual Studio Solution File, Format Version 10.00
    # Visual Studio 2008
    b. Sau đó sữa lại thành nội dung sau
    		Microsoft Visual Studio Solution File, Format Version 11.00
    # Visual Studio 2010
    Và cuối cùng thì lưu file .sln này lại. (các bạn để ý kỹ là sửa 10.00 thành 11.00 và 2008 thành 2010 mà thôi)
  4. Giờ bạn mở solution [YourSolution].2010.sln lên bằng VS2010. Màn hình conversion wizard hiện lên. Sau đó click vào buttion Finish để bắt VS2010 bắt đầu convert. Trong quá trình convert, nếu gặp project Web thì VS2010 hiện thông báo hỏi bạn muốn convert project Web này từ .Net framework 3.5 lên .Net framework 4.0 không ? đương nhiên là bạn phải chọn No rồi (vì bạn chọn Yes thì khi đó các bạn còn lại trong nhóm dùng VS2008 đâu có .Net framework 4.0 đâu!).
  5. Quá trình convert hoàn tất, build lại toàn bộ solution và đảm bảo rằng quá trình build lại phải success.
  6. Đóng solution lại, và về window exploer nơi lưu solution [YourSolution].2010.sln (và bạn thấy rằng một vài file đã được thay đổi, nhờ source của bạn đã được bind với source control, ở đây là SVN)
  7. Tìm đến các file project web (.csproj hoặc .vbproj), mở lên bằng notepad.
    a. Tìm dòng có nội dung sau
    		<Import Project="$(MSBuildExtensionsPath32)MicrosoftVisualStudio10.0WebApplicationsMicrosoft.WebApplication.targets" />
    b. Và thay thế dòng này thành dòng có nội dung như sau
    		<Import Project="$(MSBuildExtensionsPath)MicrosoftVisualStudio9.0WebApplicationsMicrosoft.WebApplication.targets" Condition="'$(Solutions.VSVersion)' == '9.0'" />
    <Import Project="$(MSBuildExtensionsPath32)MicrosoftVisualStudio10.0WebApplicationsMicrosoft.WebApplication.targets" Condition="'$(Solutions.VSVersion)' == '10.0'" />
    c. Làm tương tự cho các project web khác còn lại.
    Và cuối cùng lưu các projects web file này lại.
  8. Các file project: winform, class library, ... không cần làm gì hết.
  9. Và cuối cùng commit các thay đổi này lên source control của bạn (SVN).
  10. Nhờ bạn trong nhóm có sử dụng VS2008 get last souce code về và check thử solution có work không ?

Vì VS2010 có rất rất nhiều project ở đây Phước cũng chỉ có kinh nghiệm trên và project như web, winform, class library, .... còn lại rất nhiều project khác, nhất là project VC++ 2010 khác hoàn toàn với VC++2008, do đó nếu dự án của bạn có làm với các project VC++ này thì bạn có thể nhờ google giúp đỡ nhe.

Hy vọng với chút kinh nghiệm chia sẽ này, mà toàn bộ nhóm của bạn sẽ dùng VS2008 và VS2010 chung với nhau

Lời bình
Không có lời bình
Chủ đề
Tips
Đánh dấu
tips
 
July - 2010 05

Url của GraffitiCMS thân thiện SEO với Tiếng Việt

Ngày nay, bất kỳ trang web nào khi thiết kế đều phải tuân thủ theo 1 vài chuẩn của SEO nào đó. Trong đó có phần URL. Tuy nhiên GraffitiCMS do thiết kế là dùng cho người sử dụng ngôn ngữ Tiếng Anh, nên phần URL này đội ngũ coding không phân biệt cho lắm, khi đó nếu bạn viế một bài viết tiếng anh với tiêu đề sau:

Spain edge past resolute Paraguay

Thì khi đó URL của bài viết của bạn se là

http://....../spain-edge-past-resolute-paraguay/

Và rõ ràng là nó rất thân thiện với SEO.

Tuy nhiên đối với ngôn ngữ Tiếng Việt của mình thì sao ? Khi đó nếu bạn viết một bài với tiên đề là:

Cô bé Triều Tiên gảy đàn guitar siêu đẳng

Và khi đó URL của bài viết của bạn sẽ là

http://....../c-244-b-233-tri-u-ti-234-n-g-y-224-n-guitar-si-234-u-ng/

Woow, nhìn vào URL thì mình cũng không đọc được là gì nhỉ. Tuy nhiên nếu url của bạn là:

http://....../co-be-trieu-tien-gay-dan-guitar-sieu-dang/

và khi này thì bạn đọc vào URL cũng sẽ hiểu (đọc Tiếng Việt không dấu cũng dễ hiểu chứ sao) và khi đó URL này cũng thân thiện với SEO dùng Tiếng Việt.

Để làm được điều này với GraffitiCMS, bạn có 2 cách

  • Sửa core code của GraffitiCMS (vì GraffitiCMS open source nên bạn có thể check-out SVN về và sửa).
  • Viết 1 plugin.

Bài viết này Phước cung cấp cho bạn 1 plugin và khi đó bạn chỉ cần download plugin này về và upload lên host của bạn. Việc làm này rất dễ dàng hơn so với việc sửa core code của GraffitiCMS (do yêu cầu bạn phải biết kiến thức lập trình).

PhuocLe.GraffitiCMS.Plugins.VietnameseUrlFriendly

1. Các tính năng

  • Tự động đổi Name của bài viết từ Tiếng Việt có dấu sang Tiếng Việt không dấu trong lúc tạo mới bài viết.
  • Khi tạo mới bài viết nếu người dùng không dùng chức năng này mà chủ động nhập Name của bài viết thì plugin sẽ giữ lại tên bài viết mà người dùng nhập vào.
  • Plugin chỉ có tác dụng trong trường hợp tạo mới bài viết và lưu ở lần đầu tiên, không hỗ trợ cho phần sửa bài viết.

2. Download

  • PhuocLe.GraffitiCMS.Plugins.VietnameseUrlFriendly

3. Cài đặt hoặc gỡ bỏ

  • Cài đặt
    • Upload file PhuocLe.GraffitiCMS.Plugins.VietnameseUrlFriendly vào folder bin
    • Vào Admin -> Site Options -> Plug-Ins
    • Sau đó Enable plugin: VietnameseUrlFriendly - Coding by [P]huocLe
  • Gỡ bỏ
    • Disable plugin bằng cách vào Admin -> Site Options -> Plug-Ins sau đó click vào Disable của plugin: VietnameseUrlFriendly - Coding by [P]huocLe
    • Xóa file PhuocLe.GraffitiCMS.Plugins.VietnameseUrlFriendly.dll trên host

Và cuối cùng blog này cũng Phước đã và đang dùng plugin này.

Hy vọng plugin này giúp cho các bạn dùng GraffitiCMS có được URL thân thiện với SEO

Lời bình
Không có lời bình
Chủ đề
GraffitiCMS, Plugins
Đánh dấu
seo
 
July - 2010 03

Lấy các bảng, store trong database sqlserver

  • Lấy tất cả các bảng trong database sqlserver
SELECT	o.object_id AS id, 
		o.name, 
		u.name AS owner, 
		o.type, 
		CAST(p.[value] AS varchar(8000)) AS cmt 
FROM sys.all_objects o 
	INNER JOIN sys.schemas u ON 
		u.schema_id = o.schema_id 
	LEFT OUTER JOIN sys.extended_properties p ON 
		p.major_id = o.object_id AND 
		p.minor_id = 0 AND 
		p.name = 'MS_Description' 
WHERE o.type in ('U') 
ORDER BY o.name, 
		 u.name 
  • Lấy tất cả các stores trong database sqlserver
SELECT	o.object_id AS id, 
		o.name, 
		o.type, 
		1 AS number, 
		u.name AS owner, 
		CAST(p.[value] AS varchar(8000)) AS cmt, 
		o.is_ms_shipped 
FROM sys.all_objects o 
	INNER JOIN sys.schemas u ON 
		u.schema_id = o.schema_id 
	LEFT OUTER JOIN sys.extended_properties p ON 
		p.major_id = o.object_id AND 
		p.minor_id = 0 AND 
		p.name = 'MS_Description' 
WHERE o.type IN ('P', 'RF') 

UNION ALL 

SELECT	o.object_id AS id, 
		o.name, 
		o.type, 
		n.procedure_number AS number, 
		u.name AS owner, 
		'' AS cmt, 
		CAST(0 AS bit) AS is_ms_shipped 
FROM sys.objects o 
	INNER JOIN sys.numbered_procedures n ON 
		n.object_id = o.object_id 
	INNER JOIN sys.schemas u ON 
		u.schema_id = o.schema_id 
	LEFT OUTER JOIN sys.database_principals pr ON 
		pr.principal_id = o.principal_id 
WHERE o.type IN ('P', 'RF') 

UNION ALL 

SELECT	o.object_id AS id, 
		o.name, 
		o.type, 
		1 AS number, 
		u.name AS owner, 
		CAST(p.[value] AS varchar(8000)) AS cmt, 
		o.is_ms_shipped 
FROM sys.all_objects o 
	INNER JOIN sys.schemas u ON 
		u.schema_id = o.schema_id 
	LEFT OUTER JOIN sys.extended_properties p ON 
		p.major_id = o.object_id AND 
		p.minor_id = 0 AND 
		p.name = 'MS_Description' 
WHERE o.type = 'PC'
ORDER BY o.name, 
		 u.name
  • Lấy tất cả các columns trong một bảng, ví dụ ở đây là table Employees
SELECT	c.name, 
		t.name AS typename, 
		c.max_length AS length, 
		c.is_nullable, 
		c.is_identity
FROM sys.all_columns c 
	INNER JOIN sys.types t ON 
		c.user_type_id = t.user_type_id 
	INNER JOIN sys.all_objects tb ON 
		tb.object_id = c.object_id 
	INNER JOIN sys.schemas u ON 
		u.schema_id = tb.schema_id 
WHERE tb.name = N'Employees' AND 
	  u.name = N'dbo' 
ORDER BY c.column_id
  • Lấy tất cả các columns trả về của 1 store (nếu có), ví dụ ở đây là store: GetSalary
SELECT	c.name, 
		c.parameter_id AS colid, 
		sp.name AS spname, 
		1 AS number, 
		t.name AS typename, 
		c.max_length AS length, 
		c.precision AS prec, 
		c.scale, 
		c.is_output, 
		c.has_default_value, 
		c.is_cursor_ref, 
		c.default_value, 
		CAST(p.[value] AS varchar(8000)) AS cmt 
FROM sys.all_parameters c 
	INNER JOIN sys.types t ON 
		c.user_type_id = t.user_type_id 
	INNER JOIN sys.all_objects sp ON 
		c.object_id = sp.object_id 
	INNER JOIN sys.schemas u ON 
		sp.schema_id = u.schema_id 
	LEFT OUTER JOIN sys.extended_properties p ON 
		p.major_id = c.object_id AND 
		p.minor_id = c.parameter_id AND 
		p.class = 2 AND 
		p.name = 'MS_Description' 
WHERE sp.type IN ('P', 'RF', 'PC') AND 
	  sp.name = N'GetSalary' AND 
	  u.name = N'dbo' 
ORDER BY c.parameter_id
Lời bình
Không có lời bình
Chủ đề
Tips
Đánh dấu
sqlserver, tips
 
Trang sau
  • RSS

    phuocle.net RSS
  • Chủ đề

    • Blog
    • GraffitiCMS
      • Plugins
      • Tips
    • Tips
  • Đánh dấu

    asp-net google seo sqlserver tips
  • Liên kết

    • http://www.pnasoft.com
    • http://www.1kho.com
  • http://phuocle.net