• Skip to main content

DungNQ

1001 cách để trở thành Webmaster

You are here: Home / Archives for Chưa phân loại

Chưa phân loại

Đừng bắt chước nhân tài “1000 năm có 1” như Mark Zuckerberg hay Jeff Bezos: Thành công nằm ở 6 điều các “triệu phú nhà bên” đang làm cạnh bạn!

August 2, 2019 by dungnq Leave a Comment

Trong vòng 20 năm qua, tôi đã có cơ hội nói trò chuyện với hàng nghìn người thành công. Họ không phải là Mark Zuckerberg hay Jeff Bezos, mà là những người bình thường có thể bạn vẫn gặp hàng ngày, gây dựng sự nghiệp thành công nhờ chính bàn tay mình. Mỗi năm, họ có thể kiếm từ 500.000 USD đến cả triệu USD và tích lũy gấp nhiều lần thế này.

Chúng ta vẫn thường nghe các tỷ phú, thiên tài hàng đầu thế giới chia sẻ câu chuyện thành công của họ và lấy đó làm động lực. Tuy nhiên, hãy nhớ rằng, những bộ óc kiệt xuất như vậy chỉ chiếm 0.01% dân số thế giới. Thay vào đó, bạn nên học tập những “triệu phú nhà bên” – những người thành công đang hiện diện mỗi ngày xung quanh bạn. Đó là cách nhanh nhất và dễ nhất để bạn đạt được những thành tựu cho riêng mình.

Dưới đây là 6 thói quen hàng triệu người thành công ngoài kia vẫn làm mà tôi tích lũy được trong hàng chục năm qua.

Đừng bắt chước nhân tài 1000 năm có 1 như Mark Zuckerberg hay Jeff Bezos: Thành công nằm ở 6 điều các triệu phú nhà bên đang làm cạnh bạn! - Ảnh 1.

Hạn chế sử dụng mạng xã hội

Hầu hết những người thành công tôi gặp đều tránh dùng Facebook, Twitter, Instagram và các loại mạng xã hội khác. Họ cho rằng đó là một sự lãng phí thời gian và sức lực. Chúng chẳng khác nào kẻ cướp thời gian, mà đối với những người thành công, thời gian là vàng bạc. Họ thà sử dụng vốn thời gian ít ỏi của mình để làm ăn thay vì cãi nhau trên Twitter, bình luận dưới ảnh mèo nhà ai đó.

Không dễ dàng hài lòng

Brian Tracy – một chuyên gia về động lực cho biết: “Không mờ mắt vì những lợi ích, tiện nghi trước mắt để đạt được thành tựu lâu dài là điều kiện tiên quyết để thành công”.

Ngày nay, ai cũng muốn đổi xe hơi, cho con học ở đại học danh tiếng, đi nghỉ dưỡng xa hoa, thuê vú em, người làm vườn, gia sư, huấn luyện viên, đầu bếp, mặc quần áo hàng hiệu,… Cứ kiếm được 1 đồng, bạn lại tiêu những 2 đồng; sống như vậy bạn sẽ không thể nào giàu được. Khi bạn tính đến khoản tiền nhà, tiền học, tiền thuế, tiền dành về hưu, bạn sẽ thấy mình thiếu tiền trầm trọng.

Những người thành công luôn biết bỏ cái tôi sang một bên, tránh mâu thuẫn với hàng xóm và sống khiêm nhường hết mức có thể. Điều này giúp họ tiết kiệm được một khoản đáng kể, bởi mục đích lớn nhất của họ là tích lũy tiền, thay vì tiêu chúng. Những đồng tiền này sẽ được họ đầu tư một cách khôn ngoan để tiền lại sinh ra tiền. Càng ổn định về tài chính, bạn sẽ càng tự do sống và làm việc.

Đừng bắt chước nhân tài 1000 năm có 1 như Mark Zuckerberg hay Jeff Bezos: Thành công nằm ở 6 điều các triệu phú nhà bên đang làm cạnh bạn! - Ảnh 2.

Phân bổ thời gian hợp lý

Chỉ cần ngồi xem TV hoặc đọc bình luận trên mạng xã hội một lúc, bạn sẽ ngay lập tức cãi nhau với người khác hoặc cảm thấy bản thân thật tồi tệ. Tuy nhiên, việc “khẩu chiến” trên mạng không chỉ tốn thời gian và năng lượng mà còn tạo thêm kẻ thù cho bạn. Việc xem mọi trận đấu bóng trên TV, chơi game liên tục, đi uống thường xuyên cũng vậy.

