Hiển thị các bài đăng có nhãn Technology. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Technology. Hiển thị tất cả bài đăng

4/11/11

Implement pan/zoom feature with multi-touches screen (Part 2)


In last post, we already know how to make a proper zoom internally with OpenGL. This post will help you build a natural zooming on multi touches screen.
We will first, define how zooming gesture works with some UI tests, based on that we generalize a Mathematical problem, solve it, then go to some implementation note

If you are not interested in pan/zoom, you may find some useful info about Multitouches UI Tests, and tips for handling UITouch objects.

UI Tests
Put your fingers in Maps application, then feel the map's movement when you move your fingers. It's really intuitive and natural. You can enlarge then make it small, then large again as many times as you can, you can move the map up, move it down easily with your finger.

So, how to brief this cool feeling in detail?
A natural pan/zoom function like Maps app should pass these UI tests:

Let's say we put 2 fingers on screen at A and B, we move our finger to new points on screen A' and B'. Maps application zoom/pan have these properties:
1. Zoomed with appropriate scale with respect to how opened your finger is
The image is enlarged with a scale A'B'/AB
2. In Maps, if you put your first finger on location A, another finger on location B, after preforming pan/zoom, both locations are still right under your finger, no matter how many time you zoom out, then in.
2 point O and X are still under 2 fingers after zooming
3. Hold a finger on screen, move another, the map's zoomed, 2 marks is still under your finger.
4. If 2 fingers touch the screen at different timestamp, you still can zoom.
5. Pan and zoom at the same time
6. Twist 2 finger around to form a circle, the map is not panned or zoomed
2 point O and X are still in the same place

A simple conclusion: a natural zooming will keep 2 marks stay under your fingers in most cases


Now, pan/zoom seems more clear, but how to put these tests into code. We generalize the previous conclusion into Maths:
Equivalent Mathematical problem for pan/zoom feature.

On a plan, given 2 pair of points A, B and A', B'. How to use transformations (translation, resizing, rotation) to move A to A' and B to B'?
Try to solve this yourself, or you can continue with a simple, step by step solution below:

- First. move A to A' by using a Translation with vector AA', B is also moved to B1
- Second, move B1 to B2 by using a resize with origin in A', scale A'B2/A'B1
- Finally, use a Rotation with origin A', angle (A'B2, A'B') to make vector A'B2 to same direction with A'B', B2 is moved to B'

Next step, we go to implement all of these. To do this, we need to understand how touch data is transferred from your fingers and iPhone screen into your code.


Tips for handling UITouch
1. What is UITouch object?
This except from Apple iOS Event Guideline is extremely useful:
In iPhone OS, a UITouch object represents a touch, and a UIEvent object represents an event. An event object contains all touch objects for the current multi-touch sequence and can provide touch objects specific to a view or window (see Figure 3-2). A touch object is persistent for a given finger during a sequence, and UIKit mutates it as it tracks the finger throughout it. The touch attributes that change are the phase of the touch, its location in a view, its previous location, and its timestamp. Event-handling code evaluates these attributes to determine how to respond to the event. (more discussion)
2. How UITouch objects sent through touchesBegan, touchesMoved, touchesEnded, touchesCanceled?

Sequence of passing objects during a series of events
UITouchtouchBegantouchMovedtouchEndedtouchCanceled
Put 1 finger on screenA
Move 1A
Put another fingerB
Move 2 fingersA,B
Move 2nd fingerB
Put 1st finger out of screenA

1. Number of touches depends on event, so it is not represent how many touches are on screen
2. An UITouch object represent for a finger on screen, its data is mutable and will changed went the finger moved. You can not retain UITouch objects, thus cannot use an NSArray or NSDictionary to store touches data.
3. Number of touches go throughout touchesBegan is equal to number of touches go through touchesEnded + touchesCanceled

Pan/zoom implementation tips
- To handle how many touches are on screen, we need to remember the UITouch objects' pointers, we can use a C array of UITouch to store, and use a pointer comparison if we want to check for a pointer

Now you have all information needed for an implementation. In each UITouch delegates of your UIView, do these task:
Touches Began
  • Remember UITouch objects by saving it into array
Touches Moved
  • Check touches array
  • If there has 1 finger on screen, preform a pan
  • If there have more than or equal to 2 fingers on screen, use our transformations to make a zoom
A = [touch1 previousLocationInView:self];
A' = [touch1 locationInView:self];
B = [touch2 previousLocationInView:self];
B' = [touch2 locationInView:self];

+ Translation with vector AA': AA' = (x_A' - x_A, y_A' - y_A)
Calculate B1

+ Resize at origin A', scale k = A'B'/AB, use the function we build in previous post
- (void)zoomAtPoint:(CGPoint)point scale:(CGFloat)scale;
Calculate B2

+ Rotation:
At this point we want to make rotation to bring B2 to B'. In real, we can not rotate the maps, so we will do a simple trick to bring B2 nearer to B': we perform a pan with vector B2B'/2

