Image to Data URI Convertor

A simple utility to convert an image into base 64 data URIs for embedding images.

Data URI conversion

Image to convertmax size: 32768 Bytespng, jpg or gif onlyBROWSE
CONVERT IMAGE

It’s best practice to optimise images prior to conversion via a tool such as SmushItImage Optimizer or PunyPNG.

Embedded images should be stored in cacheable files such as flat, not dynamic, HTML and style sheets. Data URI style sheets should be cached long term, rename the file on each update. Continue reading

GIT: pushing and pulling

Today we’re going to review another basic yet powerful concept that Git among other version control systems of its type has: distribution! As you may know, your commits are all local, and repositories are simply clones of each other. That means the real work in distributing your projects is in synchronizing the changes via git push and git pull.

If you’re new to Git, you may think that this is too much overhead and one that leads to a breakdown of control. Look at it this way: if your central server goes down, you’re usually hosed and prevented from working and collaborating with others. Since all of the work involved with actually creating revisions is done on your own machine, you can code whether the network is down without the permission of others or being subject to network issues. Did I mention it’s a lot faster too for most routine operations? Check out some more of advantages (and disadvantages) of DVCS at Wikipedia. Continue reading

PUT or POST: The REST of the Story

Web service designers have tried for some time now to correlate CRUD (Create, Retrieve, Update and Delete) semantics with the Representational State Transfer (REST) verbs defined by the HTTP specification–GET, PUT, POST, DELETE, HEAD, etc.

So often, developers will try to correlate these two concepts–CRUD and REST–using a one-to-one mapping of verbs from the two spaces, like this:

  • Create = PUT
  • Retrieve = GET
  • Update = POST
  • Delete = DELETE

“How to Create a REST Protocol” is an example of a very well-written article about REST, but which makes this faulty assumption. (In fairness to the author, he may well have merely “simplified REST for the masses”, as his article doesn’t specifically state that this mapping is the ONLY valid mapping. And indeed, he makes the statement that the reader should not assume the mapping indicates a direct mapping to SQL operations.) Continue reading

Video học Flash CS4 cho người mới bắt đầu (Kelby Training)

Kelby Training: Flash CS4 for Beginners

Lesson 01 Introduction (0:43)
Lesson 02 The Flash CS4 Interface (4:06)
Lesson 03 Using the Drawing Tools in Flash CS4 (12:20)
Lesson 04 Overview of the Pen Tool (14:45)
Lesson 05 Selecting Objects in Flash CS4 (10:17)
Lesson 06 Painting Objects in Flash CS4 (11:13)
Lesson 07 Working with Text in Flash CS4 (7:34)
Lesson 08 Importing AI files, Layers and Groups (13:55)
Lesson 09 Using Symbols (13:55)
Lesson 10 Using Classic Tweens (11:22)
Lesson 11 New Tweening, Paths, and Easing (14:05)
Lesson 12 3D Rotation in Flash CS4 (15:29)
Lesson 13 Putting it Together! (16:50)
Lesson 14 Basic Actions in Flash CS4 (15:29)
Lesson 15 Importing PSD, Buttons, and Web Links (16:02)
Lesson 16 Publishing Your Movie (5:36)
Lesson 17 Conclusion (0:38)
more info @http://www.kelbytraining.com/online/cs4-classes.html

Rapidshare: | Part 1 of 3 | Part 2 of 3 | Part 3 of 3 |

Làm thế nào khi thiếu file DLL?


DLL (Dynamic Link Library) có thể dịch là “Thư viện liên kết động”, các file .dll thường không tự chạy được nhưng chúng có tác dụng liên kết các thành phần trong Windows lại với nhau. Do đó, chúng có vai trò rất quan trọng trong Windows, chỉ cần thiếu một file dll thì Windows có thể bị lỗi, không chạy được một vài chương trình… Trong quá trình sử dụng, nếu khi thực thi một chương trình, Windows hiện ra thông báo lỗi dạng như “*.dll file not found” hay “Couldn’t find *.dll” nghĩa là máy tính của bạn đã bị thiếu 1 file dll nào đó. Bài viết này sẽ hướng dẫn cách sửa lỗi khi gặp trường hợp trên. Continue reading

10 chứng chỉ CNTT quan trọng nhất

Chứng chỉ CNTT “làm đẹp” hồ sơ xin việc, giúp tăng lương và giữ việc làm. Nhưng chứng chỉ CNTT nào là quan trọng nhất?

