Thảo luận và chia sẻ cách tạo Cache, NGINX Caching, Reverse Proxy with Caching

Xin chào anh em!
Lời đầu tiên xin được gửi tới anh em lời chúc sức khỏe và thành công trong cuộc sống!

Hôm nay xin được phép thảo luận và chia sẻ cùng anh em cách tạo cache cho website. Anh em nào biết rồi thì hãy cứ đọc nhé, mình tin nó không thừa đâu hoặc có thể giúp ích thêm cho anh em.

Trước hết, câu hỏi đặt ra là việc tạo cache cho website để làm gì?
Xin được trả lời đơn giản nhất như sau:

Hầu hết các web server có thể xử lý các lượng truy cập bình thường và đa phần các trang web không có quá nhiều truy cập. Vì vậy, có thể bạn tự hỏi: Tại sao bạn nên cache trang web của bạn được hỗ trợ PHP? Các máy chủ web có thể phục vụ nhiều yêu cầu (request), nhiều file cùng một lúc, nhưng tất cả các file này nên là file tĩnh. Một tập lệnh PHP được thực thi bởi máy chủ web và tiếp theo nó sẽ tạo ra dữ liệu HTML được gửi đến người dùng (trình duyệt web). Cho nên khi thực hiện điều này, máy chủ cần sử dụng nhiều bộ nhớ hơn cách gửi một file tới người dùng. Ta cần cache lại thì tốt và nhanh hơn.

Đối với các website sử dụng mã nguồn wordpress bạn có thể sử dụng cách plugin tạo cache như:
– WP Super Cache
– WP rocket

Còn nếu không dùng mã nguồn wordpress thì việc tạo cache cũng tương đối đơn giản phải không nào. (Anh em cần hỏi chỗ này thì để lại bình luận nhé)

Nhưng trong bài này, mình xin chia sẻ một số phương pháp tăng tốc web trên NGINX, mình đã làm với VPS (máy chủ) của mình, để xem tại sao thiên hạ lại gọi nginx là Caching King.

Để giải thích chi tiết thì tương đối dài, và sẽ khá rối rắm.
Mình sẽ giải thích nhanh bằng hình ảnh mô hình đơn giản như sau.

Với 3 mô hình trên, mình đánh số thứ tự khoanh tròn màu đỏ. Chỉ cần cấu hình file nginx của domain là xong thôi, rất đơn giản mà không phải thay đổi gì liên quan đến source code web của bạn.

Sau đây là các bước triển khai:

Mô hình 1:

Cấu hình trên mình dùng cho wordpress luôn, các mã nguồn khác tương tự vậy.
Các hướng dẫn cấu hình nginx với chức năng Web Proxy – FastCGI Cache – Browser Cache – Cách bật nén Gzip trên server sao cho đạt hiệu suất cao nhất.