Thay vì tiếp tục những thói quen xấu xí không đem lại hiệu quả này, bạn nên dành thời gian đọc sách báo, xem các video trên Youtube có chủ đề giúp ích, hỗ trợ cho cuộc sống và sự nghiệp của bạn. Những người thành công luôn biết rằng, thời gian còn quan trọng hơn tiền bạc. Tiền bạc có thể làm ra, nhưng thời gian không thể lấy lại.

Chăm chỉ và nỗ lực hết mình về lâu dài

Đừng quá lo lắng về chuyện học hành hay sự nghiệp. Bạn phải chủ động kiểm soát tương lai của chính mình. Hãy tìm ra đâu là điểm mạnh, đâu là điều bạn có thể làm để kiếm ra tiền, sau đó hãy nỗ lực hết mình. Có thể bạn sẽ tốn nhiều năm đi sớm về muộn, làm việc cả khi ở nhà lẫn cuối tuần, nhưng cuối cùng bạn sẽ nhận được thành quả tương xứng.

Ai cũng muốn nhanh chóng thành công, nhưng sự thật là những người thành đạt luôn mất nhiều năm làm việc quần quật trước khi leo được tới đỉnh vinh quang. Họ đã phải hy sinh gia đình, bạn bè, những buổi đi xem phim, những sự kiện thể thao trong lúc đó. Đó là cái giá mà bạn bắt buộc phải trả nếu muốn trở thành số 1.

Đừng bắt chước nhân tài 1000 năm có 1 như Mark Zuckerberg hay Jeff Bezos: Thành công nằm ở 6 điều các triệu phú nhà bên đang làm cạnh bạn! - Ảnh 3.

Dám đương đầu với thất bại

Thất bại không phải kẻ thù, mà chính là một người bạn. Chúng ta luôn được dạy phải biết xấu hổ khi thất bại, nhưng điều đó hoàn toàn không đúng. Chỉ bằng cách thử nghiệm và thất bại, bạn mới rút ra bài học quý giá cho mình.

Những người thành công luôn rút ra được bài học bổ ích từ thất bại. Họ thất bại, rút kinh nghiệm rồi cải thiện mình. Việc của bạn là cứ tự tin tiến về phía trước và lờ đi những lời nhận xét tiêu cực sau lưng mình.

Thay đổi tư duy và thái độ

Việc đầu tiên bạn cần làm là dừng mọi suy nghĩ tiêu cực và thay thế chúng bằng những lời lạc quan. Nếu nghĩ mình có thể làm được, bạn sẽ tìm cách để biến điều đó thành hiện thực. Bạn nên hình dung trong đầu mình con người mà bạn muốn trở thành, rồi cố gắng trở thành con người đó. Nếu bạn muốn làm CEO, hãy hành động cho ra dáng một CEO chứ không chỉ là giả vờ. Đây là một việc rất khó bởi cám dỗ sẽ khiến bạn muốn bỏ cuộc. Nhưng nếu theo đuổi đến cùng, bạn sẽ được hưởng quả ngọt xứng đáng về lâu dài.

Ngoài 6 điều cơ bản ở trên ra, những người thành công cũng thường xuyên có những thói quen này:

– Tiếp xúc với những người thông minh, tài giỏi hơn mình

– Sẵn sàng thích nghi với các thay đổi

– Đặt ra mục tiêu và thiết lập hệ thống thói quen để đạt được mục tiêu

– Buông bỏ quá khứ và tập trung cho hiện tại

– Rèn luyện trí tuệ và thể chất

– Tìm ra, chấp nhận và vượt lên trên nỗi sợ của mình

– Luôn lắng nghe và học hỏi từ người khác

– Tận dụng từng phút giây trong cuộc đời này

Hãy thử làm những điều này trong vòng 3 tháng và tôi đảm bảo bạn sẽ thấy điều kỳ diệu xảy ra.

Filed Under: Chưa phân loại

Hiệu chỉnh Google XML Sitemap với trang Sitemap Index

May 13, 2017 by robot Leave a Comment

