Bài đăng nổi bật

Hướng dẫn thay đổi thư mục root mặc định của Docker trên Linux

Hoàn cảnh: người viết gặp một trường hợp như này Được team hạ tầng cấp cho một máy chủ gồm 2 phân vùng lưu trữ, 1 phân vùng 20GB được gắn và...

18 tháng 2, 2014

Cài đặt flashplugin trên Ubuntu thông qua Proxy

Khi đặt một máy chạy Ubuntu trong một môi trường có sử dụng Proxy, người dùng sẽ không thể cài đặt được FlashPlugin cho hệ điều hành này. Đây có thể là lỗi do bộ cài đặt của plugin này.
Để khắc phục lỗi này ta làm như sau:
- Thêm nội dung sau vào trong tập tin /etc/enviroment
no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
HTTP_PROXY="http://xxx.xxx.xxx.xxx:8080/"
HTTPS_PROXY="http://xxx.xxx.xxx.xxx:8080/"
FTP_PROXY="http://xxx.xxx.xxx.xxx:8080/"
NO_PROXY="localhost,127.0.0.1,localaddress,.localdomain.com
Trong đó xxx.xxx.xxx.xxx là địa chỉ máy chủ proxy của bạn
- Thêm nội dung sau vào trong tập tin /etc/wgetrc:
https_proxy = http://xxx.xxx.xxx.xxx:8080/
http_proxy = http://xxx.xxx.xxx.xxx:8080/
ftp_proxy = http://xxx.xxx.xxx.xxx:8080/
Trong đó xxx.xxx.xxx.xxx là địa chỉ máy chủ proxy của bạn
- Tiến hành cài đặt như binh thường lần lượt các tập tin sau:
  • sudo apt-get install policykit-1
  • sudo apt-get install ttf-mscorefonts-installer
  • sudo apt-get --reinstall install flashplugin-installer

16 tháng 2, 2014

Loại bỏ Ads by sense

Gần đây khi sử dụng trình duyệt tôi hay thấy xuất hiện các quảng cáo lạ, kiểu như này:
Hiện tượng này xuất hiện trên cả Chrome, IE. Đặc biệt bạn nào hay xem trang haivl.com sẽ thấy cứ xem được mấy cái ảnh thì lại có một quảng cáo của Google chèn vào giữa rất khó chịu. Như vậy là bạn cũng giống tôi, máy đã bị nhiễm một loại malware có tên là Sense.
Tôi sẽ không đi sâu vào phân tích xem nó là cái gì, nó hoạt động như nào. Ở đây tôi sẽ chỉ hướng dẫn các bạn cách làm thế nào để loại bỏ phiền toái này thôi.
1 - Loại bỏ ứng dụng Sense đã cài vào máy
- Trên Windows, bạn vào Control Panel và chọn Programs and Features (với Windows 8) hoặc Uninstall Programs (với Windows 7)

- Trong cửa sổ hiện ra bạn tìm ứng dụng có tên Sense và gỡ nó ra khỏi máy.
2 - Loại bỏ ứng dụng khỏi Firefox.
- Bạn mở Firefox
- Trong Menu chọn Adds-on
- Trong tab Extensions, hãy tìm Adds-on có tên là sense và loại bỏ nó đi
- Khởi động lại Firefox.
3 - Loại bỏ ứng dụng khỏi Chrome
- Bạn mở Chrome ra
- Chọn Tool --> Extension
- Trong cửa sổ hiện ra, bạn gỡ bỏ tất cả các Extensions có tên là: Sense, LyricsViewer, LyricXeeker, Plus-HD 1.3, LyricsGet, BetterSurf, Downloadkepper, SurfEnchance, Feven 1.7, LyricsWoofer, LyricsFan, SimpleLyrics
- Đóng cửa sổ lại và khởi động lại Chrome
4 - Gỡ bỏ khỏi Internet Explore
- Bạn mở Internet Explore ra.
- Bấm vào biểu tượng


 - Chọn Internet Options
- Trong cửa sổ hiện ra chọn Tab Advanced và bấm nút Reset.
- Một cửa sổ hiện ra, bạn bấm lại nút Reset để xác nhận
- Đóng các cửa sổ lại và khởi động lại Internet Explore


Bài viết tham khảo hướng dẫn từ trang http://malwaretips.com


11 tháng 12, 2013

Một số tài nguyên đáng chú ý trên mạng (Update 12/12/2013)

Do dạo này có nhiều việc phải làm, nên để thuận tiện cho việc theo dõi cũng như cập nhật tài liệu (khi nào có điều kiện tôi sẽ viết thành bài riêng cho từng tài liệu), tôi liệt kê một số liên kết tham khảo để bạn đọc có thể tự tìm hiểu thêm.
Lưu ý các hạng mục được sắp xếp theo thứ tự nhóm công việc.
1 - Nhóm thư điện tử.