Giải thích:
Đây là dòng quan trọng khai báo cấu hình FastCGI Cache.
– fastcgi_cache_path /home/domain.com/cache levels=1:2 (thư mục tạo cache của bạn và giá trị này là quy tắc đặt tên và phân cấp thư mục cache)
– keys_zone=domaincache_cache:2000m : đặt tên cho cache zone là domaincache_cache có dung lượng là 2000m, bạn chú ý một chút về đơn vị dung lượng k/K là Kilobytes, m/M là Megabytes
– max_size=1000m inactive=2d; (kích thước tối đa của toàn bộ cache và nếu một response không được sử dụng trong thời gian 2 ngày thì nó sẽ bị xóa khỏi thư mục chứa cache.

Sau khi khởi động lại nginx.
Ta bắt đầu kiểm tra xem đã cache chưa.

curl -I https://domain.com/abc/

Lần đầu tiên truy cập sẽ cho ta thông báo cache là Miss, hãy thử lại lần nữa, nếu báo Hit là thành công.

Như vậy là chúng ta đã tạo cache xong, nhưng chúng ta cần lưu thư mục cache vào Ram thì tốc độ sẽ tốt hơn.
Vì tốc độ đọc trên Ram luôn cao hơn trên ổ cứng.
Trên SSH:
# nano /etc/fstab
tmpfs /home/domain.com/cache tmpfs defaults,size=1000M 0 0
# mount -a
Để kiểm tra lại kết quả bạn gõ lệnh:
df -ah | grep tmpfs
Thấy thư mục /home/domain.com/cache là ok

Mô hình 2:

Việc thực hiện cache ngay trên con reproxy sẽ giảm thiểu kết nối đến vps (máy chủ chính), tốc độ gần như tức thời.
Trên con reproxy sửa cấu hình nginx như sau:

Muốn cache vào ram thì làm tương tự bên trên.

Mô hình 3:

Nó là tổng hợp của hai mô hình 1 và 2, nhưng mình thấy nó không cần thiết.

Như vậy là mình đã trình bày xong phương pháp tăng tốc web trên NGINX. Mình đã cố trình bày rõ, nhưng sẽ khó có thể thoát hết các nội dung.

Hy vọng anh em cùng thảo luận để bài viết của em lên top google search. Hihi.
Cảm ơn anh em đã đọc topic của mình.

ps: Hy vọng bài viết của em vào nhóm bài viết chất lượng. Ai đọc mà ko like, e cắt trym. Hehe

Update: Nên kết hợp đồng thời với việc tạo cache thông thường trên ổ cứng để cho hiệu suất tốt nhất.

Cách sử dụng Inventory Adjustment trong Netsuite để tăng giảm số lượng item

Vào Transactions > Inventory > Adjust Inventory

Tại màn hình Inventory Adjustment, chọn Adjustment Account trong danh sách có sẵn

Hoặc nếu chưa có Adjustment Account, bạn có thể bấm New để tạo mới

Tại tab Adjustments dưới cùng, chọn Item trong danh sách trong select box (chỉ những Item thuộc loại Inventory Item sẽ xuất hiện ở đây)

Kế tiếp chọn Location của Item (được hiểu như là kho hàng của Item đó)

Phần Adjust Qty. By, nhập vào số lượng muốn thay đổi của Item tương ứng, có thể là nhập kho (số dương), hoặc xuất kho (số âm)
Netsuite sẽ hiển thị cho chúng ta số lượng hiện tại của Item đó tại Location đã chọn là bao nhiêu tại phần Qty. On Hand (trong ví dụ này là 136), và số lượng mới sau khi chúng ta thay đổi số lượng tại phần New Quantity (trong ví dụ này là 141)

Sau cùng bấm Save để hoàn tất việc tạo Inventory Adjustment.

Cách import file CSV trong Netsuite sử dụng Import Assistant

Vào Setup > Import/Export > Import CSV Records, màn hình sẽ hiện ra như bên dưới

Tại step 1 (Scan & Upload CSV File), phần Import Type chúng ta sẽ chọn loại dữ liệu trong Netsuite mà chúng ta muốn thêm/cập nhật dữ liệu (ở đây tôi chọn Items). Phần Record Type tôi sẽ chọn Inventory Item. Phần Character Encoding bạn chọn kiểu encoding của file CSV, ở đây tôi chọn Unicode (UTF-8). Phần Csv Column Delimiter, bạn chọn ký tự phân cách giữa các column của file CSV (thông thường là Comma – dấu phẩy). Cuối cùng ở phần CSV file(s), nếu bạn chỉ import 1 file thì chọn One File To Upload, nếu import nhiều file thì chọn Multiple Files To Upload. Sau cùng bạn chọn file CSV cần import và bấm Next để qua step 2.

Tại step 2 (Import Options), phần Data Handling chọn ADD nếu chỉ muốn thêm mới dữ liệu, chọn UPDATE nếu chỉ muốn cập nhật dữ liệu, hoặc chọn ADD OR UPDATE nếu muốn thực hiện cả việc thêm mới và cập nhật dữ liệu. Bạn có thể chọn thêm những option khác trong phần Advanced Options. Bấm Next để qua step 3&4

Tại step 4 (Field Mapping), phần Your Fields sẽ hiển thị tên file CSV của bạn đã upload lên và tên những column trong file CSV đó. Bên phải ngoài cùng là phần Netsuite Fields sẽ hiển thị toàn bộ những field (bao gồm cả những custom fields) của Record Type mà bạn đã chọn ở những step phía trên. Nếu column CSV bạn đặt tên giống với field trong Netsuite thì Netsuite sẽ tự liên kết column CSV với field tương ứng trong Netsuite. Tiếp theo bấm Next qua step 5.

Tại step 5 (Save mapping & Start Import), bạn có thể lưu lại quá trình import CSV file để sử dụng lại sau này. Điền những thông số tương ứng vào Import Map Name, Description và ID. Cuối cùng bạn bấm Save & Run. Nếu thành công màn hình bên dưới sẽ hiện ra.

Để kiểm tra quá trình import CSV file đã hoàn tất chưa bạn có thể bấm vào Import Job Status để kiểm tra. Nếu việc import diễn ra không thành công, bạn có thể bấm vào CSV Response để kiểm tra lỗi.

Cách sử dụng Matrix Items trong Netsuite để tạo item có nhiều variant

Vào List > Accounting > Items > New, màn hình sẽ hiện ra như sau. Sau đó bấm vào Matrix Item Assistant của Inventory Item

Tại Step 1, chúng ta nhập vào tên item tại phần Item Name/Number, chọn CODS Account và Asset Account (Nếu chưa có 2 account này bấm New để tạo mới). Sau đó bấm Next.

Tại Step 2, chúng ta sẽ tạo Item Property List (hay còn gọi là Variant), chúng ta có thể sử dụng list cũ bằng cách chọn Use An Existing List hay tạo mới bằng Create A New List. Ở đây tôi sẽ tạo mới.

Nhâp vào List Name và List Display Name (ví dụ “Size”), tiếp theo phần Property Value, chúng ta nhập những giá trị cho list đó, ở đây tôi nhập S, M, L, XL

Có thể bấm Save & Create Another để tạo list mới, hoặc có thể bấm Next để qua Step 3

Tại Step 3, phần Property Combinations, chúng ta sẽ kết hợp các Property khác nhau để có thể tạo ra tên mỗi Item ứng với mỗi Variant

Phần Insert Item Attribute chọn “Item Name/Number”. Phần Insert Matrix Option chọn “Size”

Tại phần value của các options, chọn những option nào muốn xuất hiện, ở đây tôi chọn S, M, L, XL. Sau đó bấm Next.

Tại Step 4, xuất hiện danh sách các items sau khi được tạo sau khi kết hợp tên item + tên variant. Đánh dấu check để chọn những item muốn được tạo. Sau cùng bấm Finish.

Đây là kết quả sau khi truy cập vào List > Accounting > Items. Mỗi item là 1 sản phẩm riêng biệt với ID khác nhau.

Phương pháp đơn giản giao dịch Bitcoin và vàng với 3 đường MA7, MA25, MA99 với khung thời gian dài

Sau một thời gian giao dịch crypto và học phân tích kỹ thuật, xem chart các kiểu thì tôi đã rút ra 1 phương pháp có thể xem là khá ổn dành cho những ai kiên trì và trade theo phương pháp ít rủi ro. Đối với Bitcoin thì tôi khuyên nên dùng chart khung thời gian 1w (1 tuần), và đối với vàng thì tôi khuyên nên dùng chart khung thời gian 1m (1 tháng)

Lý do tại sao tôi dùng khung thời gian lớn như vậy bởi vì, khung thời gian lớn bao giờ cũng cho xu hướng dài hạn chính xác hơn các khung thời gian nhỏ, khả năng bị nhiễu khá thấp. Còn tại sao lại chọn Bitcoin khung thời gian 1w mà lại chọn vàng khung thời gian 1m? Bởi vì vàng ổn định hơn Bitcoin nên cần xem khung thời gian lớn hơn sẽ dễ nhìn thấy xu hướng dài hạn hơn.

Dưới đây là chart 1w của Bitcoin và chart 1m của vàng

Phương pháp giao dịch của chúng ta ở đây là:

– Bật 3 đường MA7, MA25, MA99 lên chart.
– Khi đường MA7 cắt đường MA25 từ dưới lên thì nó báo hiệu giá sẽ tăng trong thời gian tới. Ngược lại khi đường MA7 cắt đường MA25 từ trên xuống thì nó báo hiệu giá sẽ giảm trong thời gian tới. Có thể mở lệnh buy/sell tại giao điểm của 2 đường này hoặc có thể buy/sell ở những vùng được đề cập dưới đây.
– Buy (long) ở những vùng nằm dưới cả 3 đường MA nói trên, đây là những vùng buy an toàn, khả năng thua lỗ sẽ rất thấp. Và ngược lại tại những vùng này là những vùng sell (short) rất rủi ro, sell ở đây khả năng thua lỗ sẽ rất cao.
– Sell (short) ở những vùng nằm trên cả 3 đường MA nói trên, đây là những vùng sell an toàn, khả năng thua lỗ sẽ rất thấp. Và ngược lại tại những vùng này là những vùng buy (long) rất rủi ro, buy ở đây khả năng thua lỗ sẽ rất cao.
– Nếu giá nằm lưng chừng ở giữa, tuyệt đối không giao dịch gì cả.
– Tiếp theo để đạt tối đa lợi nhuận gần phải để đòn bẩy margin ở mức an toàn và gồng lời càng lâu càng tốt.

Những điều cần thiết khi dùng phương pháp này:

– Cần phải rất kiên nhẫn, phải gọi là vô cùng kiên nhẫn để chờ đợi giá về đúng vùng vào lệnh. Bởi vì thời gian 1w và 1m thời gian chờ đợi sẽ rất lâu, đối với 1w bạn sẽ chờ theo tháng và đối với 1m bạn sẽ chờ theo năm.
– Nên sử dụng 1 tool nào đó để thông báo cho bạn biết khi đường MA7 cắt đường MA25, việc còn lại cũng bạn là đừng quá quan tâm tới chart và tin tức cho đến khi tool thông báo cho bạn biết.
– Và điều cuối cùng là như điều 1, phải VÔ CÙNG KIÊN NHẪN.

Giới thiệu về HTML

1/ HTML là gì? 

Để hiểu về thế giới lập trình web thì điều căn bản bạn cần phải học chính là HTML. Vậy là HTML là cái gì? Nó có ăn được không? (joke) 😀

HTML là ngôn ngữ đánh dấu (markup language) chứ không phải là ngôn ngữ lập trình (nhiều người hay bị nhầm cái này) dùng để tạo ra những trang web

– HTML được viết tắt từ chữ Hyper Text Markup Language (dịch ra tiếng Việt là ngôn ngữ đánh dấu siêu văn bản)
– HTML có thể mô tả cấu trúc của 1 trang web thông qua việc đánh dấu (markup) bằng thẻ (tag)
– HTML có nhiều phần tử (elements) là những block trên trang web
– HTML được trình bày bởi những thẻ (tag)
– Các trình duyệt web (Chrome, Firefox, Safari …v.v…) không hiển thị cho chúng ta thấy những thẻ (tag) HTML 1 cách mặc định mà sử dụng chúng để tạo ra nội dung cho trang web

2/ Ví dụ HTML document đơn giản

Chúng ta sẽ xem 1 đoạn HTML đơn giản dưới đây

Tôi sẽ giải thích sơ qua 1 số thẻ (tag) sử dụng trong đoạn HTML bên trên

<!DOCTYPE html> : thẻ này sẽ định nghĩa HTML document này đang sử dụng kiểu HTML5
<html> : thẻ này là thẻ gốc ban đầu mà mọi HTML document đều phải có, được hiểu như là 1 thẻ bắt đầu và kết thúc 1 HTML document và nó bao trùm những thẻ con bên trong
<head> : như đúng cái tên của nó, thẻ này đại diện cho phần đầu của 1 HTML document (những phần mà thẻ head chứa đa phần sẽ không thấy được khi lướt web bằng trình duyệt, ngoại trừ title)
<title> : cũng như cái tên của nó, thẻ này sẽ chưa tiêu đề cho HTML document
<body> : thẻ này sẽ chứa phần thân của HTML document (những phần chứa trong thẻ body đa phần sẽ thấy được khi chúng ta duyệt web bằng trình duyệt)
<h1> : thẻ này chứa tiêu đề với kích thước khá to khi hiển thị lên trên website, khác với thẻ <title> là tiêu đề cho toàn bộ trang web thì thẻ <h1> có thể là tiêu đề cho nhiều đoạn văn bản trong HTML document và có thể sử dụng được nhiều lần, còn thẻ <title> chỉ được sử dụng 1 lần cho 1 HTML document
<p> : thẻ này sẽ chứa 1 đoạn văn bản (paragraph) bên trong nó

3/ Thẻ HTML

Thẻ HTML thường sẽ có cấu trúc như sau

<tenthe>Noi dung ben trong the …</tenthe>

Trong đó <tenthe> là tên thẻ HTML, ví dụ như <p>, <a>, <html> …. Còn nội dung ở giữa <tenthe> và </tenthe> có thể là text, hay là những thẻ HTML con bên trong.

– Các thẻ HTML thông thường bao giờ cũng có thẻ mở (hay còn gọi là thẻ bắt đầu) và thẻ đóng (hay còn gọi là thẻ kết thúc). Ví dụ như <p> và </p>, <html> và </html> ….v.v… Và lưu ý rằng không nhất thiết phải có đầy đủ cả thẻ mở và thẻ đóng nhé, bởi vì có 1 số thẻ đóng vai trò luôn cả thẻ mở và thẻ đóng như sau <hr/> <br/> ….

4/ Trình duyệt web 

Trình duyệt web (web browser) là phần mềm trên máy tính mà các bạn đang sử dụng để xem những trang web hàng ngày, có thể kể đến ở đây như Chrome (trình duyệt web đang được nhiều người xài nhất trên Windows), Firefox, Safari (trình duyệt web trên Iphone, Ipad và MacOS), Opera … Trình duyệt web có nhiệm vụ đọc các đoạn mã HTML và hiển thị ra cho chúng ta xem trên màn hình. Dưới đây là kết quả khi tôi xem đoạn HTML mà tôi đã viết ở bên trên bằng trình duyệt web Chrome

5/ Cấu trúc của 1 trang HTML

Để các bạn mới làm quen HTML dễ hiểu, dưới đây là cấu trúc của 1 trang HTML được cụ thể hóa bằng hình ảnh.

Cài đặt Ruby on Rails trên Ubuntu

Trong bài viết này, tôi sẽ hướng dẫn các bạn cách cài đặt và setup môi trường cho Ruby on Rails trên Ubuntu (trong bài viết này tôi sử dụng Ubuntu 18.10 Cosmic Canimal). Nếu bạn nào chưa có Ubuntu có thể tham khảo tại trang này => http://releases.ubuntu.com/18.10/

1/ Cài đặt Ruby

Đầu tiên bạn cần cài đặt các gói package cần thiết trước khi cài đặt Ruby

Kế đến chúng ta sẽ cài Ruby thông qua rbenv, và tôi chọn cài phiên bản Ruby 2.6.1, các bạn có thể sử dụng phiên bản khác tùy thích bởi vì rbenv có thể hỗ trợ bạn cài nhiều version khác nhau của Ruby

Cuối cùng bạn cần cài đặt Bundler

2/ Cấu hình Git (có thể bỏ qua nếu bạn không cần sử dụng Git)

Bước đầu tiên để cấu hình Git, bạn cần nhập 1 số thông tin cần thiết cho tài khoản Git của mình, vào tạo ra 1 SSH key trên máy của bạn để có thể add vào Github

Bạn copy nội dung của file bên dưới để add key vào tài khoản Github

Sau khi hoàn tất bạn hãy kiểm tra xem việc kết nối tới Github đã hoạt động chưa bằng lệnh sau

Nếu thành công màn hình sẽ xuất hiện thông báo như bên dưới

3/ Cài đặt Rails

Trước khi cài đặt Rails chúng ta cần cài đặt NodeJS (hỗ trợ Coffeescript và minify những file Javascript => vui lòng đọc mục Asset Pipeline trong document của Rails để hiểu rõ hơn)

Kế đến ta sẽ cài đặt Rails, ở đây tôi chọn phiên bản 5.2.2

Nếu bạn đang sử dụng rbenv bạn cần chạy tiếp lệnh sau

Sau cùng bạn có thể kiểm tra mình đã cài đặt thành công Rails chưa bằng cách gõ lệnh sau

4/ Cài đặt MySQL

Nếu bạn sử dụng database MySQL thì bạn có thể tham khảo cách cài đặt MySQL ở bước này bằng cách gõ lệnh sau

Sau khi cài đặt xong và setup mật khẩu cho user root của MySQL bạn có thể cấu hình thông số đó trong file database.yml của Rails

5/ Cài đặt PostgreSQL

Một lựa chọn nữa khi bạn sử dụng database đó là PostgreSQL, nếu bạn đang sử dụng PostgreSQL thì cài đặt nó theo hướng dẫn sau

PostgreSQL không tạo sẵn user cho bạn như MySQL, vậy nên sau khi cài đặt bạn cần setup luôn user cho nó như sau (ở đây user của tôi là chris, bạn sẽ thay bằng user mà bạn chọn)

6/ Tạo 1 project Rails và chạy thử

Sau các bước cài đặt loằng ngoằng phía trên thì bước cuối cùng là tạo project cho Rails và chạy thử

Bạn mở trình duyệt và chạy thử http://localhost:3000 . Nếu màn hình hiện lên màn hình welcome mặc định của Rails nghĩa là bạn đã cài đặt Ruby on Rails thành công!

 

Kỹ thuật trade coin, forex bằng đám mây Ichimoku

Mây Ichimoku là gì?

Mây Ichimoku, hay còn gọi là Ichimoku Cloud, là một chỉ báo kiêm công cụ tích hợp cho hoạt động phân tích kỹ thuật, được giới thiệu vào năm 1968, bởi người sáng lập là một nhà báo người Nhật: Goishi Hosoda.

Mục đích ra đời của mây Ichimoku là đem lại khả năng nhận biết nhanh chóng và thấu hiểu trạng thái xu hướng, sự chuyển động giá, và có tất cả 5 nhân tố của hệ thống này (5 đường trong một biểu đồ) được kết hợp với sự chuyển động giá, với quan điểm đặc tính chu kỳ của các mối liên hệ, với điều kiện chuyển động nhóm của hành vi con người.

Ngày nay, mây Ichimoku được sử dụng rất rộng rãi bởi các nhà đầu tư Nhật Bản bởi nó cho phép kiểm tra sự biến động giá và tăng xác suất thành công, bằng cách xác định xu hướng và tìm kiếm những dấu hiệu tiềm năng sinh lời của các giao dịch trade coin.

Hướng dẫn sử dụng mây Ichimoku

Chỉ báo Ichimoku gồm 5 đường được sử dụng để xác định đường hỗ trợ, kháng cự, quyết định xu hướng và đưa ra các dấu hiệu giao dịch, dưới đây là đặc điểm và cách tính của từng đường:

Tenkan-Sen (Đường chuyển đổi, màu xanh dương): lấy trung bình của các mức cao nhất và thấp nhất trong 7 khoảng thời gian

Kijun-Sen (Đường cơ sở, màu đỏ): lấy trung bình mức cao nhất và thấp nhất trong 22 khoảng thời gian trước đó

Senkou Span A (Đường chính yếu A, giới hạn màu xanh lá cây của đám mây): lấy trung bình của Tenkan-Sen và Kijun-Sen sau đó dịch về phía trước 26
khoảng thời gian, là giới hạn đầu tiên cho mây Ichimoku

Senkou Span B (Đường chính yếu B, giới hạn màu đỏ của đám mây): trung bình cộng của mức cao nhất và thấp nhất trong 52 khoảng thời gian và được dịch về phía trước 26 ngày, cũng là giới hạn thứ hai tạo thành mây Ichimoku

Chikou Span (Đường còn lại, màu xanh lá cây): là đường cuối cùng được tạo ra bằng cách di chuyển đường giá hiện tại về sau 26 khoảng thời gian, còn gọi là đường trễ/đường cuối cùng

Kumo (Đám mây) là nhân tố trung tâm của hệ thống Ichimoku, là vùng hỗ trợ và kháng cự. Được tạo lập bởi các đường chính yếu A và B.

Phương pháp Ichimoku

1. Xác định xu hướng và sự điều chỉnh dựa vào mây Ichimoku

Giá di chuyển trên đám mây, cho thấy xu hướng tăng
Giá di chuyển dưới đám mây, cho thấy xu hướng giảm
Giá di chuyển trong đám mây, cho thấy xu hướng đi ngang
Màu của đám mây thay đổi từ xanh lá cây sang đỏ, cho thấy sự điều chỉnh trong phạm vi của xu hướng tăng
Màu của đám mây thay đổi từ đỏ sang xanh lá, cho thấy sự điều chỉnh trong phạm vi của xu hướng giảm

2. Xác định sự hỗ trợ và mức kháng cự dựa vào mây Ichimoku

Đường chính yếu A của đường đầu tiên hỗ trợ với xu hướng tăng
Đường chính yếu B của đường thứ 2 hỗ trợ với xu hướng tăng
Đường chính yếu A đầu tiên của mức kháng cự với xu hướng giảm
Đường chính yếu B thứ 2 của mức kháng cự với xu hướng giảm

3. Các dấu hiệu mạnh cho việc mua/bán xuất hiện phía trên đám mây Ichimoku

Đường chuyển đổi cắt đường cơ bản từ dưới lên là dấu hiệu để mua
Đường chuyển đổi cắt đường cơ bản từ trên xuống là dấu hiệu để bán

4. Các dấu hiệu yếu cho việc mua/bán xuất hiện bên trong đám mây Ichimoku

Đường chuyển đổi cắt đường cơ bản từ dưới lên là dấu hiệu để mua
Đường chuyển đổi cắt đường cơ bản từ trên xuống là dấu hiệu để bán

Dưới đây là 2 video sưu tầm từ Youtube để các bạn có thể hiểu rõ hơn kỹ thuật trade coin bằng phương pháp Ichimoku, ngoài ra còn có sự kết hợp với kỹ thuật RSI và BB (Bollinger Band)

Thời gian sẽ trôi đi….

Thời gian sẽ trôi đi….

Cứ năm nào cũng vậy, có một số người đợi ngày cuối cùng của tháng chạp mới đi mua hoa, hòng mua với giá rẻ nhất, do áp lực về thời gian của tiểu thương. Và các tiểu thương đã quyết định đập bỏ, dọn lên xe rác chở đi thay vì cho, giảm giá như mọi năm. Điều này đã gây ra nhiều ý kiến trái chiều trong xã hội đang điều chỉnh hành vi từng ngày để sống văn minh hơn.

Có thể bạn thấy rất là chua chát, nhưng quyết định tiêu huỷ hàng hoá là quyết định bình thường của thương nhân. Hàng sở hữu của họ, họ bán hay trữ, bán đắt bán rẻ giá cả bao nhiêu hay tiêu huỷ hàng hoá là quyền của họ, luật pháp không cấm. Đừng bao giờ ngây ngô yêu cầu người ta thay đổi giá cả, sao không bán rẻ từ đầu rồi giờ đổ bỏ.

Chúng ta từng khóc thương nông dân trồng hoa. Nhưng họ thật ra chẳng có gì tội nghiệp vì các thương lái đã trả tiền xong cho họ từ dưới ruộng. Thương lái cũng chẳng tội nghiệp gì vì họ đã lãi những ngày đầu khi bán những chậu hoa đẹp cho người giàu. Người nghèo lúc này nghe giá sẽ dội ngược, bảo là hét trên trời, giận. Nhưng giá đó có người mua, cung gặp cầu. Người giàu, thay vì tốn thời gian đi tận nơi để lựa chậu vừa ý, giờ có người mang lên tận nơi, vận chuyển sỉ nên giá còn rẻ hơn, thuận mua vừa bán, phân khúc hạng sang, người có tiền, kẻ có hàng ngon nên việc bán hàng diễn ra nhanh chóng, vui vẻ. Mọi thứ vận hành trơn tru. Hoa, tranh, nhạc….là những sản phẩm tinh thần, không phải là thiết yếu, người cần thì đã sẵn sàng trích một phần thu nhập để mua rồi. Không được cho tặng miễn phí những sản phẩm văn hoá, vì người nhận miễn phí sẽ khó mà trân trọng. Khi nhu cầu đã hết, người bán nên chở hàng về kho hoặc đổ bỏ. Công ty vệ sinh đã ký hợp đồng dọn dẹp, ngay cả bỏ hết đống hoa đó, họ đã thu tiền và sẽ dọn sạch, không than phiền gì. Mọi thứ nó đã vào guồng, không như mình nghĩ.

Buffet trong các khách sạn 5 sao, toàn tôm hùm, hàu, cá hồi…đến tối, dù còn nguyên nhưng họ cũng đổ bỏ hết, không cho nhân viên vì sẽ tạo thành tâm lý phục vụ không tốt hòng mang về. Cũng không đem cho người nghèo, cơ nhỡ….vì làm ăn, không tốn thời gian phân bổ nhân sự làm việc này, chưa kể là sẽ tạo đám người chầu chực bên ngoài, hay thậm chí nhà nghèo, ăn mấy món sang rồi đau bụng, kiện thưa rồi mình đi giải quyết cũng mệt. Làm chủ phải có tư duy khác. Hàng của họ, tiền của họ, khi đổ bỏ họ còn xót xa hơn cả mình tiếc. Nhưng bỏ là phải bỏ.

Dân làm ăn không có mở miệng là tội nghiệp, thương thế. Mình cứ cảm tính, cảm xúc trong kinh tế thì hậu quả kinh khủng. “Đừng bao giờ giao cơ nghiệp vô tay người cảm tính”, người Do Thái hay người Hoa luôn dặn nhau như vậy khi lựa chọn người quản lý cấp cao.

Khách sạn có phòng có 100 ngàn/đêm nhưng cũng có phòng 100 triệu/đêm, tuỳ họ, có vi phạm pháp luật đâu mà chửi? Xấu đẹp, ngu khôn, hợp lý hay không hợp lý…là do cá nhân mình tự nghĩ. Họ bán vậy đó, công suất phòng chỉ có vài % thôi, nhưng họ không giảm giá, chuyện của người ta. Tour du lịch họ ra giá vậy, mình chửi bán “mắc quá chó nó đi”, nhưng người ta vẫn có khách riêng của người ta, “chó” có tiền đi chơi, còn mình là “người” mà không có. Khách sạn ở Đà Lạt ngày thường 200k/đêm, lễ tết lên 1 triệu/đêm thì cũng bình thường, chẳng có gì chặt chém cả. KS chỉ có 10 phòng mà 100 người cần, thì giá phải tăng tương ứng cho 10 người chấp nhận mức giá cao nhất, nếu không có ai chấp nhận, tự động giá sẽ giảm. Hiệp hội du lịch vui lòng đừng ra công văn yêu cầu khách sạn trên địa bàn cam kết không tăng giá….mà quên là quy luật thị trường. Lúc ế, hiệp hội có ra công văn sẽ bù lỗ cho người ta không? Hãy để thị trường tự do điều tiết. Cứ nói hãy bán giá sao cho vừa túi tiền. Vấn đề là túi của ai? Mình chỉ có thể biết túi của mình thôi, còn của người khác, sao biết mà suy diễn suy đoán rồi kết luận?

Mấy cái túi hàng hiệu ở các trung tâm thương mại có giá mấy chục triệu/cái, mình thấy vắng hoe, ái ngại cảm thông. Họ kinh doanh, được nhờ mất chịu. Họ lỗ, chịu hết nổi sẽ trả mặt bằng. Dân mình đi qua, nói sao không hạ giá xuống 50 ngàn/cái để bán cho dễ, chứ thấy ế tội quá em ơi. Họ treo đó là tính vô chi phí marketing, cho đám đông nhìn thấy thương hiệu, còn rẻ hơn quảng cáo trên tivi. Đám đông sao biết được chuyện đó, nên đứng coi, phán xét và khuyên răn khí thế. Với nhà buôn lớn, họ không bao giờ hạ giá vào giờ chót vì như vậy sẽ khiến cho những người mua trước thấy tiếc nuối, trách móc và có khi lại chờ giảm giá năm sau. Mà đối tượng đó mới là khách hàng thật sự, phải bảo vệ họ. Louis Vuitton (LV) hay Hermes là thương hiệu thời trang không bao giờ sale off, qua mùa lỗi mốt là huỷ.

Đừng bao giờ dạy người giàu tiêu tiền, quản lý tài chính (họ làm ra tiền, dư được tiền tức việc quản lý tài chính của họ đã rất khoa học, hiệu quả), cũng đừng bao giờ kêu gọi các người bán điều chỉnh giá theo ý mình. Rất ngây thơ, cảm tính và buồn cười.

Khủng hoảng thừa 1929-1933, hàng hoá các công ty họ đổ hết xuống biển chứ không có tặng cho ai, dù nhiều nước đang trong nạn đói, bị các nhà đạo đức học lên án là sao không thuê tàu đi tặng mấy nước đang chiến tranh. Làm chủ đau đầu muốn chết vì lỗ, ngồi đó còn thuê tàu cử người đi phân phát hàng cho chỗ đang đánh nhau. Quy luật kinh tế thị trường nó vậy, không thể lấy cảm xúc, tình cảm, hiểu biết nhỏ nhoi của mình ra phán xét được.

Thị trường nó lạnh lùng sòng phẳng. Nếu ai lỗ, thì là bài học cho họ năm sau. Kể cả nông dân trồng chuối, thanh long, tiêu điều, nuôi heo nuôi gà…. Thời đại này thông tin rộng khắp. Tính toán sai, cung vượt cầu, không biết tiếp thị hay chế biến, cứ thụ động phụ thuộc thì khi giá rẻ, đồ đống. Ngược lại. Cầu cao thì lãi nhiều, hưởng. Giải cứu nông sản là chiến dịch người ta chỉ mình cách tiêu thụ, sau đó phải tự biết làm chứ sao đợi người ta thương hại mãi? Không riêng nông nghiệp, cứ ai thụ động thì nghèo, chịu. Ai chủ động thì giàu, hưởng.

Nếu ai có đầu óc khách quan, hiểu quy luật thị trường mới kiếm tiền được. Những bạn cảm tính khó có thể làm ăn hoặc trở thành quản lý cấp cao vì không rạch ròi các quan hệ, nuông các cảm xúc, không tôn trọng khách quan vì nghe theo con tim nhiều quá. Lúc yêu thì thôi là yêu, ghét thì thôi là ghét. Cứ trong đầu ai mà còn cảm xúc ưa rồi không ưa, thích rồi ghét….thì không thể làm ăn được.

Đừng bao giờ kêu gọi ủng hộ công ty nào vì thương, mua hàng là vì nhu cầu, còn vì ủng hộ thì không lâu dài được. Cũng đừng kêu gọi tẩy chay hãng nào đó vì ghét. Lần trước có 1 hãng hàng không, vì “tội” đưa các người mẫu lên đón các cầu thủ U23 yêu thích, mà người mẫu đó do đám đông mặc định là không đẹp, nên không được “xứng” để đụng vào cơ thể thần tượng của họ, thế là nổi cơn cuồng nộ. FB khắp nơi nói sẽ tẩy chay, thề là không bao giờ đi hãng này nữa, trong đó có người bạn thân của ad. Sau đó 1 tháng, mình thấy cậu ấy vẫn ngồi cả đêm search vé giá rẻ, và khi giá vé hãng đó thấp hơn các hãng kia 100,000 đồng, cậu đã quên mất lời thề thốt khi xưa, book vé và bay, post hình lên FB khoe mua được giá hời, cười như địa chủ được mùa.

Đám đông có cảm xúc lên xuống thất thường, ầm ầm lên cơn thịnh nộ rồi quên béng, các nhà kinh tế học gọi là “não cá vàng”. Mình làm quản trị, đừng có lo lắng thái quá. Thời gian sẽ trôi đi.

Time flies.

Cách sử dụng branch trong Git

Trong bài này chúng ta sẽ đi vào ví dụ cụ thể cách sử dụng branch trong Git. Các bạn sẽ học được cách tạo branch, chuyển sang branch khác, merge branch (gộp branch), xóa branch sau khi sử dụng xong, xử lý conflict khi merge giữa các branch.

0/ Chuẩn bị repository
– Đầu tiên chúng ta sẽ khởi tạo 1 repository như sau (trong thư mục laptrinhinfo)

– Tiếp theo chúng ta tạo 1 file test.txt với nội dung như bên dưới

– Kế đến hãy commit những lịch sử thay đổi của file txt bên trên

1/ Tạo branch mới

– Chúng ta tạo 1 branch tên là “feature” bằng dòng lệnh sau

– Sau khi tạo xong chúng ta sẽ kiểm tra lại bằng cách hiển thị ra toàn bộ branch đang có trong repository

– Danh sách các branch đang có sẽ hiện ra, hiện tại bạn đang ở branch master nên sẽ có dấu * phía trước tên branch master

2/ Chuyển branch

– Bây giờ chúng ta sẽ chuyển qua branch feature bằng lệnh sau

*** Chúng ta có thể gộp 2 bước tạo branch mới và chuyển ngay sang branch mới bằng cách sau

– Lúc này các bạn thử thêm nội dung vào file test.txt, ví dụ

– Sau đó hãy commit lên, lúc này những commit của bạn sau khi chuyển sang branch feature chỉ được ghi nhận trong lịch sử của branch feature, branch master hoàn toàn không lưu lại những thay đổi này

3/ Merge branch (gộp branch)

– Bây giờ mục tiêu của chúng ta là merge branch feature vào branch master. Để merge branch, chúng ta cần chuyển sang branch cần merge vào, đó là branch master

– Kế đến ta sẽ merge branch feature vào branch master bằng lệnh sau

– Nếu merge thành công không bị lỗi hay conflict, kết quả sẽ hiện lên màn hình như bên trên. Bây giờ bạn hãy kiểm tra nội dung file test.txt ở branch master, những gì bạn đã chỉnh sửa ở branch feature đã được cập nhật.

4/ Xóa branch

– Sau khi tạo branch mới và làm việc trên branch đó, sau khi đã merge branch đã tạo vào 1 branch khác, nếu bạn không cần sử dụng branch đó nữa thì có thể xóa nó bằng lệnh sau (trong ví dụ này tôi sẽ xóa branch feature)

– Bạn có thể kiểm tra xem branch đã được xóa thành công chưa bằng lệnh hiển thị toàn bộ branch: git branch

5/ Làm việc song song trên nhiều branch và xử lý conflict khi merge branch

– Bây giờ chúng ta sẽ giả định tình huống 2 người trong cùng 1 team làm việc trên 2 branch khác nhau. Ví dụ user A làm việc trên branch feature1, user B làm việc trên branch feature2. Lúc này 2 user sẽ sửa cùng chung 1 file trên 2 branch khác nhau và conflict sẽ xảy ra khi merge 2 branch này vào branch master. Đầu tiên chúng ta sẽ tạo 2 branch feature1 và feature2 sau đó sẽ chuyển qua branch feature1 (đóng vai trò là user A)

– User A lúc này sửa nội dung file test.txt như sau

– Ở đây ta đã thấy user A thêm mới vào nội dung ở dòng 3 đoạn text “User A da them vao 1 dong nay” và chỉnh sửa nội dung ở dòng 1 từ “su dung Git branch” sang “[su dung Git branch]” . Bây giờ chúng ta sẽ lưu thay đổi ở branch feature1 bằng lệnh commit

– Tiếp theo chúng ta chuyển qua branch feature2 (đóng vai trò là user B).

– Lúc này user B sẽ thêm 1 đoạn text mới ở dòng 3 và chỉnh sửa dòng 1, thao tác có vẻ tương tự user A nhưng nội dung thêm mới và chỉnh sửa hoàn toàn khác nhau

– Và user B cũng commit để lưu lại thay đổi của mình ở branch feature2

– Vậy là chúng ta đã thấy user A và user B đã làm việc song song trên 2 branch khác nhau và đã lưu lại những gì họ đã làm tại 2 branch trên. Bây giờ tôi sẽ đóng vai trò 1 user khác (user C) quản lý branch master và hoàn toàn không biết những gì user A và user B đã thay đổi trên branch của họ. Nhiệm vụ của tôi là merge 2 branch trên vào branch master để đồng bộ code lại. Đầu tiên tôi sẽ chuyển sang branch master và merge branch feature1 vào

– Mọi thứ có vẻ ổn không có vấn đề gì sau khi merge branch feature1 vào master, file test.txt đã hiển thị đúng những gì user A đã làm. Bây giờ chúng ta hãy merge branch feature2 vào master

– Lần này thì mọi việc có vẻ không ổn như khi merge lần đầu. Đã có lỗi conflict xảy ra. Bây giờ chúng ta sẽ kiểm tra nội dung file test.txt để xem nó đã bị conflict như thế nào

– Lúc này ta thấy từ đoạn <<<<<<< HEAD cho đến ======= là nội dung file test.txt ở branch master sau khi đã merge branch feature1 vào. Còn đoạn ======= cho đến >>>>>>> feature2 là nội dung file test.txt của user B đã sửa ở feature2 do bị conflict với đoạn trên nên không thể merge vào. Bây giờ tôi (user C) sẽ sửa nội dung file test.txt bằng cách hợp nhất kết quả của user A và user B đã làm

(Lưu ý: cách sửa conflict trên chỉ là ví dụ, trong trường hợp thực tế có thể user A và user B sẽ họp chung lại với nhau để thống nhất kết quả theo 1 cách khác. Cách sửa conflict của tôi ở đây là giữ lại toàn bộ những gì user A và user B đã thêm vào và đã sửa)

– Và khi đã sửa xong conflict, đừng quên commit ở branch master

– Vậy là conflict đã được xử lý xong xuôi. Đương nhiên trên thực tế khi làm việc, conflict thường phức tạp hơn vậy nhiều và có thể xảy ra trên rất nhiều file. Và dĩ nhiên sẽ tốn thời gian ngồi so sánh 2 kết quả để để sửa lại file theo cách tối ưu nhất.