Thứ Ba, 7 tháng 10, 2014

Cảm xúc bạn ra sao nếu nghe được những lời nhận xét về mình phía sau lưng?

Đôi khi bạn phải học cách nói ít đi và suy nghĩ nhiều hơn. Thật sự tôi mệt mỏi khi cứ phải nghĩ về việc người ta nghĩ sao về mình. Và nó thật sự không dễ chịu một chút nào khi các bạn biết được điều đó. Hãy chấp nhận nó, bỏ qua hoặc đơn gian quên nó đi nếu nó có ý trì trích bạn hoặc ít nhất bạn ko thích hàm ý của nó cho lắm. Có những lời nói đâm sau lưng thực ra lại rất tôt, tốt cho cả người đâm và người bị đâm. Nếu ai đó đủ can đảm để hứng chịu mũi đâm người đó đã tự giải phóng cho mình khỏi sự dằn vặt và bực dọc. Và nều được hãy nói chuyện thẳng thắn để mọi việc không xấu đi theo chiều hướng mà bạn không kiểm soát được. Tôi đã từng lâm vào một mớ hỗn độn của sở thích cá nhân, đi làm kiếm tiền phụ gia đình và đấu tranh tâm lý để biết được niềm đam mê của mình là gì? Tôi nhận thấy rằng bạn càng để ý và lo nghĩ về nhiều thứ thì đầu óc tâm trí bạn càng bị nhào nặn, bóp méo, cho đến khi bạn không chịu nổi và rồi bạn chẳng đi đến đâu vì bạn chẳng biết mình đang ở đâu trong chính cái mớ bòng bong mà bạn tạo ra. Trong lúc viết bài này tôi nhiều lúc cũng bí ý và chẳng biết viết gì nữa cho liền mạch với luận điểm đã được thống nhất ngay từ đầu. Rồi tôi quay sang lướt một vài trang báo mạng mà tôi hay theo dõi họ viết bài rồi vô tình hay ngụ ý mà cái tiêu đề nó đập thẳng vào mắt tôi "Hãy suy nghĩ mọi chuyện đơn giản đi!". Thật chẳng còn gì để nói cũng như diên đạt suy nghĩ trong đầu của tôi lúc này. Một câu tiêu đề mà chẳng cần đọc nội dung tôi cũng đã biết nó đúng với tôi, với nhũng gì tôi định viết ra lúc này đến như thế nào. "Hãy suy nghĩ mọi chuyện đơn giản đi, đừng sống trong mớ hỗn độn mà bạn tao ra" Cảm xúc mà bạn biết được những lời nói sau lưng cũng giống như những sợi chỉ của mớ hỗn độn đó. Đừng vội vàng phản ứng lại, bạn chỉ càng làm cho cái mớ bòng bòng cảm xúc của bạn rối thêm mà thôi. Hãy bình tình ngồi xuống, nhìn vào, đối diện với nó để moi móc lục tìm đâu là cái bạn đang gặp phải, vấn đề của bạn ở đây là gì, cái gì là phần ảo trong những lời nói đó, không có giá trị góp ý mà chủ yếu là để trì chích, thỏa mãn sự ăn miếng trả miếng... Khi nhận ra được điều đó rồi cũng giống như bạn tìm ra được nút thắt của những bó chỉ rồi mòng và gỡ nó ra một cách nhẹ nhàng. Bạn sẽ cảm thấy thoải mái vì mình có những bước cải thiện lớn về tinh thần, và cuộc sống đơn giản hơn rất nhiều. Biết đâu đó qua những lời nói đầy gai sau lưng bạn lại tìm được chính mình hay đơn giản chỉ là đâu là vấn đề hiện tại mà bạn đang gặp phải. Thật ra khi tôi viết những dòng này tôi cũng đang trong mớ bòng bong do chính tôi tạo ra và rồi tôi cũng đã tìm thấy nút thắt. Có thể bạn sẽ hỏi, lúc nào ư? Chính là lúc này đây, lúc tồi vừa dừng lại bởi một dấu chấm. Và tôi trả lời câu hỏi của tâm can tôi. Còn bạn thì sao?

Thứ Năm, 11 tháng 9, 2014

How to get SSH keygen on Linux

1. Turn on Terminal
2. Type this line: ssh-keygen
3. Then click enter button three times.
4. Finally Type this line: ~/.ssh/id_rsa.pub

Thứ Ba, 19 tháng 8, 2014

Hướng dẫn tạo Widget trong Wordpress

Widget là một công cụ hữu hiệu và thường xuyên được các developer sử dụng để đưa các trình cắm (plugin) của mình vào một site WP. Vậy nên hôm nay mình xin chia sẻ chút ít kiến thức về widget. Hi vong giúp ích được cho mọi người.

