Saturday, January 21, 2017

Design Pattern: Sử dụng Template để cài đặt mẫu thiết kế Singleton trong C++

Singleton là một mẫu thiết kế thông dụng được sử dụng để đảm bảo chỉ có một đối tượng duy nhất được tạo ra và có thể truy xuất mọi lúc, mọi nơi trong trong chương trình. Tôi thường sử dụng mẫu này trong Configurations, Logger, Manager,...

Để đảm bảo được hai được tính này, khi cài đặt bạn phải chú ý:
  • Phải sử dụng đối tượng static và hàm static getInstanse.
  • Hàm khởi tạo (Contructor) và hàm hủy (Detructor) phải là private => Điều này đảm bảo có duy nhất một thể hiện, trừ hàm getInstance ra thì không có cách nào khác để tạo/lấy đổi tượng.
Dưới đây là cài đặt một lớp Singleton cơ bản:
Tệp Singleton.h:
#ifndef SINGLETON_H
#define SINGLETON_H

class Singleton {
private:
    static Singleton m_instance;
    Singleton();
public:
    static Singleton* getInstance();
    
    void yourMethod();
};

#endif /* SINGLETON_H */

Tệp Singleton.cpp:
#include "Singleton.h"
#include <iostream>

using namespace std;

Singleton Singleton::m_instance;

Singleton* Singleton::getInstance() {
    return &m_instance;
}

Singleton::Singleton() {
}

void Singleton::yourMethod() {
    cout << "Implement your method at here";
}

Trong hàm main, bạn sử dụng đoạn code sau đê chạy:
Singleton* test = Singleton::getInstance();
test->yourMethod();

Cách này có nhược điểm là nếu có nhiều lớp cần sử dụng cơ chế này thì mỗi lớp phải cài đặt riêng. Để áp dụng cơ chế chung và tái sử dụng được khi cài đặt bạn nên sử dụng Nguyên mẫu (Template). Cụ thể cài đặt như sau:

Tệp Singleton.h
#ifndef SINGLETON_H
#define SINGLETON_H
#include <stddef.h>

template<typename T>
class Singleton {
private:
    friend T;
    Singleton() {}
    virtual ~Singleton() {};
    
public:
    static T* getInstance() {
 static T instance;
 return &instance;
    }
};

#endif /* SINGLETON_H */
Các lớp khác kế thừa lại lớp này để có thể sử dụng lại được ngay cơ chế Singleton mà không phải cài đặt lại => Đây là ưu điểm cách này. Dưới đây là ví dụ tạo lớp Manager kế thừa lại cơ chế này từ lớp Singleton:

Tệp Manager.h:
#ifndef MANAGER_H
#define MANAGER_H

#include "Singleton.h"

class Manager : public Singleton<Manager> {
public:
    void manage();
    
private:
    friend Singleton<Manager>;
    Manager();
    virtual ~Manager();
};

#endif /* MANAGER_H */

Tệp Manager.cpp:
#include "Manager.h"
#include <iostream>

using namespace std;

Manager::Manager() : Singleton<Manager>() {
}

Manager::~Manager() {
}

void Manager::manage() {
    cout << "Implement at here";
}

Trong hàm main, bạn sử dụng lớp này như sau:

Manager* t = Manager::getInstance();
t->manage();

Khi cài đặt Singleton sử dụng Template, bạn cần chú ý:
  • Phải sử dụng từ khóa friend để đảm bảo hàm khởi tạo và hàm hủy phải là private.
  • Template là mẫu khỏi tạo trong thời gian biên dịch (compile-time), chứ không phải trong thời gian liên kết (link-time) trong khi các khối mã trong tệp c/cpp thì chỉ được biết đến trong thời gian liên kết => Chính vì vậy mà các Template chỉ được được đặt trong tệp .h

Wednesday, January 18, 2017

Sử dụng Netbeans build và chạy ứng dụng C/C++ trên Windows


Để sử dụng Netbeans để build và chạy ứng dựng C/C++ trên Windows, ngoài việc cài đặt Netbeans bạn cần cài đặt thêm trình biên dịch C/C++ như MinGW, Cygwin, msvc,... Trong bài viết này, mình sẽ sử dụng MingGW làm trình biên dịch C/C++.

Các bước thực hiện như sau:

1. B1: Cài đặt JDK

Để chạy được Netbeans, bạn bắt buộc phải cài đặt Java. Nếu máy bạn chưa cài, hãy vào trang http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html để tải "Java SE Development Kit" và thực hiện cài đặt.

2. B2: Cài đặt Netbeans

Bạn vào đia chỉ https://netbeans.org/downloads/ để tải và cài đặt Netbeans. Bạn nhớ là download bản hỗ trợ tất cả ngôn ngữ, hoặc ít nhất bản phải hỗ trợ C/C++.


3. B3: Cài đặt MinGW

Bạn download bản MinGW mới nhất tại đia chỉ: https://sourceforge.net/projects/mingw/files/latest/download?source=files
Sau khi download về bạn sẽ có tệp "mingw-get-setup.exe". Bạn chạy tệp này để bắt đầu cài đặt MinGW.
Khi cài đặt bạn chú ý:
  • Nên để thư mục mặc định là: C:\MinGW
  • Trong phần "MinGW installer", bạn chọn các thành phần sau để cài đặt:
    • mingw-developer-toolkit
    • mingw32-base
    • mingw32-gcc-fortran (if you will be working on Fortran programs)
    • msys-base
    • mingw32-gcc-g++
  • Tiếp đó bạn thực hiện theo hướng dẫn để cài đặt
Sau khi cài đặt xong, bạn phải thêm đường dẫn tới thư mục bin của MinGW MSYS vào trong biến môi trường PATH. Nếu cài đặt ở thư mục mặc định thì bạn thêm hai đường dẫn sau vào biến môi trường PATH của Windows: C:\MinGW\binC:\MinGW\MSYS\1.0\bin
(Các thêm vào biến môi trường PATH bạn search trên Google sẽ thấy ngay).

4. B4: Cài đặt CMake

Bạn nên cài thêm CMake để hỗ trợ cho các Project C/C++ sử dụng tệp CMakeLists.txt. Trước khi cài CMake, bạn nhớ cài đặt MinGW và cấu hình vào PATH để khi cài CMake nhận ra được trình biên dịch C/C++.

Bạn trang https://cmake.org/download/ để tải CMake và thực hiện cài đặt bình thường.

5. B5: Cấu hình MinGW trên Netbeans

 Sau khi cài đặt xong, bạn bật Netbeans, thông thường Netbeans sẽ tự động nhận MinGW. Trên Netbeans, bạn vào menu "Tools => Options", chọn tab C/C++, bạn thấy như ảnh dưới là Netbean đã nhận MinGW:


Trường hợp chưa thấy bạn có thể tự thêm bằng cách kích vào nút "Add..." và chọn thông số như ảnh trên.

6. B6: Chạy thử project C/C++

Đến đây bạn có thể tạo thử Project C/C++ để chạy thử. Bạn vào menu "File => New Project...", chọn như ảnh dưới:


Sau đó nhấn Finish. Đến đây bạn  hãy build và chạy thử!!!

Monday, January 2, 2017

