Tuesday, May 29, 2018

Cách disable, enable cho 1 menu item của jquery Context Menu

Nếu sửa dụng context menu của trang http://swisnl.github.io/jQuery-contextMenu/ thì cách disable, enable 1 item trong menu sẽ làm như sau.

Trích từ https://stackoverflow.com/questions/12938805/enabling-jquery-contextmenu-item-on-ajax-request

I used build option to add new items, you can see that you can do with items here whatever you want: http://jsfiddle.net/oceog/Tvv4P/1/
HTML:
<div class="context-menu-one box menu-1">
    <strong>right click me</strong>
</div>

<button id="add"> Add item</button>
<button id="disable_cut"> Disable cut</button>
<button id="enable_cut"> enable cut</button>
JS:
$.contextMenu({
    selector: '.context-menu-one',
    build: function($trigger, e) {
        console.log(e);
        return {
            callback: function(key, options) {
                var m = "clicked: " + key;
                console.log(m);
                //window.console && console.log(m) || alert(m); 
            },
            items: items
        };
    }
});
var items = {
    "edit": {
        name: "Edit",
        icon: "edit"
    },
    "cut": {
        name: "Cut",
        icon: "cut"
    },
    "copy": {
        name: "Copy",
        icon: "copy"
    },
    "paste": {
        name: "Paste",
        icon: "paste"
    },
    "delete": {
        name: "Delete",
        icon: "delete"
    },
    "sep1": "---------",
    "quit": {
        name: "Quit",
        icon: "quit"
    }};
var newitemN=0;
$('#add').click(function() {
            var newitem={};
        newitem['newitem_'+newitemN]={
            name: 'new item #'+newitemN,
            icon: "copy"
        };
   newitemN++;
   $.extend(items,newitem);
});

$('#disable_cut').click(function() {
    items.cut.disabled=true;
});

$('#enable_cut').click(function() {
    items.cut.disabled=false;
});

Sunday, May 06, 2018

Kinh Nghiệm Phỏng Vấn

Bài viết này trích từ blog anh Vũ Huy Tâm: http://www.sqlviet.com/blog/viet-resume-xin-viec-nhu-the-nao

