Thứ Năm, 21 tháng 12, 2017

Kế thừa và đa hình trong java

public class SinhVien {

    public static void main(String[] args) {
        Cat c=new Cat("Tom",2,1);
        Mouse m=new Mouse("Jerry",3);
       
        System.out.println(""+getT(c)); //Cat
        System.out.println(""+getT(m)); //Mouse
       
    }
   
    //Ứng dụng đa hình, truyền qua tham số
    public static String getT(Animal animal) {
       
        return animal.getAnimalName();
    }
}

abstract class Animal {

    // Tên, ví dụ Mèo Tom, Chuột Jerry.
    private String name;

    // Constructor mặc định.
    public Animal() {
        // Gán giá trị mặc định cho 'name'.
        this.name = this.getAnimalName();
    }

    public Animal(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    // Đây là một phương thức trừu tượng.
    // Trả về tên của loài động vật này.
    // Nội dung cụ thể của phương thức này
    // sẽ được thực hiện (implemented) tại các lớp con.
    public abstract String getAnimalName();

}

class Cat extends Animal {

    private int age;
    private int height;

    public Cat(int age, int height) {
        // Gọi tới Constructor mặc định của lớp cha (Animal).
        // Nhằm mục đích gán tạo giá trị cho các trường (field) của lớp cha.
        super();
        // Sau đó mới gán giá trị cho các trường (field) của nó.
        this.age = age;
        this.height = height;
    }

    public Cat(String name, int age, int height) {
        // Gọi tới Constructor của lớp cha (Animal)
        // Nhằm mục đích gán tạo giá trị cho các trường (field) của lớp cha.
        super(name);
        // Sau đó mới gán giá trị cho các trường (field) của nó.
        this.age = age;
        this.height = height;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getHeight() {
        return height;
    }

    public void setHeight(int height) {
        this.height = height;
    }

    // Thực hiện (implement) phương thức trừu tượng được khai báo tại lớp cha.
    @Override
    public String getAnimalName() {
        return "Cat";
    }
}

class Mouse extends Animal {

    private int weight;

    // Constructor mặc định.
    public Mouse() {
        // Gọi tới cấu tử Mouse(int)
        // Call to constructor Mouse(int)
        this(100);
    }

    // Constructor có 1 tham số
    public Mouse(int weight) {
        // Nếu bạn không gọi bất kỳ một super(..) nào.
        // Java sẽ gọi một super() mặc định.
        // super();
        this.weight = weight;
    }

    // Constructor có 2 tham số.
    public Mouse(String name, int weight) {
        super(name);
        this.weight = weight;
    }

    public int getWeight() {
        return weight;
    }

    public void setWeight(int weight) {
        this.weight = weight;
    }

    @Override
    public String getAnimalName() {
        return "Mouse";
    }
}

class AsianCat extends Cat {

    public AsianCat(String name, int age, int height) {
        super(name, age, height);
    }

    // Ghi đè (override) phương thức của lớp cha (Cat)
    @Override
    public String getAnimalName() {
        return "Asian Cat";
    }
}

Thứ Tư, 18 tháng 10, 2017

Sắp xếp Alphabet trong Sublime Text 3

- Chọn khối text cần sort, rồi nhấn F9 (với phiên bản cũ v2.0 thì nhấn F5)
hoặc vào menu Edit → Sort Lines

Xuất toàn bộ tên file trong thư mục ra file text

Vào thư mục cần list tên.
Nhấn giữ phím Shift + click chuột phải ⇒ chọn Open Command Window Here.
Cửa sổ CMD xuất hiện, ta lần lượt gõ 2 lệnh sau và nhấn enter:  
chcp 65001 (cái này để kích hoạt encoding UTF-8 tiếng việt)

dir /b /a-d > dir /b /a-d > D:\zout.txt
Khi đó: ở ổ D sẽ có file: zout.txt chứa list file name.

Thứ Ba, 10 tháng 10, 2017

List 10 truyện NGÔN TÌNH nên đọc

List 10 truyện NGÔN TÌNH nên đọc, ưu tiên theo thứ tự từ trên xuống:

1. Bến xe - Thương Thái Vi
2. Mãi mãi là bao xa - Diệp Lạc Vô Tâm
3. Bên nhau trọn đời - Cố Mạn
4. Từng có một người yêu tôi như sinh mệnh - Thư Nghi
5. Hoa tư dẫn - Đường Thất Công Tử
6. Thất tịch không mưa - Lâu Vũ Tình
7. Sẽ có thiên thần thay anh yêu em - Minh Hiểu Khê
8. Bộ bộ kinh tâm - Đồng Hoa
9. Yêu em từ cái nhìn đầu tiên - Cố Mạn
10. Tam sinh tam thế Thập lí đào hoa - Đường Thất Công Tử

Các truyện ngôn tình khác khuyên không nên đọc, tốn thời gian...

Thứ Năm, 5 tháng 10, 2017

Tạo file truyện tranh dạng mobi để đọc trên Kindle Paperwhite

Bước 1: tải Kindle Comic Converter tại trang: https://kcc.iosphe.re/
Bước 2: tải Kindle Gen tại trang: https://www.amazon.com/gp/feature.html?ie=UTF8&docId=1000765211
Bước 3: mở web truyện và tải file hình ảnh của truyện bằng extension ImagePicker của Firefox.
Bước 4: đổi tên file cho đúng thứ tự
Bước 5: Nén thư mục chứa ảnh dưới dạng zip hoặc 7z
Bước 6: Cài app (1), giải nén app (2) và copy file kindlegen.exe vào thư mục đã cài đặt của app (1)
Bước 7: chạy app (1) Kindle Comic Converter và Add file zip ở bước (5)
Bước 6: Chọn loại thiết bị muốn xuất, ở đây chọn Kindle PW3
Bước 8: Click Convert và chương trình sẽ xuất dạng .mobi ở thư mục được add file.
Bước 9: Copy file này vào Kindle của bạn
Bước 10: thưởng thức. :))

Thứ Sáu, 22 tháng 9, 2017

Chỉnh DPI điện thoại Android

Ae nào đã root thì vào system edit build.prop chỉnh dòng này là xong nhanh gọn lẹ không cần đến PC.

Thứ Năm, 21 tháng 9, 2017

Reset lại trường ID tự động tăng (Identity ID) trong SQL Server

Chạy lệnh để thiết lập lại ID bắt đầu từ vị trí sau số 0 tức là số 1:
DBCC CHECKIDENT ('TableName', RESEED, 0)

ĐƯA WINDOWS PHOTO VIEWER TRỞ LẠI WINDOWS 10

MỞ NOTEPAD VÀ LƯU ĐOẠN CODE SAU VỚI TÊN PhotoViewer.reg VÀ ENCODING MẶC ĐỊNH LÀ ANSI
RỒI SAU ĐÓ CHẠY FILE NÀY.

Windows Registry Editor Version 5.00

; Change Extension's File Type
[HKEY_CURRENT_USER\Software\Classes\.jpg]
@="PhotoViewer.FileAssoc.Tiff"


; Change Extension's File Type
[HKEY_CURRENT_USER\Software\Classes\.jpeg]
@="PhotoViewer.FileAssoc.Tiff"


; Change Extension's File Type
[HKEY_CURRENT_USER\Software\Classes\.gif]
@="PhotoViewer.FileAssoc.Tiff"


; Change Extension's File Type
[HKEY_CURRENT_USER\Software\Classes\.png]
@="PhotoViewer.FileAssoc.Tiff"


; Change Extension's File Type
[HKEY_CURRENT_USER\Software\Classes\.bmp]
@="PhotoViewer.FileAssoc.Tiff"


; Change Extension's File Type
[HKEY_CURRENT_USER\Software\Classes\.tiff]
@="PhotoViewer.FileAssoc.Tiff"


; Change Extension's File Type
[HKEY_CURRENT_USER\Software\Classes\.ico]

@="PhotoViewer.FileAssoc.Tiff"

Thứ Hai, 4 tháng 9, 2017

Best Font for Book content

1. For Literary Fiction: Baskerville

2. For Romantic Fiction: Sabon


3. For Thrillers and Airport Page-Turners: Garamond

4. For Academic Non-Fiction: Caslon

5. For General Interest: Utopia

Thứ Năm, 10 tháng 8, 2017

Thứ Năm, 20 tháng 7, 2017

Sublime Text Regex

SublimeText Regular Expression:

01. Quantifiers: dấu +
    +Chuỗi mẫu: aaabc
    Tìm: a+ ra aaa (3 chữ liền nhau) -> Thay: magic    Ra: magicbc
    Tìm: a ra a a a (3 chữ rời nhau) -> Thay: magic     Ra: magicmagicmagicbc
    Tìm: a{2} ra aa (2 chữ liền nhau) -> Thay: magic     Ra: magicabc
02. Capturing Groups: dùng dấu () để nhóm từ cần giữ nguyên
    +Chuỗi mẫu: abc
    Tìm: (a)bc -> Thay: $1 CITY        Ra: a CITY
    +Chuỗi mẫu: (a)bc
    Tìm: \((a)\)bc -> Thay: $1 CITY        Ra: a CITY
    Dấu \ để chọn từng ký tự
    Tìm: (\(a\))bc -> Thay: $1 CITY        Ra: (a) CITY
03. Finding Non-literal values: Tìm các chữ cái
    +Chuỗi mẫu: "abc abc"
    Tìm: ([a-z]+) -> Thay: $1 CITY        Ra: abc CITY abc CITY
    [a-z] để tìm các chữ cái từ a-z
    [A-Z] để tìm các chữ cái từ A-Z
    \d để tìm các chữ số
    +Chuỗi mẫu: "abc aBc aB3"
    Tìm: ([a-zA-Z\d]+) -> Thay: $1 CITY        Ra: abc CITY aBc CITY aB3 CITY