Touches Ended/Touches Canceled
Remove touches out of touches array

That's it! Feel free for clarification and discussion :)

19/9/11

Implement pan/zoom feature with multi-touches screen (Part 1)


(Image source: top9tip.com)

When Apple rolled out it multi-touches device -  the iPhone, they also defined some useful, intuitive gestures for a certain purposes like pinch to zoom, pan to moving around in many of apps like Photos, Maps. These gestures become industry standard for their tasks and even used more and more in other apps like pinch to open/close an article in Flipboard..., pan/zoom in drawing app and game like Happy Farm...
This post will give you some ideas on how to implement your own pan/zoom.


Platform: iOS - OpenGL
OpenGL pre-configuration: Draw an off-screen texture to an onscreen frame buffer EAGLView

Texture ------> onscreen FBO ---> render buffer -> context
We can understand the task easier and get it done by simplifying it into smaller steps:

Step 1: Implement simple and acceptable Zoom/Pan function


Goal
A simple pan/zoom function, you can zoom & pan to any point of the drawing.

Technical

We define a pan by using a vector, and a zoom by a scale number. Let’s store these values in a struct:
typedef struct {
GLfloat x;
GLfloat y;
  GLfloat zoom;
} Transforms;
// Where (x, y) is panning vector, and zoom is zooming scale level.
OpenGL
You can change make our draw bigger with glScalef, and move it by a vector with glTranslatef:.
We need to modify the params of glTranslatef and glScalef when drawing view:
glTranslatef(transforms.x/screenWidth, - transforms.y/screenHeight, 0);  
glScalef(transforms.zoom, transforms.zoom, 1.0);
Multitouches
To glue these internal settings with multitouches gesture:
- In your touchesMoved:withEvent: methods, check if event touches included 1 or 2 touches
For pan: Apply for event with 1 touch (which moved from point A to point A_ in screen), get pan's vector by:
touch1 = [[touches allObjects] objectAtIndex:0];
A = [touch1 previousLocationInView:self];
A_ = [touch1 locationInView:self];
(transform.x, transform.y) = panning vector = vector AA_
For zoom: Apply for event with 2 touches
Similarly, calculating locations for touch2: B & B_
transforms.zoom = zooming scale = A_B_ / AB
Result
Now you have a good enough pan/zoom, you can zoom and go to any point of the drawing.

You also may notice that depend your OpenGL configuration (in iOS or MacOSX) then your view will be always zoomed at center or lower left corner.  A point at a corner after being zoomed will be moved out of the screen.

To make the drawing zoom at a corner:

We first make a zoom at center of screen.
Then drag/perform pan drawing to the corner.

Step 2: Make it better - Implement zooming at any point on drawing


Goal
Open Maps app, when you double click at any point, the map will be zoomed right at that point, even if that point is in a corner How to make a zooming like that?

We are going to build zooming function at a point:
- (void)zoomAtPoint:(CGPoint)point scale:(CGFloat)scale;
This method will modify transform setting appropriately when program receive zoom gestures
A simple thought to solve this is to utilize code in step 1, and add an appropriate pan right after a zoom.

Technical
Remember we have an off-screen texture, then we draw it on an on-screen frame buffer, again this buffer will be rendered to the view. This means we have 3 layers which affect how a drawing is displayed.

In which layer will zooming (the drawing is double in size) actually happen?
In Step 1, we know that transforms.zoom is used for glScalef, and this function will take effect when texture is drawn into onscreen frame buffer. In this process, zooming effect is actually happened


So, why do last time we always zoom on center of the screen?
That is happened when the double drawing is rendered into the view, OpenGLES 3D coordinate system has origin at the center of the screen (while in Mac OSX, this origin is in lower left corner of the screen)

Thus, after we double click on a point in screen, that point is not displayed under our finger in screen anymore, but is moved farther the center of the screen

We need to pan that point from Ao to A (vector AoA), but how to know the coordinate of Ao?
To do this, we need to go deeper into 3 layers of displaying. Let’s name some points:
A_w, Ao_w: coordination of A and Ao in view layer (which is also A and Ao)
A_d, Ao_d: actually coordination of A and Ao in the draw, without any affect display of zoomed/panned drawing
A_t, Ao_t: coordination of A and Ao in the texture, zoom double affect will be performed on A_t point

Follow this sequence of transformation to know coordination of Ao
A_w
--transform/remove pan-zoom effect--> A_d
--transform/convertToGL--> A_t  
--zoom at center--> Ao_t
--transform/convert GL to view--> Ao_d
--apply pan-zoom affect--> Ao_w

Create function for each steps, take into account the difference between coordinate of each layers:
View: origin at lower - left corner
On-screen buffer: origin at center
Texture: origin at top - left corner

This is one of a tough part of implementation, it requires a little knowledge about mathematic and coordinate transform. Try to have unit test and make sure each task done correctly before jump into next task. Below is instruction for first transforms: remove pan-zoom effect