Đây là một trong loạt bài về kinh nghiệm xin việc, bài trước nói về kinh nghiệm viết resume. Giống như bài trước, bài này cũng chỉ dựa vào những kinh nghiệm cá nhân của tôi trong thời gian làm việc tại Mỹ. Nếu bạn thấy có gì không phù hợp với hoàn cảnh ở Việt nam hoặc muốn bổ sung điều gì, xin hãy comment ở bên dưới.
Một resume bắt mắt giống như một miếng mồi ngon, thể nào cũng sẽ có vài công ty gọi đến và muốn phỏng vấn bạn (cá bắt đầu lượn lờ). Thông thường công ty sẽ phỏng vấn nhanh qua điện thoại trước để kiểm tra đúng người thực và có các kỹ năng như viết trong resume. Sau đó nếu mọi chuyện suôn sẻ họ sẽ mời bạn đến phỏng vấn (cá bắt đầu ngửi hít).
Khi đi phỏng vấn, bạn cũng cần giữ nguyên tinh thần như lúc viết resume: tôi toàn làm những việc quan trọng và giờ tôi đi tìm một công việc quan trọng hơn.
Buổi phỏng vấn thường bắt đầu bằng yêu cầu bạn tóm tắt những công việc bạn đã làm. Điều người phỏng vấn muốn nghe là một câu chuyện, hay nhất là một câu chuyện thành công (a success story). Vì thế bạn cần phải đóng vai là người kể chuyện (story teller). Bạn cần dẫn dắt người nghe làm sao để truyền tải một câu chuyện hấp dẫn và cài vào đó là những đóng góp của bạn. Câu chuyện này bạn đã phải chuẩn bị từ trước và duyệt cho trôi trảy rồi. Bạn cần tóm tắt mô tả lĩnh vực hoạt động của công ty, mô tả dự án hoặc công việc hàng ngày và những vấn đề kỹ thuật bạn phải giải quyết.
Sau đó người phỏng vấn sẽ hỏi bạn những câu hỏi cụ thể, có thể dựa vào những vấn đề kỹ thuật bạn vừa kể hoặc có thể dựa vào danh sách câu hỏi họ đã có sẵn. Đã từng ngồi ở cả hai phía của bàn phỏng vấn, cá nhân tôi thích kiểu phỏng vấn như là một buổi nói chuyện đàm luận về kiến thức hơn là kiểu hỏi-trả lời. Kiểu nói chuyện làm cho không khí nhẹ nhàng cởi mở tạo cho người được phỏng vấn tâm lý thoải mái và diễn đạt dễ dàng, mặc dù mục đích vẫn là đánh giá khả năng của người đó. Kiểu này không có câu hỏi cố định, mà các câu hỏi được đặt ra theo hướng buổi phỏng vấn trôi đi. Tất nhiên khi đi phỏng vấn bạn không có quyền lựa chọn cách nào, nhưng bạn có thể lái câu chuyện để hướng nó về phía một cuộc đối thoại thay vì một cuộc hỏi-trả lời khô cứng. Bạn có thể chen vào khoảng trống bằng những câu bình luận cá nhân của bạn như bạn thích tính năng này, không thích tính năng kia, hoặc ước gì SQL Server có tính năng nọ. Bạn cũng có thể hỏi lại người phỏng vấn ở công ty đây có gặp vấn đề nọ kia hay không.
Các câu hỏi mở câu hỏi mở là câu không có câu trả lời đúng/sai, bạn trả lời sao cũng được nhưng qua đó người phỏng vấn có thể hiểu thêm về bạn. Bạn cần tận dụng những điểm này để mông má thêm bản thân. Trong nhiều trường hợp câu hỏi mở lại là yếu tố quyết định chọn ứng viên nào. Các câu hỏi mà tôi thường gặp là:
  • Hãy kể một vài thử thách mà bạn đã gặp trong công việc: Bạn cần chuẩn bị sẵn một vài tình huống khó khăn trong công việc và kể ra bạn đã vượt qua như thế nào, hoặc không vượt qua được. Ví dụ một câu query rất phức tạp có vấn đề về hiệu năng, muốn giải quyết đòi hỏi phải sửa lại thiết kế database và điều này là không khả thi, nên bạn phải tối ưu trong khuôn khổ mô hình dữ liệu đó. Hoặc dữ liệu lớn làm cho việc backup rất lâu, đến khi bạn phân đoạn bảng và chỉ backup đoạn đang nhận dữ liệu nên rất nhanh. Bạn cần tránh câu trả lời kiểu như “không có thử thách nào cả, việc gì cũng làm được”. Bạn tưởng sẽ gây ấn tượng rằng bạn giỏi và việc gì cũng làm được, nhưng ngược lại người phỏng vấn sẽ nghĩ rằng anh/chị chàng này rất nhạt nhòa chưa đụng phải việc gì khó cả.
  • Điểm yếu của bạn là gì? Đây là một cái bẫy, tất nhiên bạn không muốn lộ ra điểm yếu nào có thể ảnh hưởng tiêu cực đến công việc. Bạn nên tìm ra cái nào đấy vô hại đồng thời vẫn thể hiện là bạn quan tâm đến công việc. Ví dụ bạn đôi khi thiếu kiên nhẫn khi khách hàng cứ can thiệp phải thiết kế database như thế nào, khách hàng cứ nghĩ database như một cái spreadsheet trong khi bạn muốn database cần phải được chuẩn hóa. Hoặc khi một câu truy vấn hoặc cập nhật dữ liệu chạy mất lâu, bạn rất bồn chồn sốt ruột không thể bỏ đi uống cafe như người khác.
  • Làm việc trong database bạn thấy có điều gì hay (tại sao bạn chọn làm nghề này)? Bạn cũng phải chuẩn bị sẵn trong đầu một vài lý do bạn yêu thích làm nghề này, tuyệt đối tránh các lý do như hoàn cảnh xô đẩy (kiểu đang thất nghiệp thì công ty đứa bạn gọi cho làm). Ví dụ một lý do tôi thích nghề này vì giữa cách làm tốt và không tốt có một sự khác biệt lớn mặc dù cho cùng kết quả. Tôi đã gặp những câu truy vấn chạy từ vài ngày sau khi tối ưu giảm xuống còn vài tiếng, và tôi thấy điều này thật tuyệt vời mà các bạn làm ứng dụng không bao giờ gặp.
