Sunday, April 29, 2012

Adobe CS6 đã xuất xưởng


Vào cuối tháng 4, Adobe đã phát hành bộ CS6 và đã bắt đầu phân phối đến người dùng. Sau đây là một vài tính năng mới trong một số sản phẩm Flash, Dreamweaver, Photoshop, Illustrator.

1. Adobe Flash Professional CS6.
- Hỗ trợ tính năng kết xuất sản phẩm cuối dưới dạng html5 và js.
- Hỗ trợ tính năng Sprite-sheet generation (tạo một mảng các đối tượng từ một movieClip).
- Hỗ trợ mô phỏng thiết bị smartphone, tablet android và iOS.
- Cho phép nhúng AIR vào sản phẩm mà không cần phải cài đặt riêng lẻ. Điều này có nghĩa là bạn chỉ việc xuất bản tập tin AIR cho Android, iOS, Windows, Linux, MacOS,... và người dùng có thể cài đặt tập tin này lên thiết bị của họ mà không cần phải cài đặt thêm AIR.
- Tối ưu hóa tập tin, giải thuật....
- Hỗ trợ Stage3D
2. Adobe Dreamweaver CS6.
Chủ yếu tập trung vào html5, CSS3 và thiết kế trên các thiết bị di động.
3. Adobe Photoshop CS6
- Thêm công cụ mercury graphics engine
- Thêm các mẫu thiết kế mới
- Thêm mới thư viện hỗ trợ hiệu ứng Blur
- Thêm công cụ Crop
- Giao diện hiện đại hơn
- Hỗ trợ tạo video
...
4. Adobe Illustrator CS6
Tập trung tăng tốc độ xử lý, tính ổn định, làm việc với các tập tin cấu thành phức tạp. Hỗ trợ giao diện thân thiện, hiện đại hơn.

Tuesday, April 24, 2012

Tạo thumb cho bài đăng phổ biến

" Ức chế quá với cái thumb, bé tý xíu thế này, xấu thật... "

Đã bao giờ bạn phải thốt lên như thế này chưa. Định dạng mặc định của ảnh trong Blog  và PopularPosts là 72x72. Nhiều bạn không thích với định dạng này nhưng vẫn phải cố sử dụng như một sự ép buôc. Nhưng nếu dân tình kêu ca nhiều thì chắc Google cũng phải nghĩ đến giải pháp cho một cái biến ảnh ban đầu. Chờ thì hơi sốt ruột.



Mình đã tìm ra một quy luật rất hay muồn chia sẻ cùng các bạn, nếu các bạn để ý link thumb này sẽ có định dạnh như sau.

VD : https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYwt_kaPmKa4vcZz14v5e_qUGlUkesvFI4WGeT-Axx_RQb-XAUuKgIQpzcV-20pQbnTvvwpxR1Vimd_LMxAcmmRX5_IaPRTiQr3HT3yW6-as3D02HF0KUN1WJRDt0w_Yl2wxD2Iq8lIog/s72-c/xem-phim-Giay+thuy+tinh-maphim.net.JPG

Hãy chú ý đến phần mình bôi đỏ, đó chính là định dạng mà Google quy định. Nếu bạn thay thử các con số khác vào số 72 ta sẽ được các hình ảnh tương ứng với kích cỡ đó. Và nó là hình vuông.

Kích thước tối đa là 2000px.

Từ đó mình viết lên một hàm convertThumb có chức năng tương ứng createSummaryAndThumb, sử dụng thì chắc không khó. Áp dụng với cả 2 widget mà Blogspot đã cho. Mình nghĩ ưu điểm của hàm này so với hàm của các Blogger nước ngoài sẽ nhanh và tốt hơn.


Hàm convert :


function converthumb(img,s,w,h,url,tit){
if(Number(s) > 2000){s = 2000;}
img = img.replace(/s72/gi,"s"+s+"");
if(url != "" || tit != ""){
data = '<img alt="'+tit+'" src="'+img+'" width="'+w+'" height="'+h+'"/>';
}else{
data = '<a href="'+url+'" rel="'+tit+'"><img alt="'+tit+'" src="'+img+'" width="'+w+'" height="'+h+'"/></a>';
}
document.write(data);
}


Các biến truyền vào :
- img là link của các biến sau : data:post.thumbnailUrl (Blog), data:post.thumbnail (PopularPosts)
- s : kích thước bạn muốn convert từ 72 sang.
- w : chiều rộng của ảnh được hiển thị.
- h : chiều cao của ảnh được hiển thị.
- url : là link truyền vào data:post.href (PopularPosts), data:post.url (Blog)
- tit : tiêu đề truyền vào data:post.title (cả 2)

Sử dụng

 - Đầu tiên bạn copy và save với định dạng file convert.js sau đó up lên host nào đó.

1. Blog


VD: mình muốn lấy ảnh 800, rộng 300, cao 250


<b:if cond='data:post.thumbnailUrl'>
       <script>
        converthumb("<data:post.thumbnailUrl/>","800","300","250","","<data:post.title/>");
     </script>
<b:else/>
       <img src="http://megafun.vn/dataimages/201203/original/images682717_thienthan3.jpg" width="300" height="250"/> <!-- nếu không có thumb sẽ hiển thị ảnh này -->