//I. Remove panning
    x -= transforms.x;
    y -= transforms.y;
/*II. Remove zooming
  1. Move from bottom-left to center
    2. scale with current zoom (not new zoom caused by double click)
    3. move from center back to bottom-left */
   x = (x - screenWidth/2)/transforms.zoom + screenWidth/2;
   y = (y - screenHeight/2)/transforms.zoom + screenHeight/2;

You can find the idea for the second here: convertToGL, the forth and fifth is the opposite transform of the first and second one.
When you get all point converting done correct, perform a pan with vector AoA will bring Ao back to under your finger. Eureka!

Step 3: Make it feel cool like Maps app - Integrate multi-touches gestures: pinch to zoom
(to be continued)

9/5/11

Thought on a hackathon

Last weekend turned to be very exciting to me as a mentor in Hackathon.
Working with young and passion students always bring you a lot of fun and interesting.
Despite of their fast learning, creativity and enthusiasm, many teams make mistakes during the contest. I wrote down all of these as tips for contestants in next Hackathons.

Research a little bit more when brainstorming and choosing idea.
In hackathon, creativity is always emphasized. You need to think about an interesting idea that can convince your judges. When you have an idea, although it is interesting to you, but it may not be novel. Your judge definitely know a lot of apps and idea which are already in App Store.
That's why, to convince them and others, you need to have some research about your idea, find out if there have apps that do similar, if yes, find out what make your app unique from others.
During the beginning of competition, many teams hadn't thought about these question, until we judged their idea.
For example, a team want to build a calendar app (both server and client side) in Android, without taking enough looking at Android's built-in Calendar app. If they said that they want to integrate Maps to your app, I hope that they can play with built-in app a little bit more, they will see that feature also.
So, it is quite hard for their apps to be ranked high about creativity.
Take a look at other apps also bring you more interesting feature for your app.

Think big, but focus to your unique feature first.
When having an idea, you can brainstorm whatever your app can do, so that you can get a list of features your app may have.
You can also use this features list to show the potential of your app in front of judges.
However, when starting to code on your app, ideally you should narrow this features list down to only ONE feature.
Ask yourself, what is your app's purpose? Is removing this feature out of your app, make it totally different?
Is this the simplest feature that is appropriate with your app's purpose?
Choosing this feature help you know where you should put your hand to code.

Many teams spend time on many planned features,or start to work on supporting view first (splash screen, menu, list view, info...)
Forget all of these supporting features, implement your main view with core feature first
Doing this will really help when you run out of time before implementing all planned features, because, at least, your main feature is ready for demo.

Start to code on your main feature immediately, then iterate, iterate...
You can always start small, if your main feature is helping user to track their money spending easily by recording amount of money, product's photo, location...
You might think to spend time to solve technical problems like photo capture module, then get location (with PhoneGap framework) first.
However, you can build a financial tracking app, by just display an input box, for users enter there money, then save it to database. That's all you need to start immediately.
So, if your main feature is too big, simplify or narrow it down.
If you view is not simple, choose to implement an important & simple part
If you have a lot of technical problems, spend time to solve necessary one.
The key is that, you can start to code at your first minute, have something to show and build your confidence over time.

Despite all of these limitation, all contestants finished their competition with great results.
All of them are young and really really passion with their apps. Passion is definitely the source of their energy for all days coding, not from bread, instant noodle with small amount of beef. With 2 days continuously coding, they are "sleepless monsters" also :) Another surprising is most of contestants, like second prize team, knew about their platform only a few days before the contest. They learned really, really fast.

Hope all of participations have experienced a lot of new things in this great event!

PS: check out their photos here: http://www.facebook.com/apcshackathon?sk=photos




27/12/09

Sự riêng tư trên facebook

Kết nối friend trên facebook ngày càng mang tính mở hơn và cũng mang tính một chiều hơn giống như follow trên twitter.
Đầu tiên là thay đổi privacy policy - chính sách bảo vệ riêng tư. Oái ăm thay chính sách bảo vệ riêng tư này lại lấy khẩu hiệu "Public as default". Điều này chẳng có gì là xấu, vì fb là nơi giao lưu chia sẻ mà. Nhưng bạn cần hiểu rõ rằng, tất cả mọi người trên internet đều có thể xem status, wall post, photo... của bạn mà ko cần có sự cho phép. Quan hệ ở đây trở nên 1 chiều, chứ ko còn là 2 chiều như friend!

Một điều thứ hai, hôm nay mình mới phát hiện ra là khi bạn send friend request cho ai đó, nếu người đó để chế độ riêng tư là mặc định, thì bạn có thể theo dõi những cập nhật của người đó trên feed của bạn, bất kể người đó có accept friend hay chưa. Kết nối friend bây giờ hoàn toàn 1 chiều giống như follow trên twitter.