04. Not Finding Thing: Ký tự ^ bỏ qua giá trị cần tìm
    +Chuỗi mẫu: "abc aBc aB3"
    Tìm: ([^ "]+) -> Thay: $1 CITY        Ra: "abc CITY aBc CITY aB3 CITY"

Thứ Hai, 17 tháng 7, 2017

Thành công không phải ngẫu nhiên, Thất bại không phải số phận

Thành công không phải ngẫu nhiên, Thất bại không phải số phận
***
Chúng ta thường nói, ai đó thành công không phải là ngẫu nhiên. Có nghĩa là, trong đó bao gồm cả ý chí, quyết tâm, nghị lực và có trí tuệ nắm bắt thời cơ, có tài năng tạo nên thời cơ và thao túng điều kiện môi trường v v ...

Sự thành công thật sự tuyệt đối không phải là nhờ may mắn mà có được. Cũng vì nguyên do đó mà chúng ta có thể tin rằng, thất bại cũng quyết không phải do số phận gây nên. Nhiều người cứ cho rằng, sự thất bại của mình là do số phận, thực ra, nếu chúng ta bình tĩnh mà quan sát, thì sẽ phát hiện, số phận hay còn gọi là vận mệnh vẫn nắm trong tay mình; Những ai kiên cường thường không làm mất ý chí trước hoàn cảnh môi trường bất lợi, chỉ những ai thường hay chần chừ do dự mới phải cúi đầu rút lui trước sức cản trở bên ngoài, và dễ lung lay ý chí .

Chúng ta thường thấy một số ai đó, họ thông minh và có tài năng trời phú. Chúng ta cho rằng, rất có thể họ có thành tựu, cho dù không nhiều. Mà ban đầu họ cũng ngỡ mình thể nào cũng có chút thành tựu. Thế nhưng về sau, trong số họ, có người phát huy sở trường của mình, đi lên như diều gặp gió, nhưng có người lại bị thất bại bởi không biết xử lý những chuyện vụn vặn trong sinh hoạt.

Tôi phát hiện nhiều người có tính lười biếng, họ cứ cho rằng còn ngày rộng tháng dài, còn ối thời gian, lại thêm mình thông minh có tài, thể nào rồi cũng thành công. Thế nhưng, lười biếng và tản mạn sẽ hình thành thói quen, và họ dần dần cảm thấy hài lòng trước sinh hoạt an lạc thủ thường, trí thông minh trời phú thường bị họ bỏ rơi rồi bị hoen dỉ và mục nát. Khi mà người khác không khỏi tiếc thay cho họ, thì họ lại quên từ lâu việc bản thân mình rất có thể đạt được thành tựu này nọ.

Có người phụ bạc trí thông minh trời phú của mình, đó là vì họ quá thông minh. Họ không thấy những người dày công khắc khổ cho công việc của mình, họ giễu cợt những người muốn đi lên con đường thành công và cho rằng đó là rồ dại.

Bạn đã từng thấy những ai thông minh giễu cợt người khác là rồ dại chưa? Trong đầu óc những ai thông minh đó cho rằng: Cũng lĩnh tiền lương như nhau, cũng cơm nước ăn vận như nhau, cũng cưới vợ rồi sinh con đẻ cái, bỏ ra ít một chút sức lực, thì xếp cũng chẳng phê bình tớ, càng không có chuyện khai trừ tớ. Còn các vị, tội gì mà chăm chỉ làm việc cho cực nhọc? Thế nhưng, họ đâu có biết rằng, họ ứng phó với xếp dễ dàng, duy trì sinh hoạt cũng không lấy gì làm khó cho lắm, nhưng họ sẽ có sự đối đáp như thế nào với vận mệnh của mình, đây mới chính là trách nhiệm lớn nhất và là đề tài quan trọng nhất của cuộc đời.

Tôi thường nghe một số cụ bà xấu số phàn nàn rằng "Cả cuộc đời trống không", tôi cảm thấy đây là lời than thở sao mà nặng nề. Bạn muốn làm con người chỉ biết làm công ăn lương, sống bình thường cho qua ngày đoạn tháng, tuy vất vả nhưng lại đơn giản? hay là bạn muốn làm sao cho cuộc sống của mình trở nên có ý nghĩa?

Có người đã ngày càng đi xa với mục tiêu phấn đấu của mình, đó là vì tay chèo của họ không vững vàng, cho nên họ chỉ có thể lúc rẽ trái lúc rẽ phải , lúc trước lúc sau theo sóng thủy triều xô đẩy, theo hướng gió thổi ngược xuôi. Họ không có khí phách kiên quyết đi theo hướng mục tiêu đã định của mình. Suốt đời họ chỉ chiều theo hoàn cảnh. Kết cục là, họ bị hoàn cảnh nhấn chìm. Bạn bảo, đó chẳng phải cũng là tấn bi kịch hay sao? Thế nhưng trong sinh hoạt chúng ta luôn chứng kiến có người là nhân vật trong tấn bi kịch đó.

Mong bạn không nên làm kẻ rồ dại thông minh. Có một câu đối thoại trong một bộ phim Mỹ rằng "Miệt mài với công việc chẳng khác nào là ngu xuẩn", thế nhưng sự thật chứng minh rằng, chỉ có những ai miệt mài với công việc mới có thể cứu vãn bản thân và cứu vãn cả người khác. Nếu như bạn có trí thông minh trời phú, thì tôi khuyên bạn nhất định phải miệt mài với công việc như một người ngu xuẩn.

Chỉ những ai làm việc hết sức mình, khổ công rèn luyện mình mới thể hiện ra trí thông minh. Còn những ai tưởng như thông minh, bình thường hay giễu cợt mỉa mai người khác là "ngu xuẩn", thì người đó mới là ngu xuẩn thật thụ.

Có một bài hát Trung Quốc mang tên "Chân thiện mỹ". Đây là một bài hát rất hay, rất được công chúng hoan nghênh, trong đó có câu:

"Biết bao dây dưa, biết bao đau buồn, biết bao khắc khoải, đổi lấy bao chân thiện mỹ."

"Biết bao hy sinh, biết bao mai một, biết bao tàn lụi, chỉ thừa lại bao chân thiện mỹ."

Chân, thiện, mỹ là điều kiện chủ yếu để tạo nên tác phẩm nghệ thuật, và cũng là điều kiện quan trọng của mọi thành tựu. Những ai thu được thành tựu, dọc đường phải khắc phục dần những dây dưa, những đau buồn, và cả những khắc khoải, mới có thể tránh bị hy sinh, tránh bị mai một, và mới không đến nỗi bị tàn lụi dọc đường. Chỉ có bằng nghị lực của mình, nắm vững phương hướng, vượt qua mọi khó khăn, mới gặt hái được thành công. Bất kể thành công nào cũng đều phải trải qua trắc trở, trải qua gió táp mưa sa.
Các bạn thân mến, bất kể là thành công hay thất bại, chúng ta cũng nên nuôi niềm hy vọng, chỉ cần chúng ta vẫn giữ được niềm tin và hy vọng, thì sẽ vẫn giữ được phương hướng phấn đấu và rồi sẽ đi đến thành công cho dù thành công đó không nhiều, không lớn, nhưng chúng vẫn có thể cảm nhận được niềm vui trong thu hoạch.
---
(tác giả LA LAN - 31-10-2006 phát trên Đài phát thanh Quốc tế Trung Quốc)

Thứ Sáu, 14 tháng 7, 2017

10 ngành học có nguy cơ thất nghiệp cao nhất

Danh sách những ngành học có nguy cơ thất nghiệp cao nhất hiện nay, các bạn thí sinh nên tìm hiểu kĩ trước khi nộp hồ sơ.

1. Ngành sư phạm

Đây là khối ngành đang được Bộ GD-ĐT báo động đỏ về tình trạng thừa nhân lực. Theo thống kê mới nhất của Bộ GD-ĐT cả nước hiện có hơn 35.000 giáo viên phổ thông dư thừa và còn khoảng 10.000 sinh viên sư phạm sắp ra trường có nguy cơ thất nghiệp.

Trường ĐHCĐ sư phạm có hàng trăm nghìn sinh viên ra trường và không có việc làm.

Ở một nghiên cứu khác của PGS.TS Bùi Văn Quân – Hiệu trưởng trường ĐH Thủ đô cũng cho thấy: đến năm 2018, số cử nhân sư phạm ra trường mỗi năm lên tới 60.930 người. Tuy nhiên, theo ước tính trung bình từ năm 2013 đến nay, sau khi giảm chỉ tiêu đào tạo ngành sư phạm thì mỗi năm nước ta vẫn có thêm khoảng 4.000 sinh viên ra trường không tìm được việc làm. 70.000 cử nhân sư phạm thất nghiệp năm 2020 được phân bổ ở tất cả các bậc học, trong đó, bậc tiểu học thừa khoảng 41.000 người, THCS thừa 12.200 người và ở cấp THPT là khoảng 16.900 người. Nguyên nhân về con số dư thừa và thất nghiệp “khổng lồ” nhiều chuyên gia giáo dục từng phân tích là do việc dự báo tình hình giảm số lượng học sinh ở các bậc học do tác động của việc thực hiện kế hoạch hóa gia đình hệ thống các trường ĐHCĐ sư phạm được mở chưa hợp lý, chỉ tiêu đào tạo chưa được kiềm chế kịp thời và chính sách hỗ trợ học phí đã khiến thí sinh thi vào ngành này và khi quá nhiều sinh viên ra trường xin việc ngành sư phạm quá tải dẫn đến việc rất nhiều sinh viên thất nghiệp, không có việc làm.

2. Ngành Kế toán – Kiểm toán

Cách đây vài năm, ngành Kế toán – Kiểm toán thu hút được rất nhiều người học nhờ mức lương cao sau khi ra trường. Cũng vì điều này mà điểm chuẩn trúng tuyển của các ngành này luôn đứng “top” 2, 3 so với các ngành khác. Tuy nhiên, hiện nay, đây là một trong những nhóm ngành đang dư thừa lao động và cảnh báo vẫn còn dư thừa trong các năm tới.

Hàng loạt sinh viên ngành kế toán – kiểm toán ra trường chỉ trong một năm khiến ngành nghề này dư thừa nhân lực.

Theo khảo sát tại sàn giao dịch việc làm Hà Nội 6 tháng đầu năm 2016, Kế toán – Tài chính đứng đầu trong số các ngành được nhiều người tìm việc nhất. Bản tin thị trường lao động quý 2/2016 vừa được Bộ LĐ-TB-XH công bố cũng cho thấy, nhóm nghề Kế toán – Kiểm toán có số lượt người tìm việc nhiều nhất (chiếm 16,9%); tiếp đó là quản trị kinh doanh (10,4%) và nhân sự (10%). Ông Nguyễn Quốc Cường – Phó Ban đào tạo, Hội giáo dục nghề nghiệp TP. Hồ Chí Minh thông tin thêm: Chỉ tính ở TP. Hồ Chí Minh, mặc dù tỉ lệ nhu cầu tuyển dụng của nhóm ngành này vẫn ở mức cao nhất (30% trong cơ cấu tuyển dụng), nhưng do lượng cầu vượt cung quá nhiều nên để kiếm được 1 công việc, mỗi ứng viên phải vượt qua 90 người khác, tức là tỉ lệ chọi 1/90. Nguyên nhân của sự dư thừa nhân lực nhóm ngành này là do việc ồ ạt mở ngành của các trường đào tạo trong mấy năm trước. Hiện nay, cả nước vẫn có khoảng 200 trường ĐH, CĐ đào tạo ngành nghề kế toán làm cho có quá nhiều sinh viên ra trường thừa nguồn nhân lực hàng nghìn sinh viên thất nghiệp phải làm công việc không đúng với ngành nghề của mình.

3. Ngành Tài chính – Ngân hàng

Theo bản tin thị trường lao động quý II/2016 được công bố bởi Viện Khoa học Lao động và xã hội, ngành Tài chính – Ngân hàng mặc dù có tăng nhưng số lượng tân cử nhân ngành này không có việc làm đúng chuyên ngành cũng tiếp tục gia tăng. Cũng thống kê của Viện Khoa học Lao động và Xã hội vào năm 2015 cho biết đối với ngành tài chính ngân hàng, có đến 12.000 tân cử nhân thất nghiệp trong tổng số khoảng 29.000 tân cử nhân của ngành này.

Ngành tài chính ngân hàng vẫn có tỷ lệ thất nghiệp cao.

Thời điểm này, tài chính trở thành nhóm nghề có nhiều người tìm việc nhất cả nước (21,9%), tiếp đến là Quản trị nhân sự (11,1%), Kế toán (10,5%)… Trong khi đó, ngành Tài chính – Ngân hàng vẫn được tuyển sinh ở nhiều trường với số chỉ tiêu lớn, vượt trội so với các ngành đào tạo còn lại. Trong mùa tuyển sinh 2016, 2017 các ngành này vẫn tiếp tục là ngành mũi nhọn với chỉ tiêu tuyển sinh không hề giảm của top trường kinh tế. Dự báo trong thời gian tới, sinh viên nhóm ngành này ra trường tìm việc vẫn chưa dễ dàng và chắc chắn là thất nghiệp.

4. Ngành quản trị kinh doanh

Quản trị kinh doanh thực sự là một ngành “hot” gần đây. Đặc biệt trong thời kì đất nước ta đang ngày càng hội nhập vươn ra cùng thế giới, sự hội nhập kinh tế chắc chắn đem lại nhiều cơ hội nghề nghiệp liên quan đến lĩnh vực kinh tế kinh doanh, nhưng cũng đem lại nhiều khó khăn, lúng túng cho các công ty, doanh nghiệp, thì nhu cầu nhân sự về quản trị kinh doanh lại càng trở nên đắt giá và càng có “đất phát triển” cho sinh viên học quản trị kinh doanh. Tuy nhiên, khi mà quản trị kinh doanh trở nên hot thì số lượng sinh viên theo học ngành này tỉ lệ thuận với độ “hot” của nó. Điều này đặt ra một câu hỏi: “Liệu quản trị kinh doanh “hot” nhưng học quản trị kinh doanh có thất nghiệp hay không?”

Và chắc chắn rồi ngành quản trị kinh doanh đang thừa người và khi ra trường nguy cơ thất nghiệp rất cao.

Theo kết quả thống kê 3 năm gần đây của Bộ giáo dục và đào tạo, quản trị kinh doanh là ngành chiếm thứ hạng cao nhất về số lượng hồ sơ đăng ký của thí sinh: trên 10% hồ sơ đang kí mỗi năm. Hiện nay tại TP.HCM có hơn 40 trường ĐH, CĐ đào tạo ngành QTKD, nghĩa là số cử nhân QTKD ra trường mỗi năm là trên 10.000 người vì nhiều trường lớn có chỉ tiêu tuyển sinh mỗi năm hơn 1.000 sinh viên. Trong số này, số lượng sinh viên thất nghiệp hoặc làm trái ngành nghề sau khi ra trường chắc chắn là con số không hề nhỏ. Trái lại, số lượng doanh nghiệp tuyển dụng nhân viên yêu cầu tốt nghiệp ngành này luôn đứng đầu bảng tuyển dụng của các website việc làm. Rõ ràng rằng, điều các doanh nghiệp cần là chất lượng chứ không phải số lượng cử nhân đã qua đào tạo, do đó số lượng sinh viên bị doanh nghiệp từ chối sẽ gặp rất nhiều khó khăn để tìm hướng đi phù hợp cho bản thân. Và chắc chắn rồi ngành quản trị kinh doanh đang thừa người và khi ra trường nguy cơ thất nghiệp rất cao.

5. Ngành công nghệ môi trường

Công nghệ môi trường là một chuyên ngành có sự kết hợp đồng bộ cả hai yếu tố nghiên cứu và kỹ thuật. Học chuyên ngành này, bạn cần phải nắm vững các kiến thức chuyên môn bao gồm: công nghệ xử lý nước thải, xử lý khí thải, xử lý chất thải rắn thông qua các biện pháp sinh, lý, hoá học.

Không ít người tốt nghiệp ngành công nghệ môi trường phải chấp nhận cảnh thất nghiệp hoặc làm trái nghề.

Nếu chuyên về công nghệ xử lý nước thải, thường có lựa chọn làm việc ở: công ty cấp nước, nhà máy xử lý nước, công trình xử lý nước thải cho các nhà máy và khu công nghiệp,… Nếu là công nghệ xử lý khí thải thì công việc thiên về: đo đạc chất lượng không khí, đánh giá tác động của môi trường và xử lý không khí ô nhiễm,… còn nếu hoạt động trong lĩnh vực xử lý chất thải rắn thì bạn sẽ làm việc với: các công trình quản lý chất thải rắn sinh hoạt, chất thải nhà máy hay các khu đô thị,… Tuy nhiên, với điều kiện kinh tế còn nhiều khó khăn, công tác bảo vệ môi trường còn yếu kém cũng như chưa được sự quan tâm, quản lý chặt chẽ của các cơ quan quản lý chuyên ngành nên doanh nghiệp có nhu cầu tuyển dụng rất ít. Vì thế, không ít người tốt nghiệp ngành công nghệ môi trường phải chấp nhận cảnh thất nghiệp hoặc làm trái ngành nghề đào tạo.

6. Cử nhân lịch sử

Lịch sử chuyên nghiên cứu, bàn luận về những vấn đề trong quá khứ, để từ những kiến thức của quá khứ có thể rút ra những quy luật, những bài học kinh nghiệm cần thiết cho cuộc sống hiện tại và tương lai. Nhà sử học là người nghiên cứu về những vấn đề của quá khứ để từ đó hiểu biết, tạo dựng những sự kiện đã qua, rồi phân tích, đánh giá và chia sẻ những kiến thức mà mình tích luỹ được cho cộng đồng xã hội.

Khá nhiều cử nhân lịch sử ra trường đi làm công nhân.

Nghiên cứu lịch sử là một việc làm đầy khó khăn, thách thức. Thế nhưng đối với một nước đang phát triển và chưa đầu tư nhiều cho việc nghiên cứu lịch sử thì việc chạy đôn chạy đáo xin việc vẫn không được là điều khá phổ biến. Đặc biệt, trong thời buổi khó khăn như hiện nay, không ít cử nhân thạc sĩ cũng buộc phải làm các công việc khác để mưu sinh bởi vì không có việc làm, thất nghiệp quá nhiều.

7. Cử nhân tâm lý học

Ngành cử nhân tâm lý học với điểm đầu vào thấp, cộng thêm việc chưa rõ sau này ra trường sẽ làm những việc gì đã khiến nhiều sinh viên tâm lý hoang mang, tự ti khi bị đem ra so sánh với sinh viên các ngành học khác. Không ít người đã xin ngừng học, ôn thi tiếp để chuyển ngành, chuyển trường. Một số coi việc học là cách để kiếm được tấm bằng, còn phần lớn thời gian là để đầu tư cho “sở trường” của mình như: sale, marketing, viết báo,…

Nhiều cử nhân tâm lý học phải cất tấm bằng đại học và kiếm việc khác để mưu sinh.

Đến khi tốt nghiệp ra trường, tân cử nhân rất chật vật để có được công việc phù hợp với chuyên ngành được đào tạo. Vì việc tìm đến các chuyên gia tâm lý để được tư vấn, giải quyết các vấn đề trầm cảm, stress, rối loạn cảm xúc, hành vi,… là điều khá xa lạ với nhiều người Việt Nam. Vì thế, chẳng có gì ngạc nhiên khi trong thời buổi kinh tế khó khăn này, nhiều cử nhân tâm lý học phải cất tấm bằng đại học và kiếm việc khác để mưu sinh.

8. Ngành công nghệ sinh học

Ngành công nghệ sinh học là một ngành khá thú vị dành cho những bạn yêu thích môn sinh vật. Bạn sẽ cảm thấy rất hứng thú với nghề này vì sự ứng dụng đa dạng và thực tế của nó. Tuy nhiên, một điều đáng tiếc ở Việt Nam là hiện nay việc đào tạo về ngành nghề này tại các trường ĐH chưa thực sự đáp ứng được nhu cầu của xã hội về mặt chất lượng. Tình hình thực tế, sinh viên ngành công nghệ sinh học sau khi ra trường đều rất khó đáp ứng yêu cầu của các cơ quan nghiên cứu nói riêng và các doanh nghiệp nói chung…

Hiện tại, số nhiều sinh viên sau tốt nghiệp đều đa số thất nghiệp hoặc làm không đúng chuyên ngành.

Thực tế thống kê việc làm các trường ĐH ngành công nghệ sinh học có đầu ra và việc làm tốt không thì chưa có. Hiện tại, sinh viên sau tốt nghiệp đã rất chật vật để được làm đúng nghề, kể cả những sinh viên khá giỏi. Hiện tại, số nhiều sinh viên sau tốt nghiệp đều đa số thất nghiệp hoặc làm không đúng chuyên ngành.

9. Ngành sân khấu điện ảnh

Mỗi năm, hai trường Sân khấu Điện ảnh lớn nhất cả nước cùng hàng loạt trường Cao đẳng Văn hóa nghệ thuật cho ra lò hàng trăm cử nhân. Tuy nhiên, không phải ai trong số đó cũng có may mắn trở thành diễn viên, xuất hiện trên các bộ phim truyền hình. Mới đây, tiết lộ của Quán quân cuộc thi “Tôi là diễn viên” hé lộ phần nào thực trạng của sinh viên ngành nghệ thuật trong hành trình gian nan tìm kiếm cơ hội làm nghề. Tâm Anh, Quán quân nam của cuộc thi “Tôi là diễn viên” phát sóng trên đài Vĩnh Long tháng 7 vừa qua cho hay, suốt ba tháng tham gia thi, anh hoàn toàn xin tiền bố mẹ để trang trải cuộc sống.

Khá nhiều bạn đi ứng cử và con số thất nghiệp rất nhiều.

Ý định ban đầu của chàng trai là giành giải thưởng tiền mặt 100 triệu đồng giúp bạn học trả nợ. Người bạn này học chung với Tâm Anh từ bé rồi cả hai cùng đậu Cao đẳng Nghệ thuật TP. Hồ Chí Minh. Để có tiền hoàn thành tiểu phẩm cho bài thi tốt nghiệp, cả hai đã phải vay mượn một số tiền lớn. Hơn 30 thành viên trong lớp đã về quê gần hết, Quán quân “Tôi là diễn viên” cũng tâm sự, khi chưa tham gia cuộc thi, anh và các bạn lập nhóm kịch đi diễn tại các quán cà phê. Do chỉ là những sinh viên sân khấu bình thường, không có tên tuổi hot nên nhóm chỉ có thể diễn ở những điểm ven Sài Gòn như Bình Dương, Thủ Đức. Trừ đi chi phí đi lại, thuê phục trang, đạo cụ, thù lao thu được chẳng là bao. “Có đêm diễn xong, cả nhóm 6 người chia nhau mỗi người 10.000 đồng, chỉ đủ tiền mua một ổ bánh mì”. Đó là một chia sẻ của diễn viên theo ngành sân khấu điện ảnh có thể thấy phải trang trải rất nhiều chi phí và cuối cùng không thể trụ nỗi đành phải về quê bởi thất nghiệp.

10. Ngành kỹ sư xây dựng

Cả nước ta có khá nhiều ngành đào tạo ra kĩ sư xây dựng. Vậy nên, con số sinh viên ra trường không hề nhỏ với hàng nghìn sinh viên ra trường. Với quá nhiều sinh viên ra trường, các công ty với yêu cầu rất cao là có kinh nghiệm. Các sinh viên mới ra trường không thể đáp ứng được nhu cầu cần kinh nghiệm như các công ty yêu cầu. Dưới đây là chia sẻ một bạn cử nhân ra trường với tấm bằng cử nhân ngành kỹ sư xây dựng.

Đây là một ngành đòi hỏi kinh nghiệm các bạn nên xem xét khi học trường này.

Ra trường được hơn 3 tháng, N. Thành (quê Nghệ An) là sinh viên ĐH Giao thông vận tải II, tốt nghiệp với tấm bằng khá, bảng điểm môn chuyên ngành cũng “đẹp” đối với khối công trình. Thêm nữa, Thành còn có hàng loạt chứng chỉ một kỹ sư xây dựng cần. Với mong muốn bám trụ lại TP. Hồ Chí Minh để phát triển sự nghiệp, Thành đã tìm kiếm thông tin tuyển dụng trên mạng Internet, nhờ bạn bè tìm, giới thiệu… và rải hồ sơ xin việc khắp nơi. Nhưng kết quả cũng giống nhau: các nơi Thành nộp hồ sơ đều lắc đầu vì “thiếu kinh nghiệm”. Chỉ qua những chia sẻ nhỏ này, chúng ta có thể thấy học ngành kỹ sư xây dựng rất dễ thất nghiệp chúng ta nên chú ý chọn trường theo đam mê và có suy nghĩ chín chắn hơn trong xem xét theo đam mê của mình mà có đảm bảo cho mình việc làm khi ra trường hay không.

S.t.

Thứ Tư, 12 tháng 7, 2017

Chặn quảng cáo ZingMP3_Phimmoi bằng file host

1. Trên Android:

Mở file hosts trong thư mục có đường dẫn /system/etc/ và chọn chỉnh sửa. Sau đó thêm các dòng sau vào rồi Save lại:

#zing
127.0.0.1    media.adtimaserver.vn
127.0.0.1    api.adtimaserver.vn
127.0.0.1    log.adtimaserver.vn

#phimmoi
127.0.0.1    d.ants.vn
127.0.0.1    t.ants.vn
127.0.0.1    zone.uniad.vn
127.0.0.1    lg.logging.admicro.vn


2.  Trên PC:


G:\Windows\System32\drivers\etc.
Mở file host bằng Notepad++ ở quyền Admin và thêm nội dung vào.






Mở Youtube background trên Android

Có một cách để mở youtube background:
1. Dùng Chrome mở youtube
2. Chọn Setting → Request desktop site
3. Mở clip xong pause lại, trên thanh thông báo sẽ hiện menu điều khiển
4. Ấn home thoát ra ngoài màn hình chính, rồi ấn play trên notification để play youtube tiếp.

(Theo thành viên vanhiepcnt - forum tinhte.vn)

Thứ Ba, 11 tháng 7, 2017

20 bài học thực tế cuộc sống sẽ dạy bạn

1. Bạn bè đến rồi đi

Bạn có nhận thấy rằng càng trưởng thành thì số lượng bạn bè mình thường liên lạc càng ít hơn xưa? Khi càng lớn, mỗi người chọn cho mình một con đường riêng, một công việc riêng nên thật khó để vẫn giữ liên lạc. Bạn ắt hẳn đã từng rất thân với một người nào đó nhưng rồi bỗng dưng cả hai không nói chuyện với nhau nữa mặc dù chẳng có xích mích gì xảy ra. Bạn nên chấp nhận điều này và tiếp tục đón chờ những mối quan hệ mới xuất hiện trong cuộc đời mình. Tuy nhiên, cũng có nhiều mối quan hệ vẫn trường tồn với thời gian nên nếu bạn may mắn có được mối quan hệ này thì hãy trân trọng nó mỗi ngày.

2. Không có bài học hay kinh nghiệm nào miễn phí

Để có được kiến thức và kinh nghiệm trong cuộc sống, bạn phải đánh đổi bằng một cái khác và không phải lúc nào chỉ có tiền bạc. Đối với một số bài học nhất định, bạn phải bỏ ra những cái "vô hình" như công sức, chất xám, thời gian và đôi khi còn phải trải qua đau khổ, mệt mỏi, thất vọng để lĩnh hội. Nếu bạn bị thất tình, hãy xem giai đoạn "trái tim tan nát" là cái giá phải trả để bạn biết rằng tình cảm lứa đôi không phải lúc nào cũng "happy ending" như những câu chuyện cổ. Nếu bạn thất bại trong việc nộp hồ sơ xin học bổng du học, hãy để những thất vọng dạy bạn rằng con đường đến thành công chưa bao giờ dễ dàng.

3. Một số người tốt với bạn có vụ lợi

Trong cuộc sống, bạn sẽ được nhiều người đối xử tốt nhưng không phải ai trong số họ cũng hoàn toàn không vụ lợi. Bạn sẽ chỉ biết ai thật sự tốt với mình khi bạn rơi vào hoàn cảnh khó khăn. Những người luôn sát cánh bên bạn trong cơn hoạn nạn luôn đáng trân trọng và quan tâm hơn. Còn những người bỏ bạn đi trong lúc đó thì… hãy quên họ đi.

4. Một mối quan hệ chỉ tốt đẹp khi được vun đắp

Bất kể đó là mối quan hệ yêu đương, bạn bè, gia đình thì đều cần phải được vun đắp hàng ngày thì mới có thể phát triển và bền vững. Bạn đừng nên bỏ mặc ai đó quan trọng với mình vì nghĩ họ lúc nào cũng ở đó. Không đâu, họ sẽ bỏ đi lúc nào bạn không hay đấy. Nếu bạn thật sự trân trọng mối quan hệ nào đó, hãy thể hiện điều đó và đầu tư thời gian và công sức cho nó.

5. Ai cũng có những vấn đề riêng của mình

Chúng ta thường có thói quen nhìn vào bạn bè, đồng nghiệp rồi tự so sánh với bản thân và thấy mình sao thấp kém. Tại sao họ lại đạt được những thành tựu mình không có? Tại sao cuộc sống của họ hoàn hảo hơn của mình? Nếu bạn đã từng nghĩ những điều đó thì hãy tự dặn lòng rằng: ai cũng có có những vấn đề và thử thách riêng trong cuộc sống dù bề nổi của họ có hào nhoáng đến đâu. Chúng ta không là họ nên làm sao biết được những người bạn và đồng nghiệp ấy đã trải qua những gì để đạt được thành công. Thay vì ganh tỵ với người khác, bạn nên dành thời gian chăm chút cho con đường sự nghiệp của bản thân.

6. Bạn không thể nào làm vừa lòng tất cả mọi người

Không bao giờ bạn có thể làm được điều đó. Vì vậy, hãy làm những gì bạn thích và nói những gì bạn muốn. Nếu ai đó ghét những gì bạn làm, hãy cứ để họ tự do làm điều đó. Đừng thay đổi bản thân chỉ vì muốn làm vừa lòng một ai vì họ sẽ chẳng bao giờ ngừng đòi hỏi. Hãy chấp nhận việc lúc nào bạn cũng sẽ có điểm gì đó khiến người khác không vừa lòng. Tuy nhiên, bạn cần phải linh hoạt và biết làm vừa lòng một số người trong từng trường hợp cụ thể để khiến cuộc sống dễ dàng hơn. Ví dụ như với sếp trực tiếp của bạn chẳng hạn.

7. Những mối quan hệ có thể giúp bạn tiến xa hơn

Hãy chăm ra ngoài, gặp gỡ mọi người và có những mối quan hệ bền vững. Đừng cố gắng biết hết tất cả mọi người vì như vậy chẳng khác nào bạn không biết một ai. Tập trung đầu tư vào một số mối quan hệ nhất định và dành thời gian tìm hiểu họ. Những người này không nhất thiết phải đảm nhiệm ở vị trí cao hay có thế lực, đó có thể là đồng nghiệp, người cùng sinh hoạt trong câu lạc bộ, vân vân. Dù là ai thì bạn cũng nên đến với họ bằng tấm lòng chân thành và bạn sẽ nhận lại được những gì xứng đáng.

8. Ai cũng làm việc nhẹ thì việc khó cho ai?

Nếu bạn được phân công một nhiệm vụ khó nhằn trong khi bạn bè hay đồng nghiệp lại được làm các công việc dễ dàng thì hãy cố gắng… vui vẻ làm việc đi. Hãy làm quen với việc người làm ít người làm nhiều trong một tập thể miễn là kết quả cuối cùng tốt là được. Khi làm những việc khó, bạn sẽ có cơ hội học hỏi những điều mới nhiều hơn.

9. Vấn đề của bạn phải tự bạn giải quyết

Ngừng than thở và khóc lóc về những vấn đề của bản thân và xắn tay áo lên giải quyết nó ngay hôm nay. Bạn có thể nhờ người khác giúp đỡ nhưng không ai có thể giải quyết vấn đề tốt hơn chính bản thân bạn vì chỉ có bạn mới biết mình thật sự muốn gì. Khi tự giải quyết, bạn cũng phải tự trách nhiệm với bất kì quyết định nào mình đưa ra.

10. Không ai có nghĩa vụ phải giúp đỡ bạn

Nếu họ giúp đỡ bạn, hãy biết ơn họ. Nếu họ không giúp, đừng ghét họ vì vốn dĩ họ không hề có nghĩa vụ phải làm vậy. Bạn là một cá thể độc lập và nếu muốn đạt được một điều gì đó chỉ có một cách là hãy cố gắng làm việc chăm chỉ.

11. Ngoại hình quan trọng nhưng không nên là tất cả

Thời nay mà bảo ngoại hình không quan trọng thì thật không phải. Không nhà tuyển dụng nào lại muốn nhận một người lôi thôi lếch thếch. Không ai muốn hẹn hò với những người không biết tự chăm chút cho bản thân. Bạn nên chăm sóc bản thân nhưng đừng dành toàn bộ thời gian chỉ để đắp mặt nạ dưỡng da vì ngoại hình của bạn sẽ không là điểm cộng nếu như bạn thiếu kĩ năng, không biết ngoại ngữ và yếu kém về chuyên môn. Hãy cố gắng cân bằng mọi thứ và phát triển bản thân một cách toàn diện.

12. Cái tôi của bạn thật sự không có ích lợi gì

Nếu bạn làm lỗi, hãy xin lỗi kể cả với người bạn ghét nhất. Nếu bạn không thích sếp của mình, hãy bỏ qua cái tôi và chuyện cá nhân để làm việc như một người chuyên nghiệp. Để cái tôi kiểm soát hành động của bạn sẽ khiến bạn mất đi nhiều cơ hội cả trong cuộc sống lẫn công việc.

13. Chỉ có bạn mới khiến bản thân hạnh phúc

Nếu bạn trông chờ người khác đem đến hạnh phúc cho mình thì hãy yên tâm là bạn sẽ phải thất vọng dài dài. Hãy yêu thương và chăm sóc bản thân mình hàng ngày trước để cảm thấy yêu đời, yêu người sau đó.

14. Học cách tự cười vào bản thân sẽ giúp bạn thoải mái hơn

Chúng ta không thể tránh khỏi việc bị người khác phán xét và chế nhạo những khuyết điểm của mình vào một lúc nào đó. Thay vì rước lấy khó chịu vào người, bạn có thể học cách tự cười vào những điểm không hoàn hảo của mình. Đó là một cách thể hiện việc bạn tự tin với sự không hoàn hảo một cách hoàn hảo của mình.

15. Cuộc sống vốn dĩ không công bằng

Sẽ có người được cuộc đời ưu ái về nhiều mặt hơn một số người khác. Việc này không phải lỗi của bất kì ai cả. Chúng ta buộc phải chấp nhận việc này dù không dễ dàng một chút nào. Bạn cứ cố gắng phấn đấu hàng ngày để hoàn thiện bản thân, nếu không đạt được đến đích mình muốn thì ít nhất cũng tiến đến đến điểm xa hơn chỗ bạn đã từng đứng.

16. Mỗi người có một quan điểm riêng

Việc bạn và người khác không đồng quan điểm là một việc bình thường. Bạn không cần phải thay đổi nếu như quan điểm của mình không giống với bất kì ai. Chỉ cần bạn không hổ thẹn với những gì mình nghĩ thì hãy cứ sống theo cách bạn cho là đúng đắn.

17. Bạn sẽ không bao giờ có được mọi thứ mình muốn

Bạn sẽ luôn muốn một thứ mình không có trong mọi giai đoạn của cuộc đời. Ngay cả khi bạn đã có cái mình muốn, bạn sẽ lại muốn có thêm cái khác. Quan trọng là bạn nên cảm thấy hài lòng với những gì mình có để bớt cảm thấy căng thẳng.

18. Sự ưu tiên quyết định cuộc đời bạn

Mỗi ngày chúng ta đều phải lựa chọn những việc nào nên làm và không nên làm. Hãy cân nhắc trước khi đưa ra lựa chọn để thời gian của bạn không lãng phí cho những việc không đáng.

19. Cái gì cũng có hai mặt

Đừng vội tin những câu chuyện chỉ được kể từ một phía. Đừng để những hình ảnh hào nhoáng trên mạng xã hội dắt mũi bạn. Hãy tìm hiểu mọi thứ thật kĩ càng trước khi đặt niềm tin.

20. Làm người tốt không bao giờ thiệt thòi

Có thể những người chọn cách sống lươn lẹo sẽ đạt được nhiều thành tựu nhanh chóng nhưng những ai chọn làm người mới có thể đi đường dài. Hãy là một người tốt cho dù bạn có bị cuộc đời đối xử tệ bạc đến đâu đi chăng nữa. Đơn giản là vì làm người tốt trước hết giúp bạn có giấc ngủ ngon vì không phải lo lắng bất kì chuyện xấu nào của mình chẳng may bị phát giác.

S.t.

Thứ Hai, 19 tháng 6, 2017

Đầu số nhà mạng

ĐẦU SỐ CÁC NHÀ MẠNG:

* VIETTEL:
096, 097, 098, 0163  0169

* MOBIFONE:
090, 093, 0120, 0121, 0122, 0124, 0126, 0128

* VINAPHONE:
091, 094, 0123, 0124, 0125, 0127, 0129

* VIETNAMMOBILE:
092, 0188

* BEELINE (G-MOBILE):
0199, 0996

* S-FONE:
095

*EVN-TELECOM:
096

Thứ Sáu, 9 tháng 6, 2017

So sánh danh bạ dạng CSV và VCF (vCard File)

So sánh danh bạ dạng CSV (Comma/character Separated Values) và VCF (vCard File)

* CSV:
- Đơn giản, phân tách bằng dấu phẩy, để lưu trữ dữ liệu văn bản và số liệu (ví dụ: tên liên hệ, số điện thoại, v.v ...)
- Không có tiêu chuẩn chung nên dễ mất dữ liệu khi chuyển.
- Không hỗ trợ ảnh liên hệ.
- Không hỗ trợ ngôn ngữ latin.

* VCF: (nên dùng)
- Có thể lưu dữ liệu văn bản và số liệu, kèm hình ảnh, và các đoạn âm thanh (ví dụ nhạc chuông đã được gán).
- Được hỗ trợ rộng rãi bởi các ứng dụng email và dịch vụ. Do đó, không mất dữ liệu trong quá trình chuyển địa chỉ liên lạc bằng cách sử dụng định dạng vCard.
- Nhiều chương trình và dịch vụ như iCloud, Gmail, Yahoo và Outlook (phiên bản 2007 hoặc cao hơn) tự do hỗ trợ định dạng vCard như một phương tiện nhập và xuất địa chỉ liên lạc.

Thứ Năm, 8 tháng 6, 2017

Lấy ID dòng vừa insert trong SQL PROCEDURE

SELECT ID FROM table WHERE ID = SCOPE_IDENTITY();

Kiểm tra điều kiện để INSERT hoặc UPDATE trong SQL PROCEDURE


IF NOT EXISTS (SELECT TOP 1 1 FROM table WHERE id=@ID)
        INSERT INTO table(col1,col2) VALUES(val1,val2)
ELSE
    UPDATE table
    SET col1=val1, col2=val2
    WHERE id=@ID

Thứ Bảy, 22 tháng 4, 2017

Tùy chỉnh giao diện trong suốt Daum Pot Player.

TRONG SUỐT POTPLAYER:

Để có giao diện trong suốt thì ta dùng theme: The SameThing No Border.
Sau đó click phải chuột vào nó, chọn Skin -> On Screen Control --> Use Direct 3D.
Để có thể kéo dãn video theo khung thì ta chọn: Aspect Ratio -> Stretch.

 

Thứ Ba, 18 tháng 4, 2017

Highchart Column Drilldown

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Highcharts Example</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<style type="text/css">
${demo.css}
</style>
</head>
<body>
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/data.js"></script>

<div id="container" style="max-width: 600px; height: 400px; margin: 0 auto"></div>
<script type="text/javascript">
// Create the chart
Highcharts.chart('container', {
    chart: {
        type: 'column'
    },
    credits:{
        enabled: false
    },
    title: {
        text: 'Browser market'
    },
    subtitle: {
        text: 'subtitle'
    },
    xAxis: {
        categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    },
    yAxis: {
        title: {
            text: 'Total percent market share'
        }
    },
    legend: {
        enabled: false
    },
    plotOptions: {
        series: {
            borderWidth: 0,
            pointPadding: 0,
            groupPadding: 0.1, // khoang cach cac cot
            dataLabels: {
                enabled: true,
                format: '{point.y:.1f}%'
            }
        }
    },

    tooltip: {
        headerFormat: '<span style="font-size:11px">{series.name}</span><br>',
        pointFormat: '<span style="color:{point.color}">{point.name}</span>: <b>{point.y:.2f}%</b> of total<br/>'
    },

    series: [{
        name: 'Brands',
        colorByPoint: true, // mau tung cot
        data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
    }],
    colors: [
                '#ed4747',
                '#ed8347',
                '#edb547',
                '#eddf47',
                '#c0ed47',
                '#83ed47',
                '#42e578',
                '#42e5c7',
                '#38a8d1',
                '#4437d1',
                '#9b37d1',
                '#d1376f',
                '#d13737'
            ],
});
</script>
</body>
</html>

Thứ Hai, 17 tháng 4, 2017

Phân quyền

Các nhóm chỉ được phép truy cập trang web (Public Front-end)
  • Guest - Nhóm khách truy cập vào trang web, không có quyền hạn gì đặc biệt.
  • Registered - Nhóm thành viên đã đăng ký và đăng nhập vào trang web. Thông thường nhóm này sẽ có một số quyền hạn như truy cập vào một số chuyên mục dành riêng cho thành viên, được phép tải các tập tin hoặc trong một số trường hợp có thể đăng tin mới. Quyền hạn của nhóm Registered sẽ do người quản trị quyết định.
  • Author - Nhóm tác giả, nhóm này được phép viết bài mới (đăng tin) và sửa các bài viết của mình nhưng phải được các nhóm Publisher hoặc cấp cao hơn duyệt nội dung trước khi được đăng. 
  • Editor - Nhóm biên tập, nhóm này được phép viết bài  mới (đăng tin) và sửa bất cứ bài viết nào đang được đăng. Các bài viết được đăng mới hoặc sửa phải được các nhóm Publisher hoặc cấp cao hơn duyệt nội dung trước khi được đăng.
  • Publisher - Nhóm phát hành, nhóm này có tất cả quyền hạn của các nhóm bên trên. Ngoài ra còn có quyền duyệt và cho phép đăng các bài viết trên trang web (Front-end).

Các nhóm được phép quản lý (Public Back-end)
  • Manager - Nhóm quản lý, nhóm này có tất cả quyền hạn của các nhóm bên trên. Ngoài ra còn có quyền đăng nhập vào phần quản lý (Admin, Front-end) để quản lý (tạo mới, sửa, xóa,...) các Menu, Section, Category, Article, Component,... Nhóm này không có quyền cài đặt các thành phần mở rộng và chỉnh sửa các thông số cấu hình của trang web.
  • Admin - Nhóm quản trị, nhóm này có tất cả quyền hạn của các nhóm bên trên. Ngoài ra còn có quyền quản lý thành viên, quản lý Component, Module, Plugin.
  • Super Admin - Nhóm quản trị cấp cao nhất, nhóm này có toàn quyền quản lý trang web.

Thứ Năm, 13 tháng 4, 2017

Code first update migration to change Database (MVC5 entity)

Bước 1: Mở Package Manager Console: Tool -> Library -> Package M Console
 

Bước 2: Gõ các lệnh sau:

Enable-Migrations

----
This command has added a Migrations folder to our project, this new folder contains two files:
  • The Configuration class. This class allows you to configure how Migrations behaves for your context. For this walkthrough we will just use the default configuration. Because there is just a single Code First context in your project, Enable-Migrations has automatically filled in the context type this configuration applies to.
  • An InitialCreate migration. This migration was generated because we already had Code First create a database for us, before we enabled migrations. The code in this scaffolded migration represents the objects that have already been created in the database. In our case that is the Blog table with a BlogId and Name columns. The filename includes a timestamp to help with ordering. If the database had not already been created this InitialCreate migration would not have been added to the project. Instead, the first time we call Add-Migration the code to create these tables would be scaffolded to a new migration.
 Add-Migration
--
will scaffold the next migration based on changes you have made to your model since the last migration was created.



Update-Database
--
 will apply any pending migrations to the database.

Thứ Hai, 10 tháng 4, 2017

Delete record

1. Controller Action Method:
// GET: PersonalDetails/Delete/5
public ActionResult Delete(int? id)
{
    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    PersonalDetail personalDetail = db.PersonalDetails.Find(id);
    if (personalDetail == null)
    {
        return HttpNotFound();
    }
    return View(personalDetail);
}

// POST: PersonalDetails/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
    PersonalDetail personalDetail = db.PersonalDetails.Find(id);
    db.PersonalDetails.Remove(personalDetail);
    db.SaveChanges();
    return RedirectToAction("Index");
}
 
2. Delete View Record
@model WebApplication1.Models.PersonalDetail

@{
 ViewBag.Title = "Delete";
}

<h2>Delete</h2>

<h3>Are you sure you want to delete this?</h3>
    <div>
        <h4>PersonalDetail</h4>
        <hr />
        <dl class="dl-horizontal">
            <dt>@Html.DisplayNameFor(model => model.FirstName)
            </dt>
            <dd>@Html.DisplayFor(model => model.FirstName)
            </dd>
            <dt>@Html.DisplayNameFor(model => model.LastName)
            </dt>
            <dd>@Html.DisplayFor(model => model.LastName)
            </dd>
            <dt>@Html.DisplayNameFor(model => model.Age)
            </dt>
            <dd>@Html.DisplayFor(model => model.Age)
            </dd>
            <dt>@Html.DisplayNameFor(model => model.Active)
            </dt>
            <dd>@Html.DisplayFor(model => model.Active)
            </dd>
        </dl>

        @using (Html.BeginForm()) {
@Html.AntiForgeryToken()
        <div class="form-actions no-color">
            <input type="submit" value="Delete" class="btn btn-default" />
            |
@Html.ActionLink("Back to List", "Index")
        </div>
        }
    </div>
 
 

CREATE DELETE LINK WITH MVC USING POST TO AVOID SECURITY ISSUES

CREATE DELETE LINK WITH MVC USING POST TO AVOID SECURITY ISSUES

It is fairly common to have a list of records with a hyperlink to delete a record.  The problem here is that with MVC the hyperlink will use a GET request to delete a record.  This is a fairly big security issue as anybody can browse to the URL and delete a record from your system.  In this post I’ll explain how you can use the Ajax helpers to create a hyperlink that will call your delete method without using GET.

Stephen Walther has a great post here where he explains the issue and gives a couple of different solutions; one using hand written Ajax and the other without using Ajax.  There is no point in reiterating what he has to say so it’s definately worth a read.  Here I am going to use the Ajax helpers to perform the same functionality, which minimises the code required.

I have a view that renders a table that looks like this:

Here is the Delete method in my controller:
   
[HttpDelete]
public ActionResult Delete(int id)
{
    Student student = context.Student.FirstOrDefault(s => s.ID.Equals(id));
    if (student != null)
    {
        context.DeleteObject(student);
        context.SaveChanges();
    }

    return RedirectToAction("Index");
}


In this method I am using the Entity Framework to delete a record from my database.  The problem with this method using the GET verb would be that anybody could navigate to http://www.mydomain.com/Student/Delete/1 and it would delete the record from my database. We definately don’t want this. There would also be a chance that a search engine bot could access the method, again deleting data.

You can see that I’ve decorated the method with the HttpDelete attribute. As Stephen states in his post, HTML only supports GET and POST, but as we’re using Ajax, which uses the XmlHttpRequest object we can use any of the available verbs, so delete is available.

To render my delete link on the form I am using the Ajax.ActionLink helper method:
   
<%= Ajax.ActionLink("Delete", "Delete", new { id = student.ID },
    new AjaxOptions()
    {
        HttpMethod="Delete",
        Confirm="Are you sure you want to delete this student?",
        OnComplete = "function() { $(this).parent().parent().remove() }"
    }) %>


The helper method is very similar to the Html.ActionLink method, except it will use Ajax to perform the request. The first three parameters are straight forward; the link text, the action name and the route values. The fourth parameter is an instance of AjaxOptions.

I have set three of the properties, the first being the HttpMethod which is set to delete.  This allows the request to be made to my Delete method which is decorated with the HttpDelete attribute.  I have also set the Confirm property which displays a JavaScript confirm dialog before making the request.  Lastly I’ve set the OnComplete property which is some client script that will be run once tha Ajax request has completed.  In this instance I am using jQuery to remove the row from the table.

Using this approach is a fairly simple way to use hyperlinks to delete data without using a GET request therefore improving your site’s security. Of course you may not want your site to be dependant on JavaScript in which case you can use the second approach detailed in Stephen’s post.

Thứ Sáu, 31 tháng 3, 2017

Add/Remove Class like jQuery using pure Javascript

/**/
    function hasClass(el, className) {
        if (el.classList)
            return el.classList.contains(className)
        else
            return !!el.className.match(new RegExp('(\\s|^)' + className + '(\\s|$)'))
    }
 
    function addClass(el, className) {
        if (el.classList)
            el.classList.add(className)
        else if (!hasClass(el, className)) el.className += " " + className
    }
 
    function removeClass(el, className) {
        if (el.classList)
            el.classList.remove(className)
        else if (hasClass(el, className)) {
            var reg = new RegExp('(\\s|^)' + className + '(\\s|$)')
            el.className = el.className.replace(reg, ' ')
        }
    }
    /**/

Chống Refresh Page Dropdown list ASPNET

 -------------
 Không refresh toàn bộ trang khi chọn item trên dropdown 1 để load data lên dropdown 2
--------------
The ScriptManager control and the UpdatePanel control. These controls remove the requirement to refresh the whole page with each postback, which improves the user experience. By default, a postback control (such as a button) inside an UpdatePanel control causes a partial-page update. By default, a button or other control outside an UpdatePanel control causes the whole page to be refreshed,
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <fieldset>
            <div class="1">
                <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
                    <asp:ListItem Text="Select..." Value="No selection made"></asp:ListItem>
                </asp:DropDownList>
            </div>
            <div class="1">
                <asp:DropDownList ID="DropDownList2" runat="server">
                    <asp:ListItem Text="Select..." Value="No selection made"></asp:ListItem>
                </asp:DropDownList>
            </div>
        </fieldset>
    </ContentTemplate>
</asp:UpdatePanel>

Thứ Ba, 21 tháng 3, 2017

Change line height in Visual Studio

Can't change directly in Visual Studio.
--> BUT You CAN change line height of font, the font you're using.
Step 1: install Fontforge.
Step 2: Open Fontforge after install finished, go to:
Element->Font Info ->OS2 -> Unit.
Change 4 value: Down win, up win, top N, down horizontal by multiplied by the desired ratio. Sample: ratio 1.5 or 2 ..etc...
(it means: if default 800, you multiple with ratio 1.5 --> result is 1200, you change 800 -->1200)
--> click OK to save setting.
Step 3: Go to File -> Generate font --> Generate with ttf format.
Step 4: Install the font just created and change font in Visual Studio.
-------------> ENJOY------------

Visual Studio WITH C# KEY BINDINGS _ hotkey

To answer the specific question, in C# you are likely to be using the C# keyboard mapping scheme, which will use these hotkeys by default:

Ctrl+E, Ctrl+D to format the entire document.
Ctrl+E, Ctrl+F to format the selection.

You can change these in Tools > Options > Environment -> Keyboard (either by selecting a different "keyboard mapping scheme", or binding individual keys to the commands "Edit.FormatDocument" and "Edit.FormatSelection").

If you have not chosen to use the C# keyboard mapping scheme, then you may find the key shortcuts are different. For example, if you are not using the C# bindings, the keys are likely to be:

Ctrl + K + D (Entire document)
Ctrl + K + F (Selection only)

To find out which key bindings apply in YOUR copy of Visual Studio, look in the Edit > Advanced menu - the keys are displayed to the right of the menu items, so it's easy to discover what they are on your system.

ADO.NET Demo

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = @"Data Source=USERMIC-42NCNNO\SQLEXPRESS;Initial Catalog=test;User id=sa;Password=7880;";
            SqlConnection con=new SqlConnection();
            con.ConnectionString=connectionString;
            if(con.State!=ConnectionState.Open)
                con.Open();
 
            /*--------------------------------LỆNH SELECT-------------------------------------*/
 
            /*
            SqlCommand cmdSQL = new SqlCommand();
            cmdSQL.Connection = con;
            cmdSQL.CommandText = "Select * from Nhanvien where tuoi>@sTuoi";
            cmdSQL.Parameters.AddWithValue("sTuoi", 27);
            SqlDataReader dr = cmdSQL.ExecuteReader();
            while (dr.Read())
            {
                Console.WriteLine(String.Format("{0} \t | {1} \t | {2} \t | {3}",
                            dr[0], dr[1], dr[2], dr[3]));
            }
            con.Close();
             */
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText="SP_NHANVIEN_SELECT";
            /*
             Store Procedure:
             CREATE PROCEDURE SP_NHANVIEN_SELECT
                @Tuoi INT
             AS
                    SELECT * FROM   NHANVIEN WHERE  TUOI > @Tuoi
             */
            cmd.Parameters.AddWithValue("@tuoi"SqlDbType.Int).Value = 34;
 
            //SqlDataReader dr = cmd.ExecuteReader();
            //while (dr.Read())
            //{
            //    Console.WriteLine(String.Format("{0} \t | {1} \t | {2} \t | {3}",
            //               dr.GetInt32(0), dr["HoTen"], dr[2], dr[3]));
            //}
            //dr.Close();
 
            //int kq = (Int32)cmd.ExecuteScalar();
            //Console.WriteLine(kq);
 
            /*---------------------------------------------------------------------*/
 
            /*--------------------------------LỆNH INSERT-------------------------------------*/
            
            //SqlCommand insertCmd = new SqlCommand();
            //insertCmd.Connection = con;
            //insertCmd.CommandText = @"insert into NhanVien(HoTen,Tuoi,PhongBanId) values(@val1,@val2,@val3)";
            //insertCmd.Parameters.AddWithValue("val1", SqlDbType.NVarChar).Value = "Anh Anh";
            //insertCmd.Parameters.AddWithValue("val2", SqlDbType.Int).Value = 26;
            //insertCmd.Parameters.AddWithValue("val3", SqlDbType.Int).Value = 1;
 
            //int sodong = insertCmd.ExecuteNonQuery();
            //Console.WriteLine(sodong);
 
            /*---------------------------------------------------------------------*/
 
            /*--------------------------------LỆNH UPDATE-------------------------------------*/
 
            //SqlCommand updateCmd = new SqlCommand();
            //updateCmd.Connection = con;
            //updateCmd.CommandText = @"update NhanVien set HoTen=@val1,Tuoi=@val2,PhongBanId=@val3 where nhanvienid=@val4";
            //updateCmd.Parameters.AddWithValue("val1", SqlDbType.NVarChar).Value = "Anh Anh Edit";
            //updateCmd.Parameters.AddWithValue("val2", SqlDbType.Int).Value = 26;
            //updateCmd.Parameters.AddWithValue("val3", SqlDbType.Int).Value = 1;
            //updateCmd.Parameters.AddWithValue("val4", SqlDbType.Int).Value = 9;
 
            //int sodong = updateCmd.ExecuteNonQuery();
            //Console.WriteLine(sodong);
 
            /*---------------------------------------------------------------------*/
 
            /*--------------------------------LỆNH DELETE-------------------------------------*/
 
            SqlCommand delCmd = new SqlCommand();
            delCmd.Connection = con;
            delCmd.CommandText = @"delete from NhanVien where nhanvienid=@id";
            delCmd.Parameters.AddWithValue("id"SqlDbType.Int).Value = 9;
 
            int sodong = delCmd.ExecuteNonQuery();
            Console.WriteLine(sodong);
 
            con.Close();
            Console.ReadKey();
        }
    }
}