Tiếp tục chia sẻ các kinh nghiệm của bản thân với hệ thống dữ liệu lớn của WordPress cùng các plugin phổ biến. Google XML Sitemap là plugin không thể thiếu trong bất kỳ hệ thống nào, đây là plugin cung cấp cho webmaster công cụ tuyệt với để cho Google, Bing và các Search Engine khác biết sự tồn tại nội dung của bạn khi phát hành. Tuy nhiên, do giới hạn của việc thiết kế cho blog cỡ nhỏ, các plugin và bản thân WordPress cũng chưa tính hết được các vấn đề gặp phải khi hệ thống có những bài viết lớn dần lên.

Nếu bạn từng biết về SEO, thì sitemap là công cụ quan trọng để bạn cho các Search Engine biết được trong toàn bộ website của bạn có gì, từ đó các con robot, hay gọi là các “con bót” của bộ máy tìm kiếm sẽ căn cứ vào đó để đặt những bước chân đầu tiên khám phá nội dung trên website của bạn. Hôm nay tôi xin chi sẻ cùng các bạn vấn đề thứ 2 tôi gặp phải khi sử dụng Google XML Sitemap, đó là trong Sitemap Index. Vấn để tôi gặp phải là gì? Nếu lượng dữ liệu trên website của bạn đủ lớn, tức là nội dung phát hành trải rộng trong suốt 20 năm chẳng hạn, vậy con số chỉ mục theo từng tháng sẽ là 20 x 12 = 240 trang. Có vẻ không phải là nhiều, nhưng yêu cầu của Google đâu có đơn giản vậy,  nó cần biết thời gian cập nhật gần nhất là khi nào? Cộng thêm một số tiêu chí của Plugin Google XML Sitemap, thì chúng ta phải chạy một câu lệnh như sau

$q = "
          SELECT
            YEAR(p.post_date_gmt) AS `year`,
            MONTH(p.post_date_gmt) AS `month`,
            COUNT(p.ID) AS `numposts`,
            MAX(p.post_modified_gmt) as `last_mod`
          FROM
            {$wpdb->posts} p
          WHERE
            p.post_password = ''
            AND p.post_type = '" . esc_sql($postType) . "'
            AND p.post_status = 'publish'
            $exPostSQL
            $exCatSQL
          GROUP BY
            YEAR(p.post_date_gmt),
            MONTH(p.post_date_gmt)
          ORDER BY
            p.post_date_gmt DESC";

Tất nhiên, nếu như bạn đã đọc bài giới thiệu trước của tôi trong cùng chủ đề, bạn có thể nhận thấy một lỗi tôi đã nói trước đây, sử dụng các hàm trong truy vấn, đây là một điều tối kỵ khi lập trình SQL, nhất là với dữ liệu khổng lồ, ở đây tác giả còn vô cùng hoành tráng, khi sử dụng trong lệnh Group BY… Woa, nếu dữ liệu của tôi là cả triệu bản ghi, chắc tôi phải tính toán lâu lắm, chưa kể có thể ảnh hưởng tới các câu truy vấn khác. Vậy tôi đã sửa lại như thế nào?

//@dungnq optimize start
                                //$posts = $wpdb->get_results($q);
                                /**
                                 * Find min and max post_date_gmt
                                 * Each month to get year, month, numposts, last_mod to add the object array result
                                 * Ignore group by YEAR and MONTH function
                                 */
                                $q = "
          SELECT
            p.post_date_gmt
          FROM
            {$wpdb->posts} p
          WHERE
            p.post_password = ''
            AND p.post_type = '" . esc_sql($postType) . "'
            AND p.post_status = 'publish'
            $exPostSQL
            $exCatSQL
          ORDER BY p.post_date_gmt DESC";                
                                $max_time = $wpdb->get_var($q);
                                
                                $q = "SELECT
            p.post_date_gmt
          FROM
            {$wpdb->posts} p
          WHERE
            p.post_password = ''
            AND p.post_type = '" . esc_sql($postType) . "'
            AND p.post_status = 'publish'
            $exPostSQL
            $exCatSQL
          ORDER BY p.post_date_gmt ASC";                
                                $min_time = $wpdb->get_var($q);
                                
                                $time_min = Datetime::createFromFormat('Y-m-d H:i:s', $min_time);
                                $time_max = Datetime::createFromFormat('Y-m-d H:i:s', $max_time);
                                $time = $time_max;
                                #modify time min to fist time of the month 
                                $time_min = Datetime::createFromFormat('Y-m-d H:i:s', $time_min->format("Y-m-01 00:00:00"));
                                
                                $posts = array();
                                do {
                                    #var_dump($time);
                                    $month = $time->format('m');
                                    $year = $time->format('Y');
                                    
                                    if ($month == 12) {
                                        $next_year = $year+1;
                                        $next_month = '01';
                                    }
                                    else {
                                        $next_year = $year;
                                        $next_month = $month+1;
                                    }
                                    
                                    $q = "
          SELECT
            YEAR(p.post_date_gmt) AS `year`,
            MONTH(p.post_date_gmt) AS `month`,
            COUNT(p.ID) AS `numposts`,
            MAX(p.post_modified_gmt) as `last_mod`
          FROM
            {$wpdb->posts} p
          WHERE
            p.post_password = ''
            AND p.post_type = '" . esc_sql($postType) . "'
            AND p.post_status = 'publish'
                                                AND p.post_date_gmt >= '{$year}-{$month}-01 00:00:00'
                                                AND p.post_date_gmt get_row($q);
                                    #var_dump($result);
                                    if ($post != null && $post->year > 0 && $post->month > 0) {
                                        array_push($posts, $post);
                                    }
                                    #previos month
                                    $time->modify("- 1 month");
                                    
                                }while ($time > $time_min);
                                
                                
                                
                                //@dungnq optimize end