Cho đi nhiều hơn, bạn cũng sẽ nhận lại nhiều hơn. Cởi mở hơn, bạn cũng sẽ thân thiện hơn. Nhưng nếu cảm thấy không thích đối với "chính sách mở cửa riêng tư" này của facebook, hãy dành thời gian đọc lại Privacy Setting của facebook, hay tham khảo vài hướng dẫn để điều chỉnh lại theo ý muốn nhé.

7/5/09

Giải pháp trọn vẹn cho các bạn khi blog Yahoo 360 sắp "ra đi"











Mục lục bài viết:
+ Những lợi ích cần có của mạng xã hội cần chuyển tới
+ Giải pháp: Facebook + Blogger (Wordpress)

1. Hướng dẫn về facebook
+ So sánh Blogger và Wordpress
2. Hướng dẫn về wordpress
3. Hướng dẫn về Blogger
4. & 5. Hướng dẫn tạo tương tác giữa facebook + Blogger(Wordpress) + Twitter
---------------------------------------------------------

Mạng 360 sắp sụp rùi, thông tin chính thức cũng có rùi, ai cũng đã biết. Nhưng mà có một điều mà ai cũng băn khoăn là rùi blog mình sẽ đi đâu đây? Và công sức cũng như tình cảm với những bài viết đã qua liệu có biến mất đi?

Lợi ích quan trọng mà chúng ta mong muốn khi sử dụng:
1. Tính liên kết trong 1 mạng xã hội ảo: Đó là kênh liên lạc cho dù bạn bè có cách trở nhiều nơi, nhưng vẫn liên lạc với nhau(giống Yahoo Messenger) và biết được tình hình, thông tin về nhau.
2. Viết blog: Đó là nơi mà mỗi chúng ta trở thành thành phần trung tâm, có thể viết lên những suy nghĩ, nhận xét hay đưa tin về một sự kiện nào đó và nhận lại những bình luận từ bạn bè. Nói chung viết blog một phần nào đó đã thể hiện được cái tôi của mỗi người.
Cho dù thế nào thì tính xã hội của blog cũng luôn luôn là tính năng quan trọng mang lại 2 lợi ích trên. Chính vì vậy, mà khi cân nhắc chuyển nhà sang địa điểm mới chúng ta cần tìm hiểu trước xem ở đó có mạng-của-mình không (bạn bè, người thân mình có trên đó không)

Mình đã tìm hiểu chọn ra một giải pháp thỏa mãn được 2 lợi ích trên và bài viết này mình mong giới thiệu và "dụ dỗ" các bạn (những người trong mạng xã hội đã quen và sắp quen) cùng thực hiện giải pháp này nhé:
Giải pháp mà mình chọn đó là: Liên kết bạn bè của mình trên facebook và thỏa mãn việc viết blog trên Blogger (hay trên Wordpress). Dĩ nhiên sẽ tự động chèn những bài blog của mình lên facebook để mọi người xem và bình luận.

1. facebook: dĩ nhiên rùi, báo chí đã nói rất nhiều về mạng xã hội này. Mạng xã hội đông nhất thế giới với tính năng liên kết xã hội và kho ứng dụng đều rất tuyệt vời. Ngay mới khi bắt đầu dùng mình đã rất rất ngạc nhiên về những gì mà nền tảng này làm được. quá cool!
Với tính năng quản lý Hình ảnh và video ở đây bạn cũng sẽ không phải lo chuyện chọn trang Web để up ảnh và video của mình nữa.
Để bắt đầu với facebook, xem 2 hướng dẫn sau trên báo Dân trí nhé:
Làm quen và sử dụng mạng xã hội ảo Facebook (Phần 1)
Làm quen và sử dụng mạng xã hội ảo Facebook (Phần 2)
(Nhiều bạn bè của mình cũng đang rất thích sử dụng facebook)

++++++++++
Viết blog trên Blogger (Wordpress) :
Tại sao lại chọn viết blog trên Blogger (hay Wordpress)? Mặc dù trong facebook có tính năng Notes để viết blog, tuy nhiên tính năng này wá đơn giản. Một số bạn lại thích đầu tư viết blog (là những trang nhận kí ghi lại 1 phần cuộc sống của mình, hay những bài viết công phu về một đề tài nào đó). Lúc này Notes không thể đảm nhận được.

Viết trên Blogger (hay Wordpress) có thể sao lưu cất giữ blog lại.
Một số lựa chọn khác như chuyển Yahoo 360 plus -> không nên, cái này mình ghét cay ghét đắng. Xấu, kém tính năng, nghe nói lấy lại source của thèn Tàu.

Vậy thì nên chọn cái nào Blogger hay Wordpress
blogger-wordpress



Viết blog trên Wordpress, thật ra có 2 lựa chọn khác:
1. Sử dụng miễn phí, nhưng nhiều hạn chế trên trang Wordpress.com
2. Nếu bạn có tiền mua host + tên miền, có hiểu biết IT, viết blog chuyên nghiệp, bạn hãy chọn việc cài đặt 1 trang blog của bạn dựa trên mã nguồn Wordpress, đó là công cụ rất tốt.