</b:if>


2. PopularPosts

Tương tự:


<b:if cond='data:post.thumbnail'>
     <script>
        converthumb("<data:post.thumbnail />","800","300","250","","<data:post.title/>");
     </script>
 <b:else/>
<a  class='poster' expr:rel="data:post.title" expr:href='data:post.href'>
<img expr:alt="data:post.title" border='' height='250px' src='http://megafun.vn/dataimages/201203/original/images682717_thienthan3.jpg' width='300px'/>
      </a>
 </b:if>

Theo yêu cầu của netdohoa.com

Chúc các bạn thành công !

Sunday, April 22, 2012

Tạo lại header cho chuẩn Seo

Như các bạn đã biết BlogSpot giờ không thua kém các người anh em cùng họ. Phần mô tả đã cung cấp đầy đủ đến tận các bài viết con (item).. Nhưng nhiều bạn chưa biết cách vận dụng hết các chức năng đó. Trong phần đầu tiên này mình sẽ giới thiệu về phần "Mô tả", có thể coi đây là tóm tắt nội dung của bài viết, giúp cho các rotbot có thể tìm kiêm dễ dàng.



Đầu tiên, các bạn vào phần  Cài đặt >> Tuỳ chọn tìm kiếm >>


- Bật phần mô tả lên, nội dung mà bạn gõ vào chính là phần mô tả ở trang home.

- Để hiện phần mô tả cho trang con thì làm như thế nào.


- Bạn copy một đoạn trong bài viết và dán vào dây.

Bạn có thể viewsource trang sau để thấy rõ :


Nhưng câu hỏi đặt ra như sau, nhiều khi bạn quên không copy, hay với data 1k bài viết có sẵn của bạn phải làm sao để có 1k mô tả. Bạn phải đi copy cho từng bài :((..Phát ốm luôn. !

Mình sẽ chỉ các bạn các fix sau đây.

Copy và thay thế đoạn code bạn đang có nằm giữa <head> và <b:skin>

<b:include data='blog' name='all-head-content'/>
<!-- title, keyword -->
<b:if cond='data:blog.url == data:blog.homepageUrl'>
<title><data:blog.pageTitle/></title>
<meta content=' nhập các từ khoá của bạn ' name='keywords'/>
<b:else/>
<b:if cond='data:blog.pageType == "item"'>
<title>Thủ thuật <data:blog.pageName/> | 24h online </title>
<b:else/>
<title><data:blog.pageName/> - Teteit </title>
</b:if>
<meta name="keywords" expr:content="data:blog.pageName + &quot; nhập các từ khoá của bạn &quot;" />
</b:if>
<!-- meta -->
<meta name="robots" content="index, follow" />
<meta content="index, follow" name="GOOGLEBOT" />
<meta content="index, follow" name="yahooBOT" />
<meta name="author" content="suzuki_aka"/>
<!-- mota -->
<b:if cond='data:blog.metaDescription == &quot;&quot;'>
<b:if cond='data:blog.url != data:blog.homepageUrl'>
<meta name="description" expr:content="data:blog.pageName + &quot; nhập các mô tả chung, hoặc từ khoá &quot;" />
</b:if>
</b:if>

Các từ khoá màu đỏ là phần bạn sẽ thay. 

= > Cho dù bạn có quên copy thì bạn vẫn có một mô tả, nhưng để có 1 mô tả đẹp thì bạn nên copy một đoạn nhỏ vào mô tả tìm kiếm. Và giờ có 1k bài viết bạn cũng chả lo ngại gì.

Thêm một lưu ý rằng dòng lệnh :

<b:include data='blog' name='all-head-content'/>


rất quan trọng với blogspot, nếu có trót lỡ bỏ thì bạn hay thêm nó vào, nếu không bạn sẽ mất một vài index đấy ;)) . Nó bao gồm cả biến : data:blog.metaDescription (mình hay dùng nó thay cho data:post.snippet).

Bài viết sau chắc mình sẽ giới thiệu một số page 404 độc độc, nghịch nghịch một chút. Giờ cũng muộn rồi nên ngừng gõ ở đây.

Chúc các bạn thành công !

Friday, April 6, 2012

Interesting Perlin noise caves

I'm not a big fan of using Perlin noise to generate random terrain - mostly because the results are uninteresting and you have so little control over it. However; I came up with a use for using Perlin noise to generate interesting caves that I haven't seen before.

Step 1: Generate a map of solid rock. Use Perlin noise (or whatever) to make it of varying density.
Step 2: Place points of interest in the rock.
Step 3: Use a pathfinding algorithm to connect those points using the rock density as movement cost.

This will create a a map that is guaranteed to connect all the interesting points and the paths between them will wind, curve, connect, and split trying to follow the path of least density between the points. By varying the size of the path finder or removing low-density tiles near the path, the caves can be made to look more interesting.

Here's an example that connects 9 points on a map that is 120 by 40 tiles.




And here is a view that shows the density of the rock, the lighter it is the more dense it is and the less likely a cave will go through it.




There you go, caves that twist and wind and widen and narrow from point A to point B.

Popular Posts