Lý thuyết thì vô cùng đơn giản, với ý tưởng từ bài viết trước, thay vì sử dụng Group By để phân tách dữ liệu theo từng tháng, tôi tìm ngay ra 2 thời điểm, gần nhất và xa nhất, kế đó tôi chạy từng tháng kể từ thời điểm gần nhất, cho tới khi thời điểm xa nhất. Với mỗi vòng lặp, tôi lại tìm ra các thông tin mà hệ thống cần.

Bằng cách trên tôi đã đơn giản hóa một câu lệnh phức tạp, thành một chuỗi các lệnh đơn giản hơn, nhằm để xác định nhanh chóng một vấn đề tránh để các câu truy vấn chạy lâu quá và làm lock lại cả bảng dữ liệu.

Hy vọng với những cách trên, các bạn có thể tự tham khảo để sử dụng, cũng như hạn chế những lỗi gặp phải khi xây dựng hệ thống hay plugin cho cả triệu người dùng.

Filed Under: Chưa phân loại

GitLab lỗi khi clone với https

October 29, 2015 by Leave a Comment

Tự dưng một buổi chiều đẹp trời, vớ phải cái lỗi ẩm ương, làm gián đoạn hết kế hoạch của mình, tìm hiểu một vòng trên mang… các phải pháp tự tựa như nhau, có vẻ cũng khá nhiều người gặp vấn đề này… nhưng chưa có dòng nào copy rồi run mà chạy cả.

DungNQs-MacBook-Pro:www dungnq$ git clone https://git.xxx.com.vn/root/xxx.git

Cloning into ‘xxx’…

fatal: unable to access ‘https://git.xxx.com.vn/root/it-app-fwb-microsite.git/’: SSL peer handshake failed, the server most likely requires a client certificate to connect

Làm việc vào cái lúc chiều, buồn ngủ, không khả dĩ đối với công việc nghiên cứu này lắm… bỏ đấy và đi tìm hiểu một số thứ xung quan vụ SSL. Thử kiểm tra một vài lệnh test với openssl thì thấy cấu hình mặc định của GitLab không chạy ổn

openssl s_client -connect xxx:443 -tls1

Thử vào cấu hình của GitLab

nginx[‘ssl_ciphers’] = “ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256”

…

ci_nginx[‘ssl_ciphers’] = “ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256”

Hoá ra với một số hệ điều hành như MaxOS mã hoá mặc định của GitLab không còn an toàn, nên bản thân hệ điều hành đã bỏ loại bỏ các giải pháp này. Tư duy một chút, đơn giản chỉ cần bổ sung các mã encrypt khác để giúp tương thích với mấy bạn tiên tiến kia.

nginx[‘ssl_ciphers’] = “EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4”

Cấu hình tương tự với ci_nginx, sau đó reconfigure và restart để sử dụng GitLab bình thường.

Một ngày may mắn và thú vị với mình đây 😀

Filed Under: Chưa phân loại

Copyright © 2023 · Revolution Pro on Genesis Framework · WordPress · Log in