Ai nghèo, thì phải sài miễn phí rùi, vậy thì xem so sánh của mình về hai dịch vụ miễn phí là Blogger.com và Wordpress.com

1. Di chuyển từ Yahoo lên:
Wordpress: Có công cụ khá dễ làm
Blogger: Hơi khó hơn 1 tí: Đầu tiên di chuyển từ yahoo 360 lên Wordpress, sau đó di chuyển từ Wordpress lên Blogger
Đánh giá W/B - 9/7

2. Các tính năng:
Các công cụ sẵn cũng khá nhiều. Tuy nhiên phụ thuộc nhiều vào Wordpress (chủ yếu sử dụng các công cụ sẵn có) không linh động bằng việc sử dụng các Widgets của Blogger
Đánh giá W/B - 6/9

3. Themes:
Wordpress: Có thể bạn đã nghe nói Wordpress có nhiều themes hơn Blogger, nhiều cái đẹp mê man luôn. Nhưng thật sự bạn không có cơ hội hưởng đâu, bởi vì Wordpress.com không cho cài đặt themes miễn phí: Bạn muốn thay đổi CSS hay HTML đều phải trả tiền.
Các themes cho blog đều được chọn từ khoảng hơn 70 themes có sẵn, vài themes cho mình thay đổi hình nền ở trên.
Nói chung bạn chẳng có cơ hội thay đổi theme nhiều, nhưng có thể thay đổi vị trí một số thành phần trên sidebar.

Blogger: rất linh động: cho phép thay đổi CSS và cả HTML. Bạn có thể chọn themes sẵn có, hoặc import từ rất nhiều themes đẹp trên mạng. Nhiều themes của Wordpress cũng được convert qua cho dân Blogger sài.
Bạn có thể edit trang Blogger thành mẫu gần giống với Yahoo 360 đó
Đánh giá W/B - 5/9

4. Tương tác với các mạng xã hội khác (đặc biệt là facebook)
Mảng này thì Wordpress mạnh mẽ hơn, nhưng mà Blogger cũng được hỗ trợ không kém, những tính năng cơ bản đều có, ngoài ra còn có thể tương tác rất tốt với các công cụ khác của Yahoo như Picasa...
Đánh giá: W/B: 8-5
+ Cả hai dịch vụ đều có tiếng Việt

Tóm lại: Ở dịch vụ miễn phí: Bạn có thể chọn Wordpress nếu bạn thích tính phổ biến, dễ dùng. Nhưng nếu thích sự linh động, và chịu khó tìm hiểu 1 chút bạn sẽ thấy nhiều điều tuyệt vời đang chờ đón khi dùng Blogger
Và mình thích sử dụng Blogger hơn : )

Bây giờ sau khi đã chọn lựa xong bạn có thể bắt đầu với các hướng dẫn sử dụng tại 3hoặc 4:

3. Cơ bản về Wordpress:
Rùi, bi h để bắt đầu với wordpress bạn hãy xem những hướng dẫn sau:
Vào trang Wordpress.com tạo một tài khoản sau đó làm theo hướng dẫn sau:
Nếu bạn chưa biết cách đăng ký một tài khoản thì xem ở đây nhé. (Nhớ clíck vào nút ở góc phải để xem lớn hơn)
Hướng dẫn chuyển nhà từ Yahoo 360 qua Wordpress
Hướng dẫn sử dụng Wordpress

Xem hướng dẫn tương tác giữa facebook và Wordpress ở dưới.

4. Các hướng dẫn về Blogger:
Để bắt đầu với Blogger bạn hãy vào trang Blogger.com sử dụng tài khoản Gmail để đăng nhập.
Sau khi đăng nhập, xem Hướng dẫn cài đặt blog - thuthuatblog.com
Đọc hướng dẫn chuyển nhà từ Yahoo 360 qua Blogger - Kazenka
Sau đó chọn 1 theme ưng ý, cài đặt các widget vào trang blog của mình
Có thể tham khảo các hướng dẫn khác tại đây:
Video hướng dẫn thay đổi template (themes)
Hướng dẫn của anh Kazenka chuyển Blogger thành gần giống Yahoo 360
Hướng dẫn cài đặt 1 theme download từ bên ngoài (English)
Những hướng dẫn khác trên trang thủ thuật blog.
Xem cách liên kết giữa blogger và facebook ở dưới
-------------

Có lẽ bạn sẽ nghĩ rằng, nếu phải làm song song 2 cái facebook và Blogger (hay Wordpress) tách rời thì phiền quá, 1 cái thui. Nhưng với lòng yêu thích viết blog và bạn biết cách làm cho 2 trang trên tương tác với nhau thì vấn đề trên chẳng còn nữa:

5. Tương tác facebook <-> wordpress
+ Bạn có thể import những bài viết từ Wordpress vào Notes của Facebook. [Hướng dẫn]
+ Viết blog Wordpress ngay trong facebook sử dụng app Wordpress
+ Cập nhật tự động giữa Notes và Wordpress từ bài viết đến comment
+ Cập nhật status (blast của Yahoo) từ Facebook lên wordpress
+ Nhiều nhiều nữa... xem hướng dẫn ở đây nhé:

10+ Facebook Wordpress Plugins and Widgets (chịu khó đọc English nhé - thời buổi mở cửa rùi)

6. Tương tác facebook <-> Blogger
Cũng có nhiều tính hỗ trợ qua widget nhưng mình chỉ giới thiệu 2 tính năng chính này...
+ Bạn có thể import những bài viết từ Blogger vào Notes của Facebook. [Hướng dẫn]
+ Sử dụng cập nhật trạng thái từ Facebook lên Blogger thông qua Twitter (xem ở dưới)
----------------------------
Twitter: Dạo này báo chí nói rất rất nhiều về dịch vụ này, có thể nói đây là một ngôi sao nổi bậc rực rỡ về số người sử dụng. Nếu thích bạn cũng có thể cập nhật blast từ Twitter sang facebook và Blogger (wordpress)bằng ứng dụng twitterWidget cho Blogger (hay hướng dẫn plugin cho WP)

Có thể nói sử dụng facebook + blogger(hay wordpress) sẽ là lựa chọn tuyệt vời, bạn có thể chọn sử dụng 1 trong 2 nếu bạn chỉ nghiêng về Mạng xã hội hay viết blog. Dẫu sao, ở đây bạn sẽ thấy những gì mà yahoo 360 cung cấp thật ít ỏi (nghèo nàn). Tuy nhiên để được tự do hơn bạn cần phải hiểu biết hơn. Hãy chịu khó đọc những hướng dẫn ở trên nhé.

Mọi thứ đã sẵn sàng, ngay bây giờ bạn sẽ lên thuyền ra biển chứ?
Ah, hãy giới thiệu cho bạn bè bạn để mọi người luôn giữ liên lạc với nhau ở nhà mới nhé.
Hẹn gặp lại!


PS: bài viết trên tổng hợp nhiều rất nhiều hướng dẫn -> đọc phải rất lâu, mình cũng phải mất nhiều thời gian để chọn lọc và viết lại. Bởi vậy, mình xin chân thành cảm ơn vì bạn đã chịu khó đọc đến những dòng cuối này.

19/12/08

Hướng dẫn sử dụng chương trình Mathtype 6



Mathtype - có lẽ rất quen thuộc với dân Toán chúng mình.

Là chương trình hỗ trợ chúng ta soạn thảo công thức Toán học thuận tiện hơn.



Tuy nhiên nếu khi soạn thảo chúng ta chỉ sử dụng chuột để soạn thảo thì thật sự chưa thuận tiện (khá mất thời gian) và chưa khai thác được hết khả năng của Mathtype.

Đó chính là lý do khiến mình muốn chia sẻ cách mình sử dụng Mathtype. Và là nội dung của phần trình bày Mẹo nhỏ hữu ích khi dùng Mathtype 6 trong buổi tập huấn ứng dụng CNTT trong dạy học cho một số sinh viên trong khoa do Đoàn khoa tổ chức (12/2007).



+ Mẹo thứ nhất về cách khởi động mathtype nhanh.

+ Thứ hai về cách soạn thảo công thức cực nhanh trong mathType bằng cách chèn Tex và0 mathType.


+ Thứ ba là cách tận dụng những phím tắt có trong mathType.

------------

Trong đó, mẹo thứ hai rất phù hợp cho những bạn biết tiếng Anh chuyên ngành. Bởi những công thức kí hiệu Tex tương tự như ý nghĩa trong tiếng Anh của nó.

Và mình rất thích gõ công thưc Toán theo cách này.



Thêm vào đó, dùng cách này sẽ rất thuận lợi nếu bạn muốn trao đổi trên các diễn đàn Toán học. hay gởi 1 bài viết Toán lên mạng (mình sẽ trình bày cụ thể sau)



Và mình xin chia sẻ những mẹo nhỏ qua bài viết sau:

Nếu bạn chưa biết soạn Mathtype thì tạm thời chưa đọc bài viết này. Hãy cuộn xuống và xem bài hướng dẫn phía sau cụ thể hơn cho người mới bắt đầu








Sau khi mình trình bày, có một thầy nhận xét rằng: Có lẽ mình chưa học qua lớp sư phạm (Phương pháp dạy học) vì rõ ràng phần thứ hai: mẹo về sử dụng phím tắt - rất trực quan - lại được trình bày sau phần 1: mẹo gõ ký tự Toán bằng Latex - khó hơn.
Mình cũng nhận ra điều đó mún sử lại nhưng lần lửa mãi + mất file word gốc nên vẫn chưa sửa được. hic!

Các bạn có thể download bài viết trên + những tài liệu đi kèm ở link sau:


http://www.mediafire.com/?sydtzxgbjtb



Nội dung bao gồm:(Các bạn click vào để xem trực tuyến)