Đầu tiên để tất cả mọi custom widget được extend từ class WP_Widget của WP.
Vì vậy mọi việc chúng ta cần làm rất đơn giản chỉ việc tạo nên một class kế thừa class này của WP là về cơ bản chúng ta đã tạo được một widget rồi. Việc còn lại chỉ là custom thêm để widget theo ý của chúng ta nữa mà thôi.

class My_Widget extends WP_Widget {

 /**
  * Đây là hàm khởi tạo cho widget của chúng ta, trong hàm này 
  * chúng ta định nghĩa tên của widget vv. 
  */
 public function __construct() {
  // Code viết vào đây
 }

 /**
  * Đây là hàm dùng mà bạn muốn widget nó hiển thị ra bên ngoài thế nào. 
  * Thường thì chúng ta đặt một shortcode ở đây
  * không thì hàm này viết code html thôi cũng ok.
  * Hàm có 2 tham số, 1 là $args là tham số của widget, 
  * 2 là $instance dùng để lưu giá trị từ database lấy ra
  */
 public function widget( $args, $instance ) {
  // html hoặc shortcode
 }

 /**
  * Đây là hàm xây dựng lên các thành phần của widget trong trang back-end
  */
 public function form( $instance ) {
  // Code here
 }

 /**
  * Lưu giá trị mới vào database
  */
 public function update( $new_instance, $old_instance ) {
  // Quá trình lưu giá trị
 }
}

Mình VD luôn cho đoạn code trên:

class My_Widget extends WP_Widget {

 /**
  * Đây là hàm khởi tạo cho widget của chúng ta, 
  * trong hàm này chúng ta định nghĩa tên của widget vv. 
  */
 public function __construct() {
        parent::__construct(
 'My_Widget', // Đây là id của cái widget đó
 ('My_Widget', 'text_domain'), // Đây là tên của nó
 array( 'description' => __( 'The first widget', 'My widget' ), )
 );
 }

 /**
  * Đây là hàm dùng mà bạn muốn widget nó hiển thị ra bên ngoài thế nào.
  * Thường thì chúng ta đặt một shortcode ở đây        
  * không thì hàm này viết code html thôi cũng ok.
  * Hàm có 2 tham số, 1 là $args là tham số của widget,
  * 2 là $instance dùng để lưu giá trị từ database lấy ra
  */
 public function widget( $args, $instance ) {
        $title = apply_filters( 'widget_title', $instance['title'] );
        echo $args['before_widget'];
 if ( ! empty( $title ) ) {
  echo $args['before_title'] . $title . $args['after_title'];
 }
// Khi cac ban su dung widget no se in dong nay ra ngoai front-end 
 echo __( 'Xin chào các bạn', 'My widget' ); 
        // ở đây các bạn có thể đặt shortcode cũng được
        echo $args['after_widget'];
 }

 /**
  * Đây là hàm xây dựng lên các thành phần của widget trong trang back-end
  */
 public function form( $instance ) {
  if ( isset( $instance[ 'title' ] ) ) {
   $title = $instance[ 'title' ]; // gán giá trị cho biến $title này 
   // để in cái title ra
  }
  else {
   $title = __( 'New title', 'My widget' ); 
  // trường hợp chưa có biến $instance[ 'title' ] 
  //này tức là ban đầu mới vào thì giá trị mặc định là "New title"
  }
  ?>
  <p>
  <label for="<?php echo $this->get_field_id( 'title' ); ?>">
          <?php _e( 'Title:' ); ?>
  </label> 
  <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>"
  name="<?php echo $this->get_field_name( 'title' ); ?>" 
  type="text" value="<?php echo esc_attr( $title ); ?>">
  </p>
  <?php 
 }

 /**
  * Lưu giá trị mới vào database
  */
 public function update( $new_instance, $old_instance ) {
  // Quá trình lưu giá trị
$instance = array(); // khởi tạo mảng chứa các gía trị sẽ lưu
  $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? 
  strip_tags( $new_instance['title'] ) : '';

  return $instance; 
 }
}// end class

Giai đoạn chuẩn bị cưới đã xong, giờ đi đăng kí kết hôn thôi :D

Chúng ta sẽ sử dụng một hook của WP để register widget chúng ta vừa tạo .(cái này cứ làm nhiều khắc nhớ, chứ mình cũng ko tiện giải thích (: )

+ Đối với PHP 5.3+ ta khai báo như sau:
add_action( 'widgets_init', function(){
register_widget( 'My_Widget' );
});

+ Đối với PHP 5.2+:
add_action('widgets_init',
create_function('', 'return register_widget("My_Widget");')
);

Áp dụng tương tự cho VD trên ta có đoạn code dưới đây:
// register My_Widget widget
function register_my_widget() {
register_widget( 'My_Widget' );
}
add_action( 'widgets_init', 'register_my_widget' );

Thân

Sử dụng AJAX load page confirm trong Mailchimp

Các bạn tham khảo linh dưới đấy nhé
AJAX Mailchimp signup form integration

Chủ Nhật, 17 tháng 8, 2014