2 - Nhóm quản trị hệ thống Linux
3 - Nhóm NoSql:
  • Hướng dẫn cài đặt hadoop và hbase:
    •  Phần mềm:
    • Hướng dẫn cài đặt: Hướng dẫn cài đặt Hadoop - Hbase
    • Lưu ý: Hbase và Hadoop phải có sự tương thích về phiên bản, không hiểu sao vấn đề tương thích ngược của hai phần mềm này Apache làm rất kém.

03 tháng 12, 2013

Vòng đời của một servlet trong


1. Vòng đời một servlet trong java
Vòng đời một servlet được kiểm soát bởi container mà servlet được triển khai. Khi một request được gắn với một servlet, container sẽ thực hiện các bước sau:
a. Nếu một thể hiện (instance) của servlet không tồn tại, container sẽ:
  • Tải lớp servlet
  • Tạo một thể hiện của lớp servlet
  • Khởi tạo thể hiện của servlet bằng cách gọi hàm init.
b. Gọi hàm service, và chuyển tham số đầu vào là đối tượng request và response.

2. Nếu container muốn loại bỏ servlet, nó sẽ gọi hàm destroy.
Kiểm soát các sự kiện trong vòng đời của servlet.
Bạn có thể giám sát và thực hiện các công việc dựa vào việc lắng nghe các sự kiện trong vòng đời của servlet. Bảng dưới đây là danh sách các sự kiện có thể được giám sát và thực thi. Khi một sự kiện lắng nghe (Listener method) được gọi, nó sẽ phát sinh ra các tham số sự kiện bao gồm các thông tin tương ứng với từng sự kiện. Ví dụ với các hàm trong HttpSessionListener sẽ được chuyển tham số HttpSessionEvent, được bao hàm trong HttpSession.


Object

Event

Listener Interface and Event
Class

Web context (see Accessing the Web Context)

Initialization and destruction

javax.servlet.ServletContextListener and

ServletContextEvent

Attribute added, removed, or replaced

javax.servlet.ServletContextAttributeListener and

ServletContextAttributeEvent

Session
(See Maintaining Client State)

Creation, invalidation, activation, passivation, and timeout

javax.servlet.http.HttpSessionListener, javax.servlet.http.HttpSessionActivationListener, and

HttpSessionEvent

Attribute added, removed, or
replaced

javax.servlet.http.HttpSessionAttributeListener and

HttpSessionBindingEvent

Request

A servlet request has started being processed by web components

javax.servlet.ServletRequestListener and

ServletRequestEvent

Attribute
added, removed, or replaced

javax.servlet.ServletRequestAttributeListener and

ServletRequestAttributeEvent


Dưới đây là một ví dụ:
import database.BookDBAO;
import javax.servlet.*;
import util.Counter;

import javax.ejb.*;
import javax.persistence.*;

public final class ContextListener
    implements ServletContextListener {
    private ServletContext context = null;

    @PersistenceUnit
    EntityManagerFactory emf;

    public void contextInitialized(ServletContextEvent event) {
        context = event.getServletContext();
        try {
            BookDBAO bookDB = new BookDBAO(emf);
            context.setAttribute("bookDB", bookDB);
        } catch (Exception ex) {
            System.out.println(
                "Couldn’t create database: " + ex.getMessage());
        }
        Counter counter = new Counter();
        context.setAttribute("hitCounter", counter);
        counter = new Counter();
        context.setAttribute("orderCounter", counter);
    }

    public void contextDestroyed(ServletContextEvent event) {
        context = event.getServletContext();
        BookDBAO bookDB = context.getAttribute("bookDB");
        bookDB.remove();
        context.removeAttribute("bookDB");
        context.removeAttribute("hitCounter");
        context.removeAttribute("orderCounter");
    }
}
3. Định nghĩa lớp lắng nghe các sự kiện:
Có thể định nghĩa các lớp lắng nghe sự kiện thông qua listener của phần định nghĩa trong project.
Có thể dùng netbean để định nghĩa, theo các bước sau:
  • Mở ứng dụng.
  • Chọn WEB-INF
  • Bấm kép vào web.xml
  • Bấm tab General.
  • Mở phần Web Application Listener.
  • Chọn Add.
  • Trong cửa sổ Add, chỉ tới lớp đã định nghĩa
  • Chọn Ok
Kiểm soát lỗi của servlet
Bất cứ khi nào xảy ra lỗi trong servlet, hệ thống , container sẽ sinh ra một trang mặc định với nội dung: A Servlet Exception Has Occurred
Nhưng ta có thể định nghĩa lại nội dung trang trả về mặc định này. Xem thêm tại Mapping Errors to Error Screens

26 tháng 11, 2013

Tạo SOAP message bằng Java

Về cơ bản một SOAP message bao gồm 3 thành phần:
  • SOAP-ENV:Envelope
  • SOAP-ENV:Header
  • SOAP-ENV:Body