HD su dung mathTypeTips_athanhcong.pdf

InstallTinyPDF.exe (Chương trình tạo file PDF)

kiHieuTeX.pdf (tập hợp các kí hiệu Tex lấy từ Wikipedia)

tex-refcard-letter.pdf (Bảng ghi nhớ kí hiêu Tex, tiện cho việc in ra A4 để tham khảo)


tham khao Huong dan mathType 5.2- Thanh Vinh.PDF

viDuMathType.pdf




Trong đó chương trình InstallTinyPDF.exe dùng để tạo một máy in ảo. Giúp bạn khi chọn lệnh in một tài liệu word có thể in ra thành một file PDF. Thực tế có nhiều bạn đem bài đi in & do tiệm in không có mathType (hay có nhưng phiên bản cũ hơn) nên tài liệu khi in ra bị lỗi công thức toán học. Nếu in tạo ra một file PDF trước rùi lấy file đó đi in thì sẽ tránh được sai sót trên :smile:




----------------------------------------------------------------------------------





Động lực để viết entry này là do hôm trước trên net bắt gặp một bài viết có nội dung gần gần như những gì mình đã viết. Các bạn có thể tham khảo bài viết này. Thực ra bài viết sau ở phần bắt đầu sử dụng rất cụ thể, phần sau hơi rối nhưng cũng tham khảo rất tốt.





<Bài viết trên diễn đàn Toán học>Hướng dẫn sử dụng Mathtype 6



Bài viết này sẽ giới thiệu một số kỹ năng nâng cao giúp gõ công thức Toán trong MathType 6.0 nhanh hơn. Nếu bạn chưa biết MathType là gì thì chỉ cần đọc xong bài viết này bạn sẽ có thể gõ được đại đa số các công thức mà bạn muốn. Nhưng nếu bạn đã biết sơ qua MathType rồi thì cũng nên đọc vì nó rất có giá trị tham khảo.

Mathtype


Đầu tiên là quá trình cài đặt. Ở đây chúng ta sẽ xét phần mềm Mathtype 6.0. Mình khuyên mọi người nên cài bộ phần mềm văn phòng Microsoft Office trước. Mathtype dùng cho Word, Excel và PowerPoint trong bộ office.







Sau đó chúng ta sẽ cài Mathtype. Quá trình cài Mathtype và hướng dẫn sơ bộ cũng có trong đấy luôn. Tuy nhiên bạn đọc tiếp sẽ thấy dễ hiểu hơn nhiều so với các tài liệu khác.

Vì Mathtype là phần mềm thương mại nên nếu bạn mua bản quyền (Khoảng vài chục $) thì không nói làm gì, nhưng nếu bạn xài đồ chui thì lúc bật Mathtype bạn nên tắt mạng Internet, vì nếu bật thì Mathtype sẽ bị quét key và trở thành bản dùng thử với rất ít tính năng. Nếu bạn bị quét key thì cũng chẳng sao, hãy vào








để mở lại hết các chức năng.

Giờ chúng ta sẽ bắt đầu tập gõ, hãy thử gõ công thức sau: . Nếu bạn mới gõ chắc chắn bạn sẽ gõ như thế này:

Vào Mathtype:







gõ đến : bạn sẽ ấn vào nút này để mở chức năng phân số:








Đó là cách ân dùng chuột và rất mất thời gian nếu gặp 1 công thức dài. Còn nếu giở Help ra đọc thì bạn cũng sẽ rối cả mắt vì toàn tiếng Anh, tìm cũng khá lâu, mà có tìm thấy thì lại nhiều phím tắt quá cũng khiến bạn choáng ngợp. Vậy cách gõ thế nào mới là tốt? Bạn nhận thấy là Mathtype có rất nhiều công thức, tuy nhiên từng bài toán cụ thể bạn chỉ dùng 1 lượng công thức nhất định. Ở ví dụ trên cụ thể bạn chỉ mới cần gõ phân số là khó mà thôi. Để gõ nhanh bạn để hờ chuột vào ký hiệu phân số bạn sẽ thấy có phím tắt ghi ở dưới:







nó ghi là Ctrl+F, có nghĩa là bạn ấn Ctrl+F thì nó sẽ ra luôn ký hiệu phân số. Đó chính là cách gõ nhanh. Nghĩa là bạn cần công thức gì thì đưa chuột vào công thức đấy và phím tắt sẽ hiện ra ở dưới, bạn ấn phím tắt ra công thức rồi điền số vào thôi.







1 ví dụ nữa là dấu ngoặc nhọn ta thấy phím tắt của dấu ngoặc này như là Ctrl T,) . Như vậy để gõ được ta phải gõ là Ctrl T, Shift ]








Vậy nếu bạn quen gõ TEX, giờ bạn muốn gõ TEX trên Mathtype thì sao? vậy bạn chỉnh Mathtype như sau:

1. Vào Preferences/Workspace Preferences







2. Bạn tích vào ô Allow TEX Language entry from the keyboard rồi ấn OK









Rồi gõ TEX, gõ xong ấn Enter bạn sẽ thấy công thức TEX chuyển thành hình ảnh







Cách gõ này rất thích hợp với ai muốn trình chiếu trên PowerPoint mà quen gõ TEX vì Mathtype hỗ trợ cho PowerPoint rất tốt.

Vậy thế nếu ký tự mà bạn cần không có phím tắt trong bảng chọn Mathtype thì sao? Ví dụ như trong công thức thì ký tự lại không có phím tắt. Vậy ta phải đặt phím tắt cho nó. Bạn vào Edit/Insert Symbol








Rồi bạn chọn ký tự tại ô số 1, tiếp theo ở mục 2, bạn ấn phím tắt vào ô đấy (Mình chọn phím tắt của Ctrl+Shift+D,bạn có thể đặt theo ý bạn tùy thích. Cuối cùng là ấn vào nút 3, Assign.






Vậy là phím tắt của trong Mathtype giờ đây là Ctrl+Shift+D, và bạn ấn phím tắt là ra ngay.

Vậy tóm lại cách dùng cơ bản của Mathtype là như thế nào? cơ bản gồm các bước sau:


  1. Mở Microsoft Word

  2. Ấn phím tắt Ctrl+Alt+Q để mở Mathtype lên

  3. Gõ công thức bằng các phím tắt như đã trình bày ở trên.

  4. Sau khi gõ xong ấn Ctrl+F4 để đưa công thức vào Microsoft Word.




Ưu và nhược của Mathtype:


Ưu điểm:




  1. Gõ nhanh và dễ nhớ hơn TEX, Mathtype có thể thành 1 công cụ tra cứu TEX: xem thêm ở đây.

  2. Hỗ trợ tốt cho bộ Microsoft Office, giúp cho bài viết đẹp hơn với hiệu ứng của Microsoft Office + hiệu ứng màu sắc, font chữ của Mathtype.

  3. Dễ dùng, tạo cảm giác thân thiện nhanh với người học.


  4. Giao diện đồ họa giúp chỉnh sửa dễ dàng.

  5. Nếu bạn muốn trình bày báo cáo bằng Slide PowerPoint thì đây có lẽ là lựa chọn số 1.


Nhược điểm:

  1. Với những người gõ TEX lâu năm, có lẽ bạn sẽ cảm thấy Mathtype gõ chậm hơn.

  2. Dung lượng file văn bản gõ bằng Mathtype sẽ tăng lên rất nhanh, do các ký hiệu ở dạng ảnh. (1 bài viết khoảng 40 trang mà nhiều công thức chắc cũng gần 10MB)

  3. Vì vấn đề dung lượng nên Mathtype chỉ thích hợp với báo cáo slideshow hoặc những bài viết ngắn với số lượng công thức không quá nhiều.

  4. Nếu bạn viết 1 bài dài (Khoảng >20 trang với nhiều công thức) bằng Mathtype, bạn nên cắt nó ra thành nhiều file word nhỏ.

  5. Chính vì lý do dung lượng nên các nhà xuất bản, các tạp chí trong và ngoài nước sẽ không đồng ý nếu bạn nộp bản thảo toán học bằng Mathtype.



Cái gì cũng có ưu và nhược của riêng nó. Nếu cân nhắc chọn đúng thì MathType vẫn là 1 phần mềm gõ công thức toán tốt nhất dành cho bạn. Chúc bạn thành công với MathType.


(Chu Anh Tiến, Diễn đàn Toán học)





Mong rằng bài viết sẽ giúp ích và mang lại cho bạn sự thú vị khi tiết kiệm khá nhiều thời gian soạn giáo án, luận văn :smile:



26/3/08

Entry for pa` con bị nhiễm virus máy tính!




Hướng dẫn diệt Virus dùng Kaspersky 6.0


Dạo này đạo tặc hoàn hành dữ wa', mấy thèn virut làm pà con khốn đốn, làm mìn cũng điên đảo theo.
Nguyên nhân mìn viết bài là do hồi trước bận wa' trời mà pà con lại cứ réo mìn đi diệt virus dùm hoài, mệt chít lun - mà có mỗi 1 công việc lặp đi lặp lại hoài...
Mình viết hướng dẫn này mong giúp được pà con.
Nhớ là : Nguyên tắc chủ yếu là phải cài và cập nhật data cho chương trình diệt virut thường xuyên.

Bi h các bạn download file pdf này về đọc nhé:
http://athanhcong.googlepages.com/huongDanKAS6-athanhcong.pdf

Có thêm 1 tài liệu về cách dùng USB mìn siu tầm được trên nét nè:
http://athanhcong.googlepages.com/TATCAMOIDIEUBANNENBIETVEUSB.exe

Cập nhật mới nhất là mình đã làm được hướng dẫn crack Kaspersky 7 - Sài sướng lun! he he
Pà con cần thì IM cho mìn nhé! mình hướng dẫn cho crack!