Hehe chút nào

Cố vấn
Thí sinh thi trượt lần thứ 3, hỏi bạn mình viết thư như thế nào cho gia đình. Người bạn cố vấn:
– Cậu chỉ cần viết ngắn gọn : “Kỳ thi đã kết thúc, kết quả không có gì mới”

Sập bẫy
Anh chàng mới xin làm bảo vệ đêm cho một công ty. Sau hôm làm việc đầu tiên, Sếp hỏi:
– Thế nào, đêm đầu tiên ở đây, anh ngủ ngon chứ?
– Dạ cám ơn Sếp, em ngủ rất ngon ạ
– Vậy thì anh có thể nghỉ việc đc rồi đấy

Tại sao
– Sao bàn giám đốc dài thế nhỉ
– Vì cô thư ký cao 1m7 cơ mà

Đùa dai
Một sinh viên năm thứ nhất vào thăm bác ở Hà nội đúng lúc bác đang ăn cơm
– Cháu chào bác ạ :x
– À, cháu đấy à? Ăn cơm chưa?
– Dạ cháu chưa ăn ạ :”>
– Cháu cứ đùa, bác là bác hỏi thật đấy :-w
– Dạ cháu chưa ăn thật ạ :-??
– Thằng này, chỉ được cái đùa dai. Thế ăn thật chưa? :-w
– Dạ cháu chưa ăn thật mà :(
– Uhm.. bác có lòng thành hỏi thật mà mày cứ đùa với bác hoài. Bác hỏi lần nữa nhé: ăn thật hay chưa nào?
– Dạ cháu ăn rồi ạ ~.~
– Ừ có thế chứ, phải thật thà vậy chứ :))

Bố con tên gì?
Trong một vườn trẻ cô giáo hỏi một tiểu thư nhí:
– Tên bố con là gì?
Đứa trẻ ngây thơ trả lời:
– Bố, thưa cô.
– Đúng, cô biết, thế mẹ con gọi bố là gì?
– Dạ thưa cô mẹ con gọi là “đồ bất lực” ạ!

Partition-MySQL-Version-5.1.txt

CHÚ Ý: Khi ALTER TABLE DROP PARTITION => sẽ mất dữ liệu!!!

Tạo dữ liệu ảo:
delimiter //
CREATE PROCEDURE load_part_tab()
begin
declare v int default 0;
         while v < 8000000
do
insert into transaction (created_time, price, action, object, object_id, cp_id)
values (adddate('2009-01-01',(rand(v)*36520) mod 3652), 1000, 'download', 'video', 113, 2);
set v = v + 1;
end while;
end
//

delimiter ;
call load_part_tab();

ALTER TABLE transaction
    PARTITION BY RANGE (TO_DAYS(created_time))
    (PARTITION p1 VALUES LESS THAN (TO_DAYS('2010-01-01')),
     PARTITION p2 VALUES LESS THAN (TO_DAYS('2010-04-01')),
     PARTITION p3 VALUES LESS THAN (TO_DAYS('2010-07-01')),
     PARTITION p4 VALUES LESS THAN (TO_DAYS('2010-11-01')),
     PARTITION p5 VALUES LESS THAN (TO_DAYS('2011-01-01')),
     PARTITION p6 VALUES LESS THAN (TO_DAYS('2011-04-01')),
     PARTITION p7 VALUES LESS THAN (TO_DAYS('2011-07-01')),
     PARTITION p8 VALUES LESS THAN (TO_DAYS('2011-11-01'))
    );

# Thêm một PARTITION
ALTER TABLE transaction ADD PARTITION (PARTITION p9 VALUES LESS THAN MAXVALUE);

# Tách một partition
ALTER TABLE TRANSACTION reorganize partition p9 into
(PARTITION p9 VALUES LESS THAN (TO_DAYS('2012-01-01')),
PARTITION p10 VALUES LESS THAN MAXVALUE);

#ERROR 1503 (HY000): A PRIMARY KEY must include all columns in the table's partitioning function

ALTER TABLE `transaction` DROP COLUMN `id`, DROP PRIMARY KEY;

# Ko dùng hàm (chả hạn: date(created_time) vs ) vì như thế sẽ ko sử dụng được benefit của partition
EXPLAIN PARTITIONS SELECT DATE(created_time), SUM(price) FROM transaction
WHERE created_time BETWEEN '2010-03-23 00:00:00' AND '2010-04-02 23:59:59'
GROUP BY DATE(created_time)
\G

http://dev.mysql.com/tech-resources/articles/mysql_5.1_partitioning.html
#Xóa dữ liệu "cũ"
DELETE FROM transaction
WHERE created_time > date '1995-01-01' and created_time < date '2010-01-01';

#Xóa partition p1 tương ứng
ALTER TABLE transaction DROP PARTITION p1;

Yêu phải anh dân IT

Anh đang “code”

“Mười lần gọi điện thoại cho anh ấy thì chín lần nghe được câu trả lời quen thuộc: “Anh đang code. Tí nói chuyện sau nhé!”. Đấy, chị xem, chỉ suốt ngày “sin” với “cốt” thôi, quên cả người yêu, quên cả trời đất!”, Xuân Mai (23 tuổi, Đại La, Hà Nội) tâm sự về anh chàng người yêu “ghiền” máy tính của mình.

“Code” thực ra là từ ngữ chuyên ngành mà dân IT hay nói về công việc viết lập trình. Nhưng rất lạ, không hiểu tính chất công việc của họ thế nào, song đã ngồi vào ghế, đối mặt với máy tính thì phải mòn… “bàn tọa”, mọc rễ ở chân mới đứng dậy được, bằng không, để việc dở dang, họ cứ ấm ức, dằn vặt như đại anh hùng ủ mưu lớn không thành. Continue reading →

Trích ra ngẫu nhiên một số phần tử của mảng

<?php
/**
* Hàm lấy ra ngẫu nhiên $n phần tử từ một mảng $arr
* Trong đó có $fix phần tử là các phần tử đầu tiên của mảng $arr
* (Thực chất số phần từ ngẫu nhiên chỉ là $n – $fix)
* @param array $arr Mảng các phần tử (e1, e2, e3)
* @param int $n Tổng số phần tử sẽ lấy ra
* @param int $fix Số phần tử lấy ra từ đầu mảng
* @return array Mảng các phần tử thu được
*/
function getRandomItems($arr, $n=5, $fix=3) {
    #$arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17);
    $total = count($arr);
    if ($n >= $total) {
        return $arr;  
    }
    $ret = array();
    
    for($i = 0; $i < $fix && $i < $total; $i++) {
        $ret[] = $arr[$i];
        unset($arr[$i]);
    }
    
    #echo implode(',', $ret);
    #echo " – ";
    #echo implode(',', $arr);
    
    if ($n > $fix && $n < $total) {
        $arrRandKey = array_rand($arr, $n – $fix);
        foreach ($arrRandKey as $key) {
            $ret[] = $arr[$key];
        }
    }
    #echo "\n";
    #echo implode(',', $ret);
    return $ret;
}