2 tháng 4, 2016

Enable Icons Menus Trong Hệ Điều Hành Linux

Mặc định trong UbuntuFedora icon menu bị tắt đi. Dưới đây là cách bật icon menu trong hệ điều hành Linux:
Để bật chế độ menuicon, cần thực hiện lệnh sau:
#!/bin/bash
~$ gsettings set org.gnome.desktop.interface menus-have-icons true

hoặc:

~$ gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gtk/ButtonImages': <1>, 'Gtk/MenuImages': <1>}"

Password confirm validator sử dụng Hibernate Validator

Cách tạo và kiểm tra tính hợp lệ của mật khẩu xác nhận khi đăng kí tài khoản sử dụng hibernate-validator

...
@Transient
private boolean passwordConfirmValid;
public void setPasswordConfirmValid(boolean passwordConfirmValid) {
this.passwordConfirmValid = passwordConfirmValid;
}
@AssertTrue(message = "Password do not match.")
public boolean isPasswordConfirmValid() {
if (this.password == null) {
passwordConfirmValid = this.password_again == null;
} else {
passwordConfirmValid = this.password_again.equals(this.password);
}
return passwordConfirmValid;
}
...
view raw Account.java hosted with ❤ by GitHub
...
<div class="form-group">
<sForm:label path="account.password" title="Password" cssClass="control-label col-sm-2">Password:</sForm:label>
<div class="col-sm-6">
<sForm:password path="account.password" title="Password" placeholder="Password" cssClass="form-control" />
<sForm:errors path="account.password" cssClass="error" />
</div>
</div>
<div class="form-group">
<sForm:label path="account.password_again" title="Password Again" class="control-label col-sm-2">
Password Again:</sForm:label>
<div class="col-sm-6">
<sForm:password path="account.password_again" title="Password Again" placeholder="Password Again"
class="form-control" />
<sForm:errors path="account.password_again" cssClass="error" />
<sForm:errors path="account.passwordConfirmValid" cssClass="error" />
</div>
</div>
...

Tùy chỉnh ngoại lệ không tìm thấy tài nguyên khi duyệt web trong Spring MVC

@Controller
public class BookController {
private static final Logger logger = LoggerFactory.getLogger(BookController.class);
@Autowired
@Qualifier("bookService")
private BookService bookService;
@Autowired
@Qualifier("cartBean")
private Cart cartBean;
@ExceptionHandler(ResourceNotFoundException.class)
public String handleResourceNotFoundException(HttpServletRequest request) {
HttpSession session = request.getSession(true);
session.setAttribute("cartBean", cartBean);
return "404page";
}
@RequestMapping(value = "/book/detail/{bookId}")
@SuppressWarnings("unchecked")
public String details(@PathVariable("bookId") long bookId, Model model, HttpServletRequest request) {
logger.info("Show Book Detail Page");
HttpSession session = request.getSession(false);
Book book = null;
if (session != null && session.getAttribute("books") != null) {
List<Book> books = (List<Book>) session.getAttribute("books");
for (Book b : books) {
if (b.getId() == bookId) {
book = b;
model.addAttribute("book", b);
break;
}
}
if (book == null) {
throw new ResourceNotFoundException();
}
} else {
book = bookService.findBook(bookId);
if (book == null) {
throw new ResourceNotFoundException();
}
model.addAttribute("book", book);
}
return "book-detail";
}
}
@Controller
@SessionAttributes(names = "cartBean")
public class ResourceNotFoundController {
@Controller
@SessionAttributes(names = "cartBean")
public class ResourceNotFoundController {
@Autowired
@Qualifier("cartBean")
private Cart cartBean;
@RequestMapping("/404")
public String handleResourceNotFound(Model model, HttpServletRequest request) {
HttpSession session = request.getSession(false);
if (session == null) {
model.addAttribute("cartBean", cartBean);
}
return "404page";
}
}
@ResponseStatus(HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {
private static final long serialVersionUID = -3329819391367130855L;
}

Tạo desktop launcher cho Eclipse trong hệ điều hành Linux

1. Tạo file eclipse.desktop

Sử dụng một editor bất kì để tạo file trong thư mục /usr/share/applications.

Ví dụ sử dụng gedit:

$ sudo gedit /usr/share/applications/eclipse.desktop

2. Thêm nội dung sau vào file vừa tạo và lưu lại.

[Desktop Entry]
Encoding=UTF-8
Name=Eclipse
Comment=Eclipse Mars 4.5.1
Exec=/path/to/your/eclipse_folder/eclipse
Icon=/path/to/your/eclipse_folder/icon.xpm
Terminal=false
Type=Application
Categories=GNOME;Application;Development;
StartupNotify=true

1 tháng 4, 2016

Cách tạo mã tự động tăng trong PostgreSQL

Ví dụ tạo cột book_id tự động tăng trong bảng tbl_books

  1. Tạo sequences tự động tăng giá trị cho cột book_id:

    CREATE SEQUENCE public.book_id_seq
    INCREMENT 1
    MINVALUE 1
    MAXVALUE 9223372036854775807
    START 10000
    CACHE 1;
    ALTER TABLE public.book_id_seq
    OWNER TO postgres;
    view raw book_id_seq.sql hosted with ❤ by GitHub
  2. Tạo bảng tbl_books sử dụng sequences đã tạo trước đó:

    CREATE TABLE public.tbl_books
    (
    book_id bigint NOT NULL DEFAULT nextval('book_id_seq'::regclass),
    CONSTRAINT pk_book_id PRIMARY KEY (book_id)
    )
    WITH (
    OIDS=FALSE
    );
    ALTER TABLE public.tbl_books
    OWNER TO postgres;
    view raw tbl_books.sql hosted with ❤ by GitHub

Cài đặt Oracle JDK trong Ubuntu

  1. Thông báo cho hệ thống biết nơi chứa jdk
  2. $ sudo update-alternatives --install "/usr/bin/java" java "/opt/java/oracle_jdk/bin/java" 1
    $ sudo update-alternatives --install "/usr/bin/javac" javac "/opt/java/oracle_jdk/bin/javac" 1
    $ sudo update-alternatives --install "/usr/bin/jar" jar "/opt/java/oracle_jdk/bin/jar" 1
    $ sudo update-alternatives --install "/usr/bin/javaws" javaws "/opt/java/oracle_jdk/bin/javaws" 1

  3. Mở file PATH của hệ thống:
  4. Mở Terminal và gõ lệnh sau:

    $ sudo gedit /etc/profile.d/jdk.sh

    hoặc:

    $ sudo vi /etc/profile.d/jdk.sh

  5. Sửa file PATH của hệ thống:
  6. Thêm vào các dòng lệnh sau:

    #!/bin/bash
    export JAVA_HOME=/opt/java/oracle_jdk
    export PATH=$PATH:$JAVA_HOME/bin

  7. Logout hoặc khởi động lại.
Lưu ý: Cài đặt Maven tương tự nhưng chỉ cần sửa PATH của hệ thống là được.