Như hình vẽ dưới đây:
Để  tạo một SOAP message ta tuân thủ theo các bước sau:
  • Tạo một đối tượng của javax.xml.soap.MessageFactory.
  • Sau đó tạo đối tượng javax.xml.soap.SOAPMessage từ MessageFactory.
  • Một SOAPMessage sẽ chứa toàn bộ javax.xml.soap.SOAPEnvelope" 
  • Một SOAPEnvelope sẽ chứa header và body của SOAP message 
Và ta tạo SOAP message theo code ví dụ dưới đây:

18 tháng 11, 2013

Build scribe trên Ubuntu server 12.04 64 bit



http://ycavatars.blogspot.com/2012/05/build-scribe-on-ubuntu-1204.html
>

Một số link tham khảo:

Cài các thư viện cần thiết

$sudo apt-get install make flex bison libtool libevent-dev automake pkg-config libssl-dev libboost-all-dev libbz2-dev build-essential g++ python-dev git

Cài đặt Thrift

$git clone https://github.com/apache/thrift.git
$cd thrift
$git fetch
$git branch -a
$git checkout 0.9.x # latest version at this time
# install jdk and ant if you need the java code generator
$sudo apt-get install openjdk-6-jdk ant
$./bootstrap.sh #ignore warning
$./configure
$make
$sudo make install

Kiểm tra lại thrift

#in thrift/tutorial directory
$thrift -r -v --gen java tutorial.thrift
Nếu thấy thư mục gen-java được tạo ra là được.

Cài đặt fb303

#chuyển tới thư mục thrift/contrib/fb303
$./bootstrap.sh
$./configure CPPFLAGS="-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H"
$make
$sudo make install

Cài đặt Python Module cho Thrift và fb303

# từ thư mục thrift
$ cd lib/py
$ sudo python setup.py install
$ cd contrib/fb303/py
$ sudo python setup.py install
Để kiểm tra module python đã được cài đặt, ta chạy lệnh, nếu không có lỗi là Okey:
$ python -c 'import thrift' ; python -c 'import fb303'

Cài đặt Scribe

Chú ý phải có bước chạy ./bootstrap.sh trước khi chạy configure.
$git clone https://github.com/facebook/scribe.git
$cd scribe
$./configure CPPFLAGS="-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H -DBOOST_FILESYSTEM_VERSION=2" LIBS="-lboost_system -lboost_filesystem"
$make
$sudo make install
Tạo biến môi trường
export LD_LIBRARY_PATH=/usr/local/lib

Cài đặt module Python cho Scribe

$ cd lib/py
$ sudo python setup.py install
Kiểm tra lại bằng lệnh, thấy không có lỗi là okey:
$python -c 'import scribe'
  Cuối cùng là chạy  'scribed'.
Một số chú ý:
  • Hiện tôi phải lấy nguồn từ git thì mới build thành công, các nguồn khác tôi thử đều có lỗi.
  • Nếu thrift phải build thông qua proxy, bạn mở file thrift/lib/java/build.properties và thêm dòng sau:
    #proxy configure
    proxy.host=10.30.11.6 #ip của proxy server
    proxy.port=3128 #port của proxy server
    proxy.enabled=true

18 tháng 10, 2013

Cấu hình proxy trong Ubuntu bằng terminal

Bài này chúng ta sẽ tập trung vào thao tác cấu hình proxy cho các máy chạy Ubuntu bằng dòng lệnh ("terminal").
Ta sẽ tập trung giải quyết cho các câu hỏi:
  • Mạng nội bộ của tôi sử dụng proxy, tôi phải cấu hình nó như nào?
  • Tôi đã cài đặt proxy cho hệ thống, tuy nhiên lệnh "apt-get install" lại không thể cài đặt được phần mềm 
Trước hết, để sử dụng được proxy trên các máy chạy Ubuntu, ta cần phải thêm thông tin cấu hình vào tập tin "/etc/enviroment". Nội dung cần thêm như sau:
HTTP_PROXY="http://10.61.11.38:3128/"
HTTPS_PROXY="http://10.61.11.38:3128/"
FTP_PROXY="http://10.61.11.38:3128/"
NO_PROXY="localhost,127.0.0.1,localaddress,.localdomain.com"

http_proxy="http://10.61.11.38:3128/"
https_proxy="http://10.61.11.38:3128/"
ftp_proxy="http://10.61.11.38:3128/"
no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"

Ta để cả in hoa và in thường để phòng trường hợp có một số ứng dụng không nhận một trong hai kiểu.
Tiếp theo, để có thể sử dụng proxy với lệnh "apt-get install" ta phải làm như sau.
Mở tập tin "/etc/apt/apt.conf" và thêm vào nội dung sau:

Acquire::http::proxy "http://10.61.11.38:3128/";

Sở dĩ phải thêm nội dung này do apt-get luôn bỏ qua nội dung trong tập tin enviroment.

Link tham khảo: http://askubuntu.com/questions/158557/setting-proxy-from-terminal