Các chuyên gia CNTT đã tranh luận rất nhiều về câu hỏi này. Nhiều ý kiến cho rằng chứng chỉ CNTT (IT certification) của các hãng công nghệ quan trọng nhất bởi chúng đo lường được kỹ năng của ứng viên, trong khi lại có ý kiến cho rằng chứng chỉ độc lập với các hãng công nghệ mới đáng giá, mới là cách đánh giá kiến thức thực tế. Một số tin rằng các chứng chỉ cao cấp như MCSE của Microsoft, CCIE của Cisco mới thực sự có giá trị.

Xét trên từng cá nhân, chứng chỉ CNTT tốt nhất phải là chứng chỉ phù hợp với chuyên môn được đào tạo, kỹ năng, mục đích và con đường sự nghiệp của từng người. Đó là tư tưởng chủ đạo trong việc đưa ra danh sách 10 chứng chỉ CNTT quan trọng nhất dưới đây. Có thể 10 chứng chỉ này không phải là quan trọng với bạn nhưng đó là những chứng chỉ có giá trị đáng kể với hầu hết người làm CNTT.

1. MCITP

MCITP là chuyên gia CNTT được Microsoft chứng nhận (Microsoft Certified IT Professional). Đây là chứng chỉ rất quan trọng của Microsoft cấp cho những người đã chứng tỏ được khả năng trong các công việc: lập trình viên cơ sở dữ liệu, quản trị cơ sở dữ liệu, quản trị máy chủ và quản trị hệ thống máy chủ mail. Để có chứng chỉ này, các ứng viên phải trải qua nhiều kỳ thi của Microsoft. Continue reading

CD tổng hợp các giáo trình các loại (Aptech, Nhất nghệ, FPT …)

Bộ CD tổng hợp rất nhiều giáo trình các loại của học viện, trung tâm đào tạo nổi tiếng như Aptech , FTP… Có rất nhiều nội dung hay đang chờ bạn khám phá. CD do Keosoft90 và quanghut của diễn đàn megasharesvn.com tổng hợp. Xin gửi tới các bạn với hy vọng nó sẽ phục vụ tốt cho việc học tập và nghiên cứu của các bạn. Continue reading

NGÔN NGỮ LẬP TRÌNH C++ – Dữ liệu nâng cao

Các kiểu dữ liệu tự định nghĩa
Trong bài trước chúng ta đã xem xét một loại dữ liệu được định nghĩa bởi người dùng (người lập trình): cấu trúc. Nhưng có còn nhiều kiểu dữ liệu tự định nghĩa khác:

Tự định nghĩa các kiểu dữ liệu (typedef).
C++ cho phép chúng ta định nghĩa các kiểu dữ liệu của riêng mình dựa trên các kiểu dữ liệu đã có. Để có thể làm việc đó chúng ta sẽ sử dụng từ khoá typedef, dạng thức như sau:

typedef existing_type new_type_name ;
trong đó existing_type là một kiểu dữ liệu cơ bản hay bất kì một kiểu dữ liệu đã định nghĩa và new_type_name là tên của kiểu dữ liệu mới. Ví dụ

typedef char C;
typedef unsigned int WORD;
typedef char * string_t;
typedef char field [50];
Trong trường hợp này chúng ta đã định nghĩa bốn kiểu dữ liệu mới: C, WORD, string_t và field kiểu char, unsigned int, char* kiểu char[50], chúng ta hoàn toàn có thể sử dụng chúng như là các kiểu dữ liệu hợp lệ:

C achar, anotherchar, *ptchar1;
WORD myword;
string_t ptchar2;
field name;
typedef có thể hữu dụng khi bạn muốn định nghĩa một kiểu dữ liệu được dùng lặp đi lặp lại trong chương trình hoặc kiểu dữ liệu bạn muốn dùng có tên quá dài và bạn muốn nó có tên ngắn hơn.

Union
Union cho phép một phần bộ nhớ có thể được truy xuất dưới dạng nhiều kiểu dữ liệu khác nhau mặc dù tất cả chúng đều nằm cùng một vị trí trong bộ nhớ. Phần khai báo và sử dụng nó tương tự với cấu trúc nhưng chức năng thì khác hoàn toàn:

union model_name {
type1 element1;
type2 element2;
type3 element3;
.
.
} object_name;
Tất cả các phần tử của union đều chiếm cùng một chỗ trong bộ nhớ. Kích thước của nó là kích thước của phần tử lớn nhất. Ví dụ:

union mytypes_t {
char c;
int i;
float f;
} mytypes;
định nghĩa ba phần tử