Một vài câu hỏi khác:
  • Tính năng nào trong bản SQL Server sắp tới bạn mong đợi nhất?
  • Tính năng nào còn thiếu trong SQL Server mà bạn mong muốn có?
  • Mục tiêu nghề nghiệp của bạn trong vài năm tới là gì?
  • Điều gì bạn thích ở công việc hiện tại?
  • Điều gì bạn không thích ở công việc hiện tại?
Thái độ trong khi phỏng vấn Bạn cần giữ thái độ tự tin, không e dè nhưng vẫn tôn trọng người phỏng vấn. Không ai biết tất cả mọi thứ và bạn cũng không phải ngoại lệ. Nếu gặp câu hỏi bạn chưa biết, bạn mạnh dạn nói là bạn không biết và nếu có thể thì nói thêm là tôi đoán thế nọ thế kia theo logic của tôi. Gần đây tôi gặp một anh chàng vốn đã làm 10 năm ở một công ty nọ, anh tỏ rõ ra là rất lo lắng và thanh minh vì lâu lắm không đi phỏng vấn xin việc. Điều này thật là không cần thiết, thái độ là việc bạn có thể chọn được.
Trong lúc phỏng vấn có thể có nhưng giây phút im lặng vì bạn đã trả lời xong mà người phỏng vấn chưa biết hỏi tiếp câu gì, bạn nên chủ động lấp khoảng trống đó bằng những câu thêm thắt bổ sung cho câu trả lời vừa xong. Ví dụ bạn vừa trả lời xong câu hỏi về computed column, và tất cả mọi người đang im lặng, bạn có thể nói thêm rằng một cách khác để làm được việc trên là tạo view từ bảng và trong view định nghĩa thêm một cột mới. Không nên ngồi im đợi xem câu hỏi tiếp theo là gì.
Một tình huống có thể ít gặp hơn là khi người phỏng vấn có một quan điểm khác với bạn về một vấn đề nào đó, ví dụ nên để sql code ở thủ tục hay ở ứng dụng, bạn chỉ cần dừng lại ở mức nêu lên quan điểm của mình chứ không cần tranh luận với người phỏng vấn về chuyện đúng sai của người đó.
Đi phỏng vấn cũng như đi cưa gái/giai. Nếu bạn tỏ ra mong muốn một cách tuyệt vọng để được nhận vào công ty, tự nhiên họ sẽ có một thái độ dè chừng và tự hỏi lý do gì mà anh/chị chàng này lại lăn xả vào như vậy. Ngược lại, nếu bạn giữ thái độ điềm tĩnh tự tin, kiểu như “công ty đang phỏng vấn tôi để xem tôi có đủ khả năng không, nhưng ngược lại tôi cũng đang đánh giá xem công ty có xứng đáng với năng lực của tôi không”, thì họ sẽ coi bạn ngang hàng với họ và đánh giá bạn công bằng hơn.

Viết Resume Xin Việc Như Thế Nào

Bài viết trích từ blog anh Vũ Huy Tâm: http://www.sqlviet.com/blog/viet-resume-xin-viec-nhu-the-nao

Mình đã trải qua vài lần đi phỏng vấn xin việc và ngồi phỏng vấn các bạn đến xin việc. Mình cũng đã phải kỳ cạch ngồi viết resume cho mình và đọc hàng trăm resume của các bạn ứng viên. Mình phát hiện ra một vài lỗi trong resume rất nhiều bạn mắc phải, những lỗi này nếu để ý sửa được sẽ làm cho resume trông chuyên nghiệp và tạo ấn tượng tốt cho người đọc. Mặc dù các kinh nghiệm này là ở Mỹ, mình tin là nó có giá trị phổ cập. Đây là một trong loạt bài về kinh nghiệm xin việc, bài kia nói về kinh nghiệm phỏng vấn.

Giải phẫu một cái resume

Resume (hoặc còn gọi là CV) có một nguyên tắc chung là toàn bộ nội dung phải là các gạch đầu dòng và mỗi gạch đầu dòng chỉ là một đoạn ngắn không quá 3 dòng. Nếu bạn viết liền một đoạn 5-7 câu thì người đọc sẽ phát chán. Một nguyên tắc nữa là trang đầu tiên phải chứa hết các thông tin bạn muốn người ta đọc, vì thế bạn phải đưa các thông tin quan trọng nhất vào trang đầu tiên, các trang sau chỉ là để thêm thắt cho đầy đủ.
Resume không có khuôn mẫu cố định nhưng thường bắt đầu bằng thông tin cá nhân (tên, địa chỉ liên lạc) và tiếp theo gồm các phần như sau:
Objectives (Mục đích) tìm kiếm các công việc đòi hỏi thử thách cao, cơ hội tham gia các dự án lớn hơn…
Phần này không bắt buộc và người đọc cũng ít để ý trừ khi bạn có một đoạn rất kêu để lắp vào.
Qualifications (Trình độ chuyên môn) bạn liệt kê các kỹ năng bạn đã thu thập được đến giờ, cái nào quan trọng để lên trước và giảm dần xuống dưới. Như ở hình dưới là một đoạn resume của một cậu ứng viên nộp vào chỗ mình (đã sửa đổi):

Đoạn này cần viết ngắn gọn, xúc tích, và chỉ nên giới hạn trong khoảng nửa trang. Nếu bạn mới ra trường hoặc vừa mới đi làm có ít kinh nghiệm, bạn có thể kể lể hết những kỹ năng bạn có. Còn nếu bạn đã có một lượng kỹ năng kha khá bạn có thể mạnh dạn loại bớt và chỉ giữ lại những gì bạn coi là quan trọng. Ví dụ bạn đang tìm việc về SQL Developer, bạn có thể bỏ bớt những kỹ năng như windows installation, linux admin, hay php programming.
Experiences (Kinh nghiệm) Đoạn này giành để liệt kê những kinh nghiệm làm việc bạn đã có từ trước đến giờ. Bạn cần bắt đầu bằng công việc hiện tại và lùi dần về trước theo thời gian. Người đọc resume chỉ quan tâm đến công việc bạn hiện đang làm. Nếu nó quá ngắn (ví dụ chưa được 1 năm) thì mới xem đến công việc liền trước đó. Những công việc bạn làm 5-7 năm trước thì chẳng ai để ý đến nữa.
Vì thế bạn nên dồn sức vào trang điểm cho phần công việc hiện tại. Phần này cần bao gồm tên công ty, vị trí công việc (DBA, SQL Developer…), thời gian làm, một đoạn mô tả vắn tắt về dự án mình làm và kèm theo chi tiết công việc.

Một điều cực kỳ quan trọng mà rất nhiều người quên không làm, là bạn phải mô tả công việc kèm theo những đóng góp của bạn. Nếu bạn chỉ liệt kê công việc một cách thuần túy kỹ thuật, ví dụ:
- Write stored procedures to update/insert data, using features such as transaction, dynamic sql, error handling.
- Write triggers to enforce business rules.
- Backup database
thì rất nhàm chán và không có gì bắt mắt người đọc vì công việc nào về cơ bản cũng giống nhau như vậy. Điều làm resume của bạn nổi bật phải là câu chuyện bạn kể về công việc của bạn và những đóng góp của bạn trong câu chuyện đó. Ví dụ bạn đang làm trong một hệ thống xử lý bồi thường của một công ty bảo hiểm, với ba dòng mô tả ở trên bạn có thể viết lại như sau:
- Develop back end stored procedures as part of the online claim processing system that smoothly interacts with the application layer. The stored procedures incorporate many T-SQL features such as transaction, dynamic sql, error handling that can handle complex claim data update efficiently. The system processes millions of claims every month and meets very high requirements of real time processing under heavy traffic.
- Write triggers to seamlessly update customer and claim data based on various business rules.
- Perform daily database backup to guard against data loss due to hardware failure.
Câu chuyện của bạn càng có nhiều yếu tố cá nhân càng tốt, bạn có thể dùng những tính từ hoặc trạng từ như successful, drastically (ví dụ drastically reduce page load time) để nhấn mạnh những thành tích. Nếu có những dẫn chứng bằng con số cụ thể thì càng hay, ví dụ thời gian chạy query giảm từ 5 phút xuống 1 phút, hoặc dung lượng database lên tới 5TB.
Một điều bạn cần lưu ý là đoạn mô tả cho công việc hiện tại cũng chỉ được chiếm nửa trang. Đoạn này cộng với đoạn Qualifications ở trên chiếm trọn trang đầu tiên và đây là phần người đọc để ý đến nhiều nhất. Lật sang trang thứ hai người ta chỉ còn xem loáng thoáng, rồi lật sang trang cuối để xem anh/chị chàng này bằng cấp thế nào hoặc có cái gì hay ho nữa không.
Một mẹo nhỏ là khi bạn đã làm qua nhiều công ty ở cùng vị trí công việc tương đương nhau, bạn có thể thay đổi tên vị trí để chúng có vẻ như khác nhau. Ví dụ bạn có thể dùng DBA, Database Administrator, Database Engineer, Database Developer, SQL Developer, Data warehouse Developer, ETL Developer, SSIS Developer, tùy theo cái nào thích hợp nhất. Nếu công ty nào cũng để là DBA thì trông nó nhàm và người ta thấy nhân vật này công việc chả có gì thay đổi cả.
Education (Học vấn) Phần này để ghi bạn tốt nghiệp trường nào năm nào và những khóa học khác nếu có như ở FPT hay đâu đó. Bạn cũng đưa vào đây các chứng chỉ nếu có như Microsoft MCSE. Nếu bạn vừa tốt nghiệp và chưa có nhiều kinh nghiệm làm việc, bạn có thể đưa phần này lên trước phần Experience, vì đây là cái thể hiện năng lực nặng ký nhất của bạn tại thời điểm này. Còn nếu bạn đã trải qua ít nhất vài năm làm việc, bạn nên ưu tiên đưa phần Experience lên trước phần này. Đây là cách thông thường ở Mỹ, còn ở Việt nam nếu tâm lý chung vẫn coi trọng bằng cấp thì đưa phần này lên trước có thể lợi hơn.

Sửa soạn tinh thần viết resume

Trước khi viết hoặc cập nhật resume, bạn cần sắp xếp lại những suy nghĩ về công việc mình đang làm. Bạn nên gắn mỗi việc cụ thể của mình với một mục tiêu lớn hơn của công ty và tự hỏi nó đóng góp gì vào hoạt động sản xuất kinh doanh của công ty, tại sao công ty cần những dữ liệu này, tại sao cần những report như thế này, tại sao mình phải backup database… Trả lời được những câu hỏi đấy bạn sẽ thấy make sense những việc mình làm và khi viết resume, những mô tả về công việc tự nhiên sẽ trở nên sống động hơn.
Bạn phải tự xác định rằng công việc mình làm là quan trọng (chắc chắn rồi vì thế công ty mới thuê bạn). Quan trọng ở đây không có nghĩa là nếu bạn bỏ đi thì công ty sẽ sập, mà theo nghĩa bạn đóng một vai trò to lớn trong hoạt động của công ty giúp nó phát triển. Hãy đem tinh thần này vào việc viết resume: bạn hiện đang làm một công việc quan trọng và bây giờ bạn đang đi tìm một việc còn quan trọng hơn, và mỗi từ ngữ mỗi câu đoạn trong resume bạn viết ra đều là để khẳng định thêm điều này.
Có một lỗi khá nhiều người vi phạm, là đưa quá nhiều thông tin giả vào resume (“nổ” to quá). Nếu bạn đưa error handling và curor vào nhưng trên thực tế chưa biết gì về mấy thứ đó cả, khi phỏng vấn người ta hỏi đến mà mình không nói được thì hỏng hết. Vì thế những gì bạn không biết thì không được đưa vào resume. Tất nhiên bạn không cần phải hoàn toàn thành thực, thậm chí bạn nên tâng bốc mình lên một chút trong phạm vi kiểm soát được. Điều này càng cần thiết khi bạn vẫn còn có ít kinh nghiệm làm việc. Ví dụ công việc hiện tại bạn không dùng gì đến log shipping, nhưng bạn tự tìm hiểu và thử set up vài lần, bạn có thể nhắc đến log shipping trong resume và nói khéo khéo như nó là một phần của công việc. Nên nhớ là bạn đang kể lại câu chuyện về công việc của bạn và trong câu chuyện đó không nhất thiết 100% mọi chi tiết đều là sự thật, miễn là nó giống như thật và bạn có đủ khả năng làm người ta tin đấy là sự thật.
Chúc bạn thành công!