Hướng dẫn đăng ký thành công Net Android YeahMobi, LeadHug và Mobvista

Bài này hướng dẫn các bạn đăng ký thành công hai Net Android:
Với các Net khác bạn làm tương tự.

 1. Bước 1: Chuẩn bị

Ðầu tiên bạn lên Google kiếm 01 cái ID Card của thằng nước nào đó là 01 cái thật, sau đó tạo 01 hotmail hay gmail với tên như thông tin trên. Sau đó gửi email cho Network và thêm thông tin skype như thông tin ID Card. Khi đăng ký sử dụng địa chỉ IP Mỹ và nhớ lưu lại Sock này để còn dùng lại.

2. Bước 2: Đăng ký tài khoản

Bạn phải thực hiện trả lời các câu hỏi của Net.

* Với YeahMobil, bạn phải trả lời các câu hỏi sau:

a. From who or where did you hear about us?

From my friend => Chọn mục này
From affpaying
From google

b. How long have you been in mobile marketing?

About 1 years => Chọn mục này
About 2 years
About 3 years

c. What kind of offers do you want to promote?

Mobile content => Chọn mục này
CPI/CPD

d. How do you plan on generating traffic to our offers?

Bạn có thể trả lời như sau:
I have a Google Ads account and I pay per clicks in my strategy. I choose offer insurance to promote because I have some great keywords are studied in each location has the highest conversion ability. I choose PPC because this is the method I have more experience. I also focus on social networking site such as Facebook, Twitter and marketing of posts on enzinaticle.com. I learned a SEO course and I am applying for my site. This is the method that I am focused development. 
hoặc
To promote sales I will select google adword campaign and I pay for every customer clicks in my campaign. I will find quality keywords to get more customers. Currently I have a relationship with a lot of marketing experts in other countries. I would ask them to help me advertise to customers.
hoặc
I experienced seo keywords hot up top 10 google. Also I will combine running ads with google adword facebook. I will choose the CPI because it is my strength. For social networking, I focus on facebook, twitter, Pinterest. I will choose their advertising services to right subjects focused and more effective.
I understand and accept that my application will be rejected without a working Skype/AIM/QQ provided?
 
My skype: ...

e. What is your Time Zone or GMT (+/-)?

(UTC - 07:00) Mountain Time (US & Canada) => Chọn mục này
(UTC - 07:00) Arizona
(UTC - 08:00) Baja California
(UTC+10:00) Hobart (Nếu là AU)

f. When is the best time to reach you by phone?

After we work together => Chọn mục này
No. I'll call you when necessary
Someday
Sorry. I'm very busy. It will make me lose focus at work

g. Payment Method and Payment Address?

Paypal => Chọn mục này
...