mytypes.c
mytypes.i
mytypes.f
mỗi phần tử có một kiểu dữ liệu khác nhau. Nhưng vì tất cả chúng đều nằm cùng một chỗ trong bộ nhớ nên bất kì sự thay đổi nào đối với một phần tử sẽ ảnh hưởng tới tất cả các thành phần còn lại.
Một trong những công dụng của union là dùng để kết hợp một kiểu dữ liêu cơ bản với một mảng hay các cấu trúc gồm các phần tử nhỏ hơn. Ví dụ:

union mix_t{
long l;
struct {
short hi;
short lo;
} s;
char c[4];
} mix;

định nghĩa ba phần tử cho phép chúng ta truy xuất đến cùng một nhóm 4 byte: mix.l, mix.s và mix.c mà chúng ta có thể sử dụng tuỳ theo việc chúng ta muốn truy xuất đến nhóm 4 byte này như thế nào. Tôi dùng nhiều kiểu dữ liệu khác nhau, mảng và cấu trúc trong union để bạn có thể thấy các cách khác nhau mà chúng ta có thể truy xuất dữ liệu.

Các unions vô danh
Trong C++ chúng ta có thể sử dụng các unions vô danh. Nếu chúng ta đặt một union trong một cấu trúc mà không đề tên (phần đi sau cặp ngoặc nhọn { }) union sẽ trở thành vô danh và chúng ta có thể truy xuất trực tiếp đến các phần tử của nó mà không cần đến tên của union (có cần cũng không được). Ví dụ, hãy xem xét sự khác biệt giữa hai phần khai báo sau đây:

union
union vô danh

struct {
char title[50];
char author[50];
union {
float dollars;
int yens;
} price;
} book;

struct {
char title[50];
char author[50];
union {
float dollars;
int yens;
};
} book;

Sự khác biệt duy nhất giữa hai đoạn mã này là trong đoạn mã đầu tiên chúng ta đặt tên cho union (price) còn trong cái thứ hai thì không. Khi truy nhập vào các phần tử dollars và yens, trong trường hợp thứ nhất chúng ta viết:

book.price.dollars
book.price.yens
còn trong trường hợp thứ hai:

book.dollars
book.yens
Một lần nữa tôi nhắc lại rằng vì nó là một union, hai trường dollars và yens đều chiếm cùng một chỗ trong bộ nhớ nên chúng không thể giữ hai giá trị khác nhau.

Kiểu liệt kê (enum)
Kiểu dữ liệu liệt kê dùng để tạo ra các kiểu dữ liệu chứa một cái gì đó hơi đặc biệt một chút, không phải kiểu số hay kiểu kí tự hoặc các hằng true và false. Dạng thức của nó như sau:

enum model_name {
value1,
value2,
value3,
.
.
} object_name;
Ví dụ, chúng ta có thể tạo ra một kiểu dữ liệu mới có tên color để lưu trữ các màu với phần khai báo như sau:

enum colors_t {black, blue, green, cyan, red, purple, yellow, white};
Chú ý rằng chúng ta không sử dụng bất kì một kiểu dữ liệu cơ bản nào trong phần khai báo. Chúng ta đã tạo ra một kiểu dữ liệu mới mà không dựa trên bất kì kiểu dữ liệu nào có sẵn: kiểu color_t, những giá trị có thể của kiểu color_t được viết trong cặp ngoặc nhọn {}. Ví dụ, sau khi khai báo kiểu liệt kê, biểu thức sau sẽ là hợp lệ:

colors_t mycolor;

mycolor = blue;
if (mycolor == green) mycolor = red;
Trên thực tế kiểu dữ liệu liệt kê được dịch là một số nguyên và các giá trị của nó là các hằng số nguyên được chỉ định. Nếu điều này không đựoc chỉ định, giá trị nguyên tương đương với phần tử đầu tiên là 0 và các giá trị tiếp theo cứ thế tăng lên 1, Vì vậy, trong kiểu dữ liệu colors_t mà chúng ta định nghĩa ở trên, white tương đương với 0, blue tương đương với 1, green tương đương với 2 và cứ tiếp tục như thế.
Nếu chúng ta chỉ định một giá trị nguyên cho một giá trị nào đó của kiểu dữ liệu liệt kê (trong ví dụ này là phần tử đầu tiên) các giá trị tiếp theo sẽ là các giá trị nguyên tiếp theo, ví dụ:

enum months_t { january=1, february, march, april,
may, june, july, august,
september, october, november, december} y2k;
trong trường hợp này, biến y2k có kiểu dữ liệu liệt kê months_t có thể chứa một trong 12 giá trị từ january đến december và tương đương với các giá trị nguyên từ 1 đến 12, không phải 0 đến 11 vì chúng ta đã đặt january bằng 1.