h. What other networks do you work with (AM's name, telphone, email, IM)?

I am working with mobvista network, AM's: Nicky lee, Skype: tong_lee227 => Chọn mục này (Phụ thuộc bạn liên hệ với ai)
I am working with mobvista network, AM's: Camilla, Skype: camillachen702
Working with mobvista network, AM's: Chenlong, Skype: chenlong.zhang

i. I agree to not send any unallowed/illegal traffic to YeahMobi's offers. If I send such traffic, YeahMobi has the right to withhold my payment?

Yes => Chọn mục này
No

j. What's your linkedin page?

I don't have linkedin page => Chọn mục này
I do not use linkedin

k. What's your personal facebook page?

I don't have facebook page => Chọn mục này
...

* Với LeadHug bạn phải lời các câu hỏi dưới:

a. From who or where did you hear about us?

From my friend => Chọn mục này
From affpaying
From google

b. What is your method of traffic? Please list your resources you are using.

Bạn trả lời:
I have a Google Ads account and I pay per clicks in my strategy. I choose offer insurance to promote because I have some great keywords are studied in each location has the highest conversion ability.I choose PPC because this is the method I have more experience. I also focus on social networking site such as Facebook, Twitter and marketing of posts on enzinaticle.com. I learned a SEO course and I am applying for my site. This is the method that I am focused development.
Hoặc
To promote sales I will select google adword campaign and I pay for every customer clicks in my campaign. I will find quality keywords to get more customers. Currently I have a relationship with a lot of marketing experts in other countries. I would ask them to help me advertise to customers
hoặc
I experienced seo keywords hot up top 10 google. Also I will combine running ads with google adword facebook. I will choose the CPI because it is my strength. For social networking, I focus on facebook, twitter, Pinterest. I will choose their advertising services to right subjects focused and more effective.

c. What kind of offers do you want to promote?

CPI/CPD and mobile content => Chọn mục này
CPI/CPD
Mobile content

d. Payment Method and Payment Address

Paypal and my paypal: xxx

e. We only target mobile traffic. please make sure you know this:

Yes => Chọn mục này
No

f. How long have you been in mobile marketing?

About 1 years => Chọn mục này
About 2 years
About 3 years

g. What is your Skype ID? 

My skype: xxx
Skype leadhug: chenjinyu.fish

* Với MobVista bạn phải lời các câu hỏi dưới:

a. Where or from whom did you hear about us? Be as detailed as possible?

From my friend => Chọn mục này
From affpaying
From google

b. How long have you been in mobile marketing?

About 1 years => Chọn mục này
About 2 years
About 3 years

c. What kind of offers do you prefer?

cpi/cpd and mobile content => Chọn mục này
cpi/cpd
mobile content

d. What other networks do you work with(AM's name, telphone, email, IM)?

Chọn người mà bạn liên lạc
I am working with yeahmobi network, AM's: Fred, Skype: fredqstech
I am working with yeahmobi network, AM's: Liam Li, Skype: dflava1209
I am working with yeahmobi network, AM's: Wang, Skype: captainyeahmobi

e. What is your Time Zone or GMT (+/-)?

(UTC - 07:00) Mountain Time (US & Canada) => Chọn mục này
(UTC - 07:00) Arizona
(UTC - 08:00) Baja California
(UTC+10:00) Nếu là AU


f. Are you referred by others for the CPA/Subscription Referal Program? (If so, please provide your code)

3524
No i don't have

3. Bước 3: Gửi email cho AM

* Ví dụ với YeahMobile:

Gửi cho YeahMobi thì gửi qua 2 địa chỉ: lena.liu@yeahmobi.com hoặc owen.liu@yeahmobi.com
nội dung gửi email:
Hello,
I'm ...., I am writing to you to ask for reviewing my application I would like to work with yeahmobi network. I have experience in online marketing and I had a detailed plan to draw traffic to my website and especially the experience to increase conversion rate from that traffic source. I am appreciating any of your suggestion to my best experience. I believe that I will become your top affiliates a short time. Should you need further information please feel free to let me know. I would like to provide more information for your concern.
I look forward to for your comments.
This is screenshot of Mobvista network

Hoặc
Hello. I am .... come from .... I write this letter because I wanted to work with yeahmobi network. I appreciate about your company. So please accept my account. I've had experience in direct marketing and I also have his own plans for development, finding customers find your website. I will accept service of good advertising: google adwords, facebook ads ... to help my job succeed.
I hope you will contact me as soon as possible. If you are looking for any information about me, please let me know.
Thanks!
Khi gửi thì đính kèm theo file.
Ngoài ra, ở YeahMobi hiện nay có AM khá dễ tính nên nếu có thể tiếp cận và nói chuyện với AM này thì tỷ lệ thành công sẽ rất cao. Vì vậy chúng ta nên gửi 1 email cho AM đó:
Tên AM: Rio Lu
Email: rio.lu@yeahmobi.com

* Ví dụ với Papaya/LeadHug:

Gửi email cho tới địa chỉ: anjie@papayamobile.com
Nội dung gửi email: 
I'm Leo,
I have experience with 4 years online marketing. To get the traffic source and with high conversion rate. I have a plan and focus on the some methods such as PPC,Banner, SEO, social networking and my publishers.
Hoặc:
I am writing to you to ask for reviewing my application I would like to work with Appflood network . I have experience in online marketing and I had a detailed plan to draw traffic to my website and especially the experience to increase conversion rate from that traffic source. I am appreciating any of your suggestion to my best experience. I believe that I will become your top affiliates a short time. Should you need further information please feel free to let me know. I would like to provide more information for your concern.
I look forward to for your comments.
Hoặc
Hello,
I'm ...., I am writing to you to ask for reviewing my application I would like to work with yeahmobi network . I have experience in online marketing and I had a detailed plan to draw traffic to my website and especially the experience to increase conversion rate from that traffic source. I am appreciating any of your suggestion to my best experience. I believe that I will become your top affiliates a short time. Should you need further information please feel free to let me know. I would like to provide more information for your concern.
I look forward to for your comments.

4. Bước 4: Trao đổi qua Skype

Tiếp theo bạn online Skype, chọn ảnh nào dó cho bắt mắt 1 tí. Add các Skype AM dễ tính. Add  xong chờ 5 phút sau nó accept nó sẽ hỏi những câu hỏi như dưới và bạn chỉ việc copy và paste. Lưu ý để giờ ở máy tính dúng với giờ của info bạn đăng kí. Ví dụ:
  • Mĩ là (UTC-07:00)
  • Canada là (UTC-05:00)
  • Australia là (UTC+10:00)
  • Italy là là (UTC+01:00)
Cứ thế chờ em nó approve acc thôi. Nếu muốn chắc chắn 100% nó add skype thì bạn mail cho nó 1 cái mail, email của các AM bạn tham khảo ở pro đi trước, nội dung thì copy từ bên dưới là okie.
Đại loại nội dung trao đổi như dưới:
========================================
- AM: Hello, How are you?
- You: I'm .... I come from .... I just registed account YeahMobi network, you can approve it now!
I’ve just signed up as an affiliate, hope manager to get me approved for my account. My email: admin@centernew.com. My network: xxxx. Affiliate ID : 275070
- AM: Traffic 1: Hãy kể những phương pháp mà bạn làm để có giao thông đến website
- You: “I have experience with 1 years online marketing. To get the traffic source and with high conversion rate. I have a plan and focus on the some methods such as PPC,Banner, SEO, social networking and my publishers.
- AM: Traffic 2: Hãy kể chi tiết thêm một chút.
- You: “I have a Google Ads account and I pay per clicks in my strategy. I choose offer insurance to promote because I have some great keywords are studied in each location has the highest conversion ability.I choose PPC because this is the method I have more experience. I also focus on social networking site such as Facebook, Twitter and marketing of posts on enzinaticle.com. I learned a SEO course and I am applying for my site. This is the method that I am focused development.
- AM: How do you drive traffic to campaigns?
- You: PPC, buy banner and social network
- AM: How many leads can you generate per month?
- You: 1000 leads
- AM: What types of campaigns do you promote?
- You: Survey, incentive, email submit, zipcode submit, followed by gambling, gaming, health and a few penny auction offers
- AM: How did you hear about Incentive Lead?
- You: From affpaying.com, and search
We are a publishing house. We upload all offers. And we switch to individuals. In addition, we do more facebook advertising, banner, PPC

Four-part website
Home page contains all information from the website
FAQ question and answer participants' questions
Contact the webmaster
Show offers for participants to play
Login for users to participate

Dear …
I am writing to you to ask for reviewing my application I would like to be a part of your publisher network . Would you please take time to review my plans? I have experience in online marketing and I had a detailed plan to draw traffic to my website and especially the experience to increase conversion rate from that traffic source. I am appreciating any of your suggestion to my best experience. I believe that I will become your top affiliates a short time. Should you need further information please feel free to let me know. I would like to provide more information for your concern.
I look forward to for your comments.
========================================

- AM: What are your main target countries?
- You: USA, Canada

- AM: Which media types do you use? (text ads, banners..) 
- You: Text Ads 
- AM: Which categories do you work in? (Games, Mobile, Education etc’..), which ones work the best for you?
- You: Mobile Advertising
- AM: What is the volume of the traffic you generate? How many leads do you generate per month?- You: xxx
- AM: Do you work with other Affiliate Networks? Which ones? 
- You: CPALeads/YeahCPA 
- AM: Do you have any experience with CPA / CPL campaigns?
- You: Yes 
- AM: How did you hear about us?
- You: Video Marketing Campaign With Vic 
 ========================================
- AM: What are your main target countries?
- You: USA,CANADA
- AM: Which media types do you use? (text ads, banners..)
- You: Banners
- AM: Which categories do you work in? (Games, Mobile, Education etc’..), which ones work the best for you:
- You: Mobile Advertising
- AM: What is the volume of the traffic you generate? How many leads do you generate per month? Volume = # of visitors (or page views)
- You: Leads = # of actual user names that are good to use for sales. Or # of signups.
- AM: Do you work with other Affiliate Networks? Which ones?
- You: CPALeads/ cpaleadkim
- AM: Do you have any experience with CPA / CPL campaigns?
- You: Yes
- AM: How did you hear about us?
- You: Video Marketing Campaign With Vic,seach google…
========================================
- AM: List The Networks You work with?
- You: CPALeads/YeahCPA
- AM: How you are Planning to Promote the offers?
- You: I have experience with 1 years online marketing. To get the traffic source and with high conversion rate. I have a plan and focus on the some methods such as PPC,Banner, SEO, social networking and my publishers.
- AM: What is your Monthly revenue?
- You: Mobile Advertising
- AM: Have You been Terminated from Other Networks?
- You: Yes
- AM: What is your Aim / Skype id?
- You: deptrainhangheo_1984
- AM: What Kind Of Offers Are you Looking At?
- You: text ads, banners..
- AM: What is Your Traffic Source?
- You: I have a Google Ads account and I pay per clicks in my strategy. I choose offer insurance to promote because I have some great keywords are studied in each location has the highest conversion ability.I choose PPC because this is the method I have more experience. I also focus on social networking site such as Facebook, Twitter and marketing of posts on enzinaticle.com. I learned a SEO course and I am applying for my site. This is the method that I am focused development.”
========================================
- AM: How many uniques a month do you get?- You: 50000-100000
- AM: How do you get traffic?
- You: I build blogs and webpages and I get traffic through PPC on google.
- AM: How long have you been doing Internet Marketing?
- You: 1 year and a half
- AM: What has worked for you in the past?
- You:  Only PPC
- AM: What vertical/category/kind of offer you want to promote, or have promoted in the past?
- You: Anything that converts, I’ve done gaming, freebies, health, ringtones, email submit, etc..
- AM: Do you offer incentives?
- You: No
- AM: How much do you spend on advertising?
- You: 100$ per day
- AM: Do you work with other network, which ones?
- You: YES, name any that you have been accepted at or name any random ones.
- AM: How did you hear about us?
- You: My friend told me, but he doesn’t work with you.
========================================
- AM: Tell us about your current affiliate marketing activities
- You: Axonmediagroup, 1betternetwork, Emediatraffic,...
- AM: What website(s) will you be using to promote our offers? (Give URL(s) and description)
- You: Our maketing campaign are:
    + Promote the kind of advertising on google, yahoo...
    + Increase % commission to affiliates under me, so they work better.
    + I promote my network towards countries like usa, uk...
    + My team personnel have perfect knowledge of maketing, they can promote your items the best way
- AM: When joining a new network, what aspect of the business relationship is most important to you?
- You: Email submit, Survey, Dating, Zip submit, Education
- AM: Your monthly average revenue from affiliate marketing
- You: About $1000
- AM: How many leads can you generate per month
- You: About 1000
Traffic sent from publishers they are webmaster, blog, marketers, then traffic from usa, uk, ca ... 95% is displayer banner, and some send traffic ppc.ppv and email marketing, some publishers is admin GPT site
Types of campaigns do I promote is survey, incentive, Download, Survey, email submit, zip code submit, followed by gambling, gaming, health and a few penny auction offers:
    ksix.com, email login : admin@centernew.com
    adworkmedia.com, email login : accounting@centernew.com
    neverblue.com, email login admin@centernew.com
    leadsmack.com, email login admin@centernew.com
    my.igain.com, email login admin@centernew.com
    1fcc322222ececcccbf112a3a16%cpaera.com email login admin@centernew.com
    thesonder.com email login admin@centernew.com
    guardianads.com email login admin@centernew.com
    partners.holdclick.com email login admin@centernew.com
    adshiftmedia.com email login admin@centernew.com
    dash.scorpiointeractive.com email login admin@centernew.com
    PPC, Banner, SEO, social networking
    Promote http://centernew.com/
========================================Dear Abby!
Actually I'm very sad about being eliminated from your network. Because some members know where I put my website for promoting your campaign, I was sorry to occur of member fraud. I understand when members fraud will lead to prosecution advertisers to you.

Dear Abby!
Please give me one more chance to reinforce the campaign closely and not let the incident occurred. Please Give me a chance to continue a member of your network. I promise not to happen complaints from advertisers. I will fix the way my manager. This time I will not let you down.

Dear Abby!
We are all Asians should have similar thoughts about the lifestyle. You are a beautiful girl and good nature, friendly. Would you please help me again. In my heart always wanted to become a friend of yours. And I also want you to Vietnam or vice versa, we will find the friendly affection between us. I hope my sincerity make you understand.
My account email: admin@centernew.com
Affiliate ID : 275070

Iam going to use PPC as my primary methods and that you are an expert in using 7search and Plenty of fish and Facebook



Tham khảo: http://blogcungnhaukiemtien.blogspot.com/2015/10/huong-dan-reg-net-android-thanh-cong.html

Sunday, January 1, 2017

Tìm hiểu về loại Offer CPI (Cost per Install)

Hiện tại có rất nhiều người kiếm tiền bằng loại OFFER CPI. Vậy CPI là gì? Bài viết này sẽ tổng hợp kiến thức và thuật ngữ liên quan tới CPI.

1. Thuật ngữ:

- CPI (Cost per Install): Thanh toán theo lượt cài đặt. Là hình thức hợp tác kinh doanh, trong đó Nhà cung cấp sẽ trả tiền cho nhà phân phối  khi có khách hàng thực hiện hành động tải, cài đặt và mở ứng dụng, phần mềm hoặc các loại nội dung số khác thông qua link quảng bá. CPI ghi nhận là một lần cài đặt thành công, cần thỏa mãn các tiêu chí sau:
  • Download game hoặc ứng dụng về máy từ link nhà phân phối => Cài đặt thành công => Mở ứng dụng trong lúc thiết bị có kết nối mạng (3G, Wifi...)
  • Một thiết bị chỉ được ghi nhận cài đặt một lần đối với một game/app. Việc xóa game/app đi và cài lại, format lại máy không được ghi nhận.
- RR (Retention Rate): Tỉ lệ duy trì. Tỉ lệ mở lại app vào ngày hôm sau, hoặc có thể tùy theo thời gian nhà quảng cáo yêu cầu. Ví dụ: RR A2; RR A7...
- NRU (New Register User): Tỉ lệ user mới đăng kí trong game/app.
- LU (Loyal User): Tỉ lệ user trung thành với game/app. User nên mở và sử dụng game/app ít nhất 3 lần/ngày.
- ROI (Revenue on Install): Doanh thu phát sinh từ user trong game/app.
- CR (Conversion Rate): Tỉ lệ chuyển đổi. Trong kinh tế học, nó tức là tỷ lệ mua hàng, đặt hàng trên số lượt truy cập vào website bạn là bao nhiêu, con số CR này càng cao càng tốt. Trong Offer, tỉ lệ này có thể hiểu là tỉ lệ lead/click, tức là nếu có 100 click mà được 1 lead thì CR=1%
- CPL (Cost per Lead): Nghĩa là hoa hồng phát sinh trên mỗi khách hàng cung cấp thông tin bằng cách hoàn thiện vào các mẫu trên website theo đúng yêu cầu của Nhà cung cấp.
- Lead: Là các thông tin cá nhân của một người có bày tỏ sự quan tâm tới sản phẩm hoặc dịch vụ của Nhà cung cấp với mục đích sẽ mua sản phẩm hoặc dịch vụ đó. “Lead” thường được tạo ra bằng cách điền một biểu mẫu trên Internet, đăng ký tài khoản hoặc trả lời một cuộc khảo sát online. Trong Offer ví dụ "Click and Run" thì 1 Lead được tạo ra khi người dùng cài đặt và mở một ứng dụng.

2. Các hình thức của CPI

- CPI có hai hình thức:
  • Incentive: Là hình thức truyền thông khuyến khích người dùng cài đặt thông qua  tất cả các kênh truyền trông khác nhau nhằm mục đích khuyến khích người dùng cài đặt ứng dụng/game. Bao gồm cả các hình thức bắt buộc người dùng cài đặt.
  • Non-Incentive: Là hình thức truyền thông thông qua việc  quảng cáo và người dùng thực sự có nhu cầu, và tự nguyện cài đặt game/ứng dụng. Không bao bồm các hình thức khuyến khích người dùng cài đặt. Các hình thức bắt buộc người dùng cài đặt cũng không được chấp nhận.

Tìm hiểu tổng quan về MMO và OFFER

Hiện tại MMO và OFFER đang được nhắc tới rất nhiều. Mình cũng bắt đầu tìm hiểu về nó và tổng hợp lại các kiến thức để tiện cho việc tra cứu lại.
Bài viết này mình tổng hợp lại kiến thức tổng quan về MMO và OFFER

1. Tổng quản về MMO

- MMO là viết tắt của từ “Make Money Online” hay còn gọi là kiếm tiền online. Đây là công việc bạn sử dụng 1 chiếc máy tính hoặc điện thoại (phần lớn là máy tính) có kết nối mạng Internet để làm các công việc nhằm mục đích cuối cùng là kiếm được tiền.
- MMO gồm các hình thức:
  • Offer: Xây dựng traffic đều hướng tới việc thu hút người dùng sử dụng quảng cáo.
  • Survey: Tham gia trả lời khảo sát. 
  • PTC (Paid to Click): Tham gia click banner quảng cáo của các website .
  • PTR (Paid to Read): Tham gia đọc mail kiếm tiền.  
  • PTP (Paid to Post): Post bài cho các forum lấy tiền. 
  • Autosurf: Xem nội dung trang web kiếm tiền.
  • HYIP (High Yield Investment Programs): Các Chương Trình Đầu Siêu Lợi Nhuận. Đầu tư sinh lời theo kiểu đánh đề (Lời nhiều nhưng dễ bị lừa). 
  • Sports Betting: Cá cược kiếm tiền.
  • Poker: Chơi bài kiếm tiền (cờ bạc)  
  • Google Adsense: Quảng cáo cho google kiếm tiền, dành cho những bạn có website hay blog. 
  • Affiliate Marketing: Môi giới, quảng cáo bán hàng kiếm tiền.
  • PTU (PAID TO UPLOAD): Kiếm tiền bằng việc upload tài liệu
  • ...
- AFF (Affiliate): Là một chương trình tiếp thị, nơi bạn có thể nhận được tiền hoa hồng từ một công ty mẹ bằng cách bán hàng cho họ. Công ty mẹ sẽ cung cấp cho bạn tất cả các công cụ quảng cáo mà bạn cần chẳng hạn như banner, liên kết và mã theo dõi để bạn đặt trên các trang web của mình, trong email của bạn hoặc các nguồn khác. Khi một người truy cập vào trang web của bạn hoặc nhấp chuột vào một trong các quảng cáo, liên kết và đến trang web của công ty mẹ để tiến hành giao dịch, giao dịch này sẽ được theo dõi. Nếu kết quả giao dịch này bán được hàng cho công ty mẹ, bạn được trả một khoản tiền hoa hồng quy định trước.

2. Tổng quan về OFFER

a. OFFER là gì?

- OFFER: Là 1 dạng quảng cáo cấp bậc. Đa dạng hóa trong ý nghĩa. Nhưng tổng quát cách build và xây dựng traffic đều hướng tới việc thu hút người dùng sử dụng quảng cáo. Các quảng cáo ở đây bao gồm:
  • Kinh tế Mỹ đang đi xuống, người ta nhờ bạn tham gia 1 cuộc khảo sát về ý kiến, đóng góp về tình hình. Chủ yếu họ lấy số đông và tỉ lệ cho việc phân tích. Hàng ngàn người tham gia họ sẽ thu được rất nhiều ý kiến, tuy vậy họ sẽ trả cho các bạn 1 phần nhỏ vì sự đóng góp đó. Loại này gọi là SURVEY 
  • Một ứng dụng đang phát triển, 1 lời mới quảng cáo hosting chẳng hạn. Hãy dùng visa để mua và sẽ được giảm giá 50% hoặc sẽ được tặng 50$ chẳng hạn, đó là dạng quảng cáo Credit. Tuy bạn nhận được lợi ngay lúc đó nhưng đổi lại nhà quảng cáo sẽ có bạn là khách hàng tận tụy, lâu dài nếu bạn sử dụng sản phẩm của họ. Công việc của các AFF-PUB chỉ là quảng cáo đến người dùng.
  • Nhà quảng cáo muốn tăng chất lượng người dùng. Họ sẽ bảo các bạn download game, soft đổi lại họ sent cho bạn Giftcard – Money thì đó là dạng Incentive. Chia lợi nhuận liên quan đến CASH, $.
  • Bạn nhìn thấy các link trên Facebook giới thiệu game, các banner trên website giới thiệu soft. Thì đó là những cái liên quan đến Non-incent. Họ hướng đến người dùng thực sự muốn sản phẩm của họ. Nghĩ thì dễ nhưng với loại OFFER này nhà quảng cáo rất khó tính khi bạn làm việc với họ. Đòi hỏi CR < 0.3
  • Xem Phim và nhận đc tiền. Đúng thực chất là nhà quảng cáo muốn tăng view thật và hiệu quả quảng bá. Từ đó sẽ có các Website đưa ra hình thức này. Bạn dùng và nhận đc Point. Gọi là OFFER Video 
  • Ở nước ngoài phát triển rất mạnh về adult. Những trang web 18+. Khi người dùng vào sẽ thấy các loại banner quảng cáo. chứa các Soft. Khi họ sử dụng $ để dùng soft. Các nhà phân phối sẽ nhận dc số tiền % khá lớn từ nhà quảng cáo. PL Việt Nam k hỗ trợ nên các bạn ko nên tham gia quảng cáo này.
- Yếu tố tạo nên thành công: OFFER cần rất nhiều yếu tố để thành công. Đã làm việc thì phải chuyên nghiệp mới có sự lâu dài. Các bạn thường gian lận bằng hình thức Proxy. Nhưng phải biết ko gì là miễn phí – không đầu tư lại muốn ăn đồ ngon là suy  nghĩ rất lâu gắn liền với MMO ở VN. Với AFF ở nước ngoài, họ đầu tư rất bài bản. Những trang web Incentive họ sẵn sàng chia lợi nhuận 6-4 để có được những người dùng ưu tú. Quá trình seo, vốn tạo web khá vất vả nhưng đổi lại có sự lâu dài và sự tin tưởng từ network. Không tránh khỏi cheater nhưng với 01 website tốt thì network có thể cân nhắc bỏ qua. Xem như là BONUS cho Admin. Nếu bị cheat proxy nhiều quá >70% nhà quảng cáo vẫn chỉ trừ vì bạn có Traffic thật.

b. Cách thức kiếm tiền với OFFER

- Làm thế nào kiếm tiền với OFFER? Quá trình không mấy là phức tạp. Tạo Website để tuyển member làm cùng hoặc tạo Fanpage VIP để quảng bá ứng dụng. Nếu tự tin về traffic thì hãy chiến Non-incentive, còn không tự tin thì hãy chiến Incent.

- Với MMO ở VN thì có rất nhiều thủ thuật, vì đó mà cũng kiếm được số tiền khá. Không ai nói làm thật là giàu, không ai cấm các bạn cheat. Nhưng tại sao cần phải thay đổi ?
Người nước ngoài nghĩ gì? Họ rất e ngại với các info đến từ VN bởi tính thiếu chuyên nghiệp. 100 Admin mở site thì 99 giao diện như nhau. Các Admin chiến solo không mở site thì lại chiến 1 cách cẩu thả. Ref link từ đâu? ko có! CLICK từ đâu mà nhiều vậy? Ko biết! Tại sao với chỉ duy nhất 1 chiến lược mà bạn kiếm được nhiều $ vậy? Ko rõ! Các Publisher thật họ làm bài bản (website, fanpage, buyer traffic…) còn bạn thì chả biết gì chỉ biết cắm đầu vào mà cheat!
Bởi vậy mà VN mình thuộc Blacklist. Đọc đến đây các bạn nghĩ mình ếch ngồi đáy giếng ! Nói rằng ”Bọn Tây nó cũng cheat thì sao” Xin nói thẳng : "Nó cheat thì có nhưng đều cẩn trọng và nó quan tâm đến nhà quảng cáo nữa chứ không phải chỉ riêng bản thân nó”.

- Vì vậy cần để ý những vấn đề quan trọng sau:
  • Chiến lược của bạn. Theo dõi website, nội dung, thay đổi những gì cần thiết cho quy trình traffic ứng dụng bạn đang làm.
  • Đọc rõ yêu cầu của con OFF. Đừng chiến Off Non trên các Web incent, đừng chiến OFF impoistion (image banner) mà ko đặt HTML, ko có tỉ lệ imp….
  • Tỉ lệ CR (% hiển thị mức độ tương tác của ứng dụng)
  • Tỉ lệ ROI ( Đối với Admin PRO thì phải để ý đến cái này)
  • Phát triển Website của bạn theo time (đừng cẩu thả quá)
  • Sử dụng tools tăng view cho website để lấy lượng truy cập ban đầu.(Các trang suft, soft hitleap..)
  • Giao tiếp với AM thường xuyên. Dù cho bạn có là cheater đi nữa
  • Không nên chủ quan trong mọi trường hợp.
  • Thất bại là mẹ thành công. hãy rút ra bài học, hỏi các NETWORK Nguyên nhân và từ đó rút kinh nghiệm. Rất nhiều bạn ko quan tâm đến vấn đề này!
  • Quản lý chặt những người làm việc cùng bạn. 10 người thì hết 7 người làm ẩu rồi.

c. Nói thêm về OFFER

- Để tạo ra Website chuyên nghiệp làm OFFER rất khó nhưng nếu cá nhân làm làm ăn lương thiện thì số tiền kiếm được nó “bèo nhèo” và rất ít, chỉ đủ tiền cafe hàng ngày. Muốn kiếm được nhiều tiền bạn phải dùng các thủ thuật như fake IP, Proxy để thay đổi IP của mình thành các nước khác như Mỹ hay Canada.Vì sao phải như vậy? Bởi vì các offer nước ngoài sẽ có giá rất cao so với Việt Nam, mặt bằng chung thu nhập người dân Mỹ cao hơn ta rất nhiều nên “phí” để trả cho họ cũng cao hơn, ta đang giả danh làm người Mỹ để có thể kiếm được nhiều tiền hơn. Các thủ thuật fake IP, dùng sock, proxy này rất đơn giản, bạn có thể tìm hiểu rất nhiều các trang web hướng dẫn trên mạng.
- Làm sao để đăng ký được Network tốt: Xin chia sẽ 1 số kinh nghiệm khi đăng ký network:
  • Trước hết bạn xác định phương pháp quảng cáo của mình là gì (Incent hay Non incent). Đa số anh em mình đều la site Incent. Vậy thì bạn phải hiểu rỏ site mình là dạng incent gì: Cash, Point, hay VC... Rồi mình tìm hiểu hình thức site này ở các nước như US, UK, hay CA.. Người ta hay truy cập những site này để làm gì... Để từ đó mình trả lời được 2 câu hỏi thường gặp mà network hay hỏi "What methods do you use to generate traffic?" or "What kind of offers are you interested?" hay những câu đại loại thế...
  • Sau đó bạn xây dựng web site phải nhìn chuyên nghiệp chút, nhìn để network đang nghỉ mình là 1 admin "nghiêm túc". Những NW (Network) lớn thường để ý đến ToS (Term Of Service) của site. Nên cái này các bạn để ý nhé.
  • Sau đó submit hoặc cố gắng contact với NW trước khi apply. Cứ thần thật mình là người Việt Nam, rồi trả lời gãy gọn những cái mình đã chuẩn bị ở trên.
=> Kết luận lại mình chuẩn bị kỹ nội dung nhưng đăng ký NW "hên xui" đóng vai trò khá quan trọng. Nên trước khi đăng ký các bạn nhớ chọn ngày đẹp trời.
- Làm sao để hạn chế NW die?
Trước hết mình xinh khẳng định rằng hơn 95% dân offers Việt Nam mình đều cheat. Dùng proxy, sock, VPN và info để cheat. Và như thế các nhà quảng cáo (Advertiser) sẽ chẳng có hiệu quả mong muốn với đồng tiền mình bỏ ra, và như vậy họ sẽ xóa acc của Network. Do do đã gọi là cheat thì chuẩn bị tư tưỏng bị die acc hoặc ko được pay. Chuyện đó là chuyện thường ngày ở huyện. Nhưng ai khẳng định mình cheat không die là người đó nói không thật. Vậy network sẽ check những gì để check fraud? Mình xin đưa ra 1 số ý kiến (Đã xương máu die 1 loạt network):
  • Đối với offers không chập nhận incent traffic:
    • Tỉ lệ Impression/Click, Tỉ lệ lead/click. Traffic non incent từ banner, từ PPC, từ e-mail marketing khó có thể đạt tỉ lệ này hơn 10%.
    • Có nhiều subid complete 1 offers ---> fraud
    • 1 SubiD, IP complete nhiều offfers non incent cùng 1 lúc. (Đã bị azoogle die vì vụ này, đau đớn thay)
    • Do đó nếu bạn đang dùng site incent để cheat offers non incent cần để ý để có thể cải thiện bằng cách: Boot traffic, boot click lần impression, refer...
  • Đối với offers chấp nhận incent traffic: NW đã chấp nhận incentive traffic thì chắc chắn nó đã chấp nhận có fraud, nhưng lượng gian lận nhiều quá nó mới cho die. Nên theo mình nghĩ trong incentive traffic. Tỉ lệ click không quan trọng lắm, nhưng các bạn để ý impression 1 tí. Vì các bạn nghĩ xem không thể có người nào nhìn thấy offers mà cũng click vào làm (Tỉ lệ imp/click = 1). Không dùng 1 user của site incent để lead 1 offers nhiều lần. (Mình đã bị NW cảnh cáo 1 lần).
  • Ngoài ra dù offers incent hay non incent thì cũng cần tuân thủ các qui tắc:
    • Không trùng IP
    • Info càng private càng tốt. Thực ra NW nó có thể track được info mà bạn submit cho từng offers để rồi đưa ra các fraud score để del acc.
  • Vấn đê hên xui:
    • Cái này tùy admin của NW. Bời vì sao? Bởi vì NW cũng muốn có tiền, mình cũng thế. Hai bên cần nhau cả. Nên khi làm offers admin nên contact, chat, nói chuyện thường xuyên để tạo quan hệ, biết đc thâm ý của admin. Không NW nào to mồm nói mình đồng lõa với Fraud, nhưng nó cũng hiểu rằng không fraud thì nó cũng bốc cám mà ăn.
    • Một số bạn tự hỏi tại sao tôi làm ít mà vẫn die? Vì đơn giản NW nó nghĩ rằng bạn không có khả năng đem lại lợi nhuận cho nó.
    • Một số bạn nói nó scam tớ đến 3k. Vì bạn hiểu rằng 1 tháng nó chỉ cần del 3 acc như thế là nó có 10k rồi. Và nó có đủ bằng chứng để nói lên điều đó nên nó có không pay thì cũng chẳng mất uy tín là mấy?

Saturday, September 3, 2016

Sử dụng thư viện Cron4J trong việc lập lịch chạy các nghiệp vụ trên Java

Cron4j là thư viện java nhỏ, nhẹ, đơn giản, dễ sử dụng trong việc lập lịch chạy các nghiệp vụ trên Java. Với thư viện này, bạn có thể thực hiện một công việc bất kỳ vào đúng thời điểm bạn cần theo một số quy tắc đơn giản.
Theo tôi Cron4J có một số điểm mạnh:
  • Thư viện nhẹ, nhỏ gọn, và miễn phí.
  • Lập trình rất dễ vì bạn chỉ cần nhớ vài phương thức.
  • Chạy trên mọi phiên bản Java.
  • Cú pháp cấu hình lập lịch đơn giản nhưng rất linh hoạt
Bạn có thể tải thư viện tại địa chỉ cron4j-2.2.5.zip, hoặc vào trực tiếp trang của dự án http://www.sauronsoftware.it/projects/cron4j/ để tải về

1. Lập trình với thư viện Cron4J

Việc lập trình sử dụng Cron4J rất đơn giản theo 04 bước như sau:

+ B1: Tạo một đối tượng là thể hiện lớp Scheduler (it.sauronsoftware.cron4j.Scheduler)
+ B2: Lập lịch để thực hiện tác vụ của bạn tại thời điểm bạn muốn. Lịch được lập bằng một xâu theo định dạng SchedulingPattern (it.sauronsoftware.cron4j.SchedulingPattern). Còn để thực hiện tác vụ bạn có thế sử dụng đối tượng Runnable (java.lang.Runnable) hoặc Task (it.sauronsoftware.cron4j.Task).
+ B3: Khởi chạy đối tượng Scheduler
+ B4: Dừng chạy đối tượng Scheduler nếu bạn không muốn làm gì thêm.

Dưới dây là đoạn mã ví dụ, xâu "* * * * *" xác định tác vụ được thực hiện hàng phút:

import it.sauronsoftware.cron4j.Scheduler;

public class Quickstart {
 public static void main(String[] args) {
  // Tạo một đối tượng Scheduler
  Scheduler s = new Scheduler();
  
  // Lập lịch và xác định tác vụ cần thực hiện
  s.schedule("* * * * *", new Runnable() {
   public void run() {
    System.out.println("Another minute ticked away...");
   }
  });
  
  // Khởi chạy đối tượng
  s.start();
  
  // Chờ 10 phút
  try {
   Thread.sleep(1000L * 60L * 10L);
  } catch (InterruptedException e) {
   ;
  }
  
  // Dừng tác vụ
  s.stop();
 }
}
Ví dụ trên chạy trong 10 phút. Mỗi phút sẽ in ra màn hình câu thông báo "Another minute ticked away...".

2. Cấu hình đặt lịch (Scheduling pattern)

Cron4J sử dụng Scheduling Pattern để cấu hình đặt lịch thực hiện, cấu hình tương tự như crontab trên UNIX. Đơn vị thời gian nhỏ nhất cho phép là phút.

Xâu cấu hình này được chia thành 05 phần như sau:

  • Minutes sub-pattern: Xác định phút nào tác vụ được chạy. Nhận giá trị từ 0 đến 59.
  • Hours sub-pattern: Xác định giờ nào tác vụ được chạy. Nhận giá trị từ 0 đến 23.
  • Days of month sub-pattern: Xác định ngày nào trong tháng tác vụ được chạy. Nhận giá trị từ 1 đến 31, và giá trị đặc biệt "L" để xác định ngày cuối tháng.
  • Months sub-pattern: Xác định tháng nào trong năm tác vụ được chạy. Nhận giá trị từ 1 (January) đến 12 (December), và giá trị alias tháng: "jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov" và "dec".
  • Days of week sub-pattern: Xác định thứ mấy trong tuần tác vụ được chạy. Nhận giá trị từ 0 (Sunday) đến 6 (Saturday), và giá trị aliass như: "sun", "mon", "tue", "wed", "thu", "fri" và "sat"
Mỗi phần này theo chuẩn sau:
  • Kí tự * xác định mọi giá trị.
  • Kí tự , (phẩy) được sử dụng nếu có nhiều giá trị.
  • Kí tự - xác định dải giá trị. Ví dụ a-b tức là từ a đến b.
  • Kí tự / (slash) xác định bước nhảy thời gian.
  • Kí tự | nếu bạn muốn sử dụng kết hợp nhiều xâu pattern.
Bạn có thể kết hợp lại để tạo được xâu pattern mà bạn muốn. Dưới đây là một số ví dụ:
  • 5 * * * *
    Mẫu này xác định tác vụ sẽ được chạy vào phút thứ 5 hàng giờ. Ví dụ: 00:05, 01:05, 02:05...
  • * * * * *
    Mẫu này xác định mỗi phút tác vụ sẽ được thực hiện 1 lần.
  • * 12 * * Mon
    Mẫu này xác định tác vụ sẽ được thực hiện từng phút trong khoảng thời gian 12h của ngày thứ 2.
  • * 12 16 * Mon
    Mẫu này xác đinh tác vụ sẽ được thực hiện từng phút trong khoảng 12h thứ 2 ngày 16. Nếu vào ngày 16 mà không phải là thứ 2 thì tác vụ cũng sẽ không được thực hiện.
  • 59 11 * * 1,2,3,4,5
    Tác vụ này sẽ được thực hiện vào lúc 11:59AM vào các ngày Thứ Hai, Thứ Ba, Thứ tư, Thứ 5 và Thứ 6.
  • 59 11 * * 1-5
    Mẫu này tương đương với mẫu 59 11 * * 1,2,3,4,5 ở trên.
  • */5 * * * *
    Mẫu này xác định cứ 5 phút tác vụ sẽ được thực hiện một lần. Ví dụ: 0:00, 0:05, 0:10; 0:15,...
  • 3-18/5 * * * *
    Mẫu này xác định tác vụ sẽ được thực hiện 5 phút 1 lần trong khoảng thời gian từ phút thứ 3 đến phút thứ 18. Ví dụ: 0:03, 0:08, 0:13, 0:18, 1:03, 1:08,...
  • */15 9-17 * * *
    Mẫu này xác định tác vụ được thự hiện 15 phút 1 lần trong khoảng thời gian từ 9h đến 17h. Ví dụ: 9:00, 9:15, 9:30, 9:45,..., 17:45.
  • * 12 10-16/2 * *
    Mẫu này xác định tác vụ được thực hiện từng phút vào lúc 12h trong các ngày mùng 10, 12, 14, 16 của tháng.
  • * 12 1-15,17,20-25 * *
    Mẫu này xác định tác vụ sẽ được thực hiện từng phút vào lúc 12h trong các ngày từ mùng 1 đến 15, ngày 17 và từ ngày 20 đến ngày 25.
  • 0 5 * * *|8 10 * * *|22 17 * * *
    Mẫu này xác định tác vụ được thực hiện hàng ngày vào lúc 05:00, 10:08 và 17:22.

Tài liệu tham khảo:
- http://www.sauronsoftware.it/projects/cron4j/manual.php

Thursday, July 14, 2016

Chạy tiến trình Java sử dụng Java Service Wrapper

Java Service Wrapper cho phép bạn chạy một ứng dụng Java dưới dạng một dịch vụ trên Windows (Windows Service) hay trên Linux/Unix (UNIX Daemon). Nó cũng được sử dụng để giám sát sức khỏe ứng dụng của bạn và của JVM. Sử dụng Java Service Wrapper có hai ưu điểm vượt trội:
  • Tích hợp đơn giản, bạn không cần lập trình gì thêm trong ứng dụng.
  • Triển khai và cài đặt ứng dụng như một dịch vụ trên các nền tảng khác nhau.

Cũng vì lợi ích này mà hiện nay có rất nhiều nhà phát triển Java sử dụng Java Service Wrapper để triển khai các tiến trình trên server. Chi tiết bạn có thể xem trực tiếp trên trang chủ: Java Service Wrapper

Ứng dụng hỗ trợ 03 phiên bản:

  • Professional Edition: Bao gồm tất cả các tính năng cơ bản và nâng cao. Để sử dụng phiên bản này, bạn phải mua bản quyền ứng dụng.
  • Standard Edition: Bao gồm tất cả các tính năng cơ bản và một số tính năng nâng cao. Để sử dụng phiên bản này, bạn cũng phải mua bản quyền ứng dụng.
  • Community Edition: Bao gồm tất cả các tính năng cơ bản, không có tính năng nâng cao. Phiên bản này hoàn toàn miễn phí, nếu không sử dụng gì đặc biệt có lẽ phiên bản này cũng là đủ với các bạn.
Chi tiết về các tính năng của từng phiên bản, bạn xem tại địa chỉ: Java Service Wrapper: Product Features.

Để tải ứng dụng, bạn vào địa chỉ: Java Service Wrapper: Download. Để tiện lợi khi sử dụng, bạn tải bản Cross-Platform để có thể chạy trên mọi nền tảng, dĩ nhiên kích thước của bản này sẽ lớn hơn. Có lẽ đến đây bạn quan tâm làm thế nào để tích hợp được và Java Service Wrapper?. Có 04 cách tích hợp ứng dụng của bạn với Java Service Wrapper, trong đó có 03 cách bạn không cần phải thêm bất kỳ đoạn mã nào trong ứng dụng của bạn. Dưới đây là chi tiết cách tích hợp:

* C1: Sử dụng WrapperSimpleApp

Sử dụng lớp WrapperSimpleApp để chạy ứng dụng. Đây là cách đơn giản nhất để tích hợp ứng dụng với Wrapper. Theo cách này, bạn chỉ cần cấu hình lớp Main để khởi động ứng dụng. Cách này thích hợp với các ứng dụng chỉ có một lớp Main để khởi động ứng dụng.

Sử dụng các này có một nhược điểm về vấn đề giải phóng tài nguyên khi kết thúc ứng dụng. Khi Wrapper tắt JVM, nó không gọi trực tiếp tới ứng dụng để tắt ứng dụng, Wrapper sẽ tắt JVM bằng cách gọi lệnh System.exit() từ trong JVM. Vì thế nếu ứng dụng đã đăng ký Shutdown Hook thì ứng dụng sẽ được tắt một cách bình thường, còn ngược lại ứng dụng sẽ bị tắt một cách đột ngột, trong trường hợp này có thể ứng dụng chưa giải phóng hết tài nguyên khi tắt.

Khi tích hợp theo cách này, lớp WrapperSimpleApp sẽ thay thế lớp chính (Main class) của ứng dụng. Khi bật ứng dụng, lớp WrapperSimpleApp sẽ khởi tạo sau đó gọi lớp Main trong lớp trình, lớp main này được cấu hình trong tệp.
Để hiểu rõ hơn bạn xem ví dụ cấu hình tích hợp chạy JBOSS sử dụng WrapperSimpleApp:
* Trên Windows: Hướng dẫn tích hợp JBOSS sử dụng WrapperSimpleApp trên Windows
* Trên Windows: Hướng dẫn tích hợp JBOSS sử dụng WrapperSimpleApp trên Linux/UNIX

* C2: Sử dụng WrapperStartStopApp

Cách này giúp tích hợp các ứng dụng mà sử dụng một lớp để chạy ứng dụng và sử dụng một lớp khác để dừng ứng dụng (Ví dụ như Tomcat). Thông thường, các ứng dụng loại này sẽ mở một Socket khi chạy để nhận bản tin yêu cầu dừng ứng dụng. Khi đó một lớp sẽ được gọi để dừng ứng dụng. Theo cách này bạn phải cấu hình hai lớp: Một lớp để khởi động ứng dụng và một lớp để dừng ứng dụng.
Để hiểu rõ hơn bạn xem ví dụ cấu hình tích hợp chạy Tomcat sử dụng JWrapperStartStopApp:
* Trên Windows: Hướng dẫn tích hợp Tomcat sử dụng WrapperStartStopApp trên Windows
* Trên Windows: Hướng dẫn tích hợp JBOSS sử dụng WrapperStartStopApp trên Linux/UNIX

* C3: Sử dụng WrapperListener

Cách này cung cấp một cơ chế linh động để truy cập vào tất cả các tính năng của Wrapper, nhưng cách này yêu cầu bạn phải lập trình thêm trong ứng dụng. Trong ứng dụng, bạn phải tạo một lớp cài đặt lại các phương thức trong lớp giao diện WrapperListener, sau đó bạn tạo ra một thể hiện lớp này và đăng ký với WrapperManager. Nếu không có gì đặc biệt, tôi khuyên các bạn không nên sử dụng cách này vì phức tạp và phải sửa code ứng dụng.
Nếu bạn muốn tìm hiểu sâu về cách tích hợp này, bạn xem thêm tại Hướng dẫn tích hợp WrapperListener

* C4: Sử dụng WrapperJarApp

Đây là một phương thức đơn giản khác giúp bạn chạy một ứng dụng đã được cấu hình chạy như một tệp executable jar. Khi sử dụng cách này, JVM sẽ không đóng ứng dụng của bạn như bình thường để đảm bảo mọi tài nguyên ứng dụng đều đã được giải phóng mà nó thoát JVM bằng cách gọi System.exit().
Để hiểu rõ hơn bạn xem ví dụ cấu hình tích hợp chạy Hudson sử dụng WrapperJarApp:
* Trên Windows: Hướng dẫn tích hợp Hudson sử dụng WrapperJarApp trên Windows
* Trên Windows: Hướng dẫn tích hợp Hudson sử dụng WrapperJarApp trên Linux/UNIX

Về cơ bản, đọc các ví dụ từ trang Wrapper bạn đã có thể tự tích hợp được cho mình. Vì vậy trong bài này tôi không đi chi tiết, mà nói trong nhưng trường hợp ứng dụng cụ thể trong các bài viết sắp tới.