Categories
Học Go

Chương trình đầu tiên của bạn

Theo truyền thống chương trình đầu tiên của bạn viết ở bất cứ ngôn ngữ nào được gọi là chương trình “Hello World” – Một chương trình chỉ đơn giản là xuất ra dòng chữ Hello World ra terminal. Hãy bắt đầu viết chương trình này bằng Go.

Đầu tiên tạo thư mục để lưu các phần mềm. Ví dụ như tạo thư mục như sau: ~/src/golang-book/chapter2. (Với ~ có nghĩa là thư mục của bạn) Từ terminal bạn có thể gõ các lệnh sau:

mkdir src/golang-book
mkdir src/golang-book/chapter2

Mở text editor và gõ theo nội dung sau:

package main 

import "fmt"

// this is a comment

func main() {
    fmt.Println("Hello World")
}

Lưu ý chắc rằng bạn gõ đúng nội dung như Trên và lưu nó với tên main.go trong thư mục mà chúng ta vừa mới tạo. Mở lại terminal và gõ lệnh sau:

cd src/golang-book/chapter2
go run main.go

Bạn sẽ nhìn thấy dòng chữ Hello World hiển thị trên terminal. Lệnh go run sau đó là tên các file (mỗi file cách nhau bởi dấu cách ), sẽ compile các file này thành một file thực thi và lưu nó ở một thư mục tạm, rồi chạy nó. Nếu bạn không thấy dòng chữ Hello World hiển thị thì bạn có thể bạn gõ sai gì đó trong chương trình (hãy kiểm tra lại và gõ cho đúng). Go compiler sẽ gợi ý cho bạn nơi mà bị lỗi. Giống như hầu hết các compiler, Go compiler khá gập khuôn và không chừa một lỗi nào.

Các đọc một chương trình Go

Hãy xem lại chương trình trên một cách chi tiết. Các chương trình Go được đọc từ trên xuống, từ trái qua phải. (giống như đọc một quyển sách). Dòng đầu tiên thế này:

package main

Dòng này được gọi là “khai báo package”. Tất cả chương trình Go đều phải được bắt đầu bởi dòng khai báo package này. Package là cách mà Go sử dụng để tổ chức cấu trúc và tái sử dụng code. Có 2 loại chương trình Go: thực thi (executables) và thư viện (libraries). Chương trình thực thi là loại chương trình chúng ta có thể chạy trực tiếp từ terminal. (Trên Windows nó định dạng là file .exe)Thư viện là một tập hợp code chúng ta đóng gói (package) lại với nhau, vì vậy chúng có thể sử dụng chúng trong một chương trình khác. Chúng ta đi chi tiết sau về thư viện, giờ thì chúng ta chỉ cần đảm bảo rằng chương trình của chúng ta có dòng khai báo package này.

Dòng kết tiếp là dòng trắng. Trong máy tính biểu diển dấu xuống dòng là một (hoặc vài) kí tự đặc biệt. Dấu dòng mới (newlines), dấu cách (space) dấu tab chúng ta gọi chung là khoảng trắng (whitespace) (bởi vì chúng ta không nhìn thấy nó). Go không quan tâm đến các khoảng trắng này. Chúng ta sử dụng chúng chỉ để dễ dàng đọc hơn. Tức là bạn bỏ dòng này thì chương trình vẫn chạy đúng như thường.

Giờ xem tiếp:

import "fmt"

Từ khóa import là các mà chúng ta include code từ một package khác để sử dụng trong chương trình của chúng ta. Package fmt (viết tắt của chữ format) chứa các hàm giúp chúng ta định dạng cho input và output. Dựa vào những gì chúng ta vừa tìm hiểu về các gói, bạn nghĩ các tệp của gói fmt sẽ chứa gì ở đầu chúng?

Lưu ý rằng chữ fmt ở trên được bao bằng đấu ngoặc kép ". Dấu ngoặc kép được dùng để biểu diễn một string (chuỗi kí tự). Trong Go, string được biểu diễn bằng một dãy các kí tự (chữ, số, kí hiệu,…) có độ dài xác định. Chi tiết hơn về string sẽ được mô tả ở chương tiếp theo, bây giờ quan trọng là bạn nhớ được rằng dấu mở " thì phải được có dấu đóng " tương ứng theo sau đó, và bất cứ thứ gì nằm trong cặp ngoặc kép này được là nội dung của string. Quan trọng: nội dung string không bao gồm cặp dấu " này.

Dòng bắt đầu bằng // được xem là “comment”. Go compiler sẽ bỏ qua các comment này. Nó được viết cho bạn và vì bạn (hoặc cho những người đọc source này) [giúp bạn ghi chú lại những gì bạn muốn nhắn nhủ cho người đọc source]. Go hỗ trợ 2 loại comment: loại 1 là comment bắt đầu bằng 2 dấu // cho đến hết dòng, loại 2 là comment bắt đầu bằng /* và kết thúc bằng */ có thể bao gồm nhiều dòng.

Bây giờ chúng ta xem cách khai báo một function:

func main() {
    fmt.Println("Hello World")
}

Functions là một khối trong chương trình Go. Nó có input, output và một chuỗi các bước gọi các câu lệnh được thực hiện theo đúng thứ tự. Tất cả các function được bắt đầu bằng từ khóa func theo sau là tên của function (trường hợp này là main), sau nữa là một danh sách các tham số được bao quanh bở cặp dấu ngoặc đơn ( ), sau nữa là một kiểu dữ liệu trả về (có thể có hoặc không) cuối cùng là thân chương trình được bao bằng cặp ngoặc nhọn { }. Function này không có tham số, không có kết quả trả về, và chỉ có một lệnh. Tên chương trình main là một tên đặc biệt, bởi vì nó là function mà sẽ được gọi khi chương trình thực hiện.

Chúng ta xét đến mảnh cuối cùng của chương trình là dòng:

    fmt.Println("Hello World")

Dòng lệnh này được tạo ra bởi 3 thành phần. Đầu tiên là chúng ta gọi tên function bên trong một package fmt tên là Println (đó là đoạn fmt.PrintlnPrintln là viết tắt của chữ Print Line). Sau đó chúng ta tạo một string mới chứa các kí tự “Hello World” và gọi hàm (tiếng Anh là invoke, call hoặc execute) đó với string vừa được string này là tham số.

Đến đây, chúng ta có khá nhiều thuật ngữ mới, có thể bạn sẽ thấy hơi choáng ngợp. Nên đôi khi đọc to chương trình của bạn ra thành tiếng có thể giúp bạn hiểu hơn. Các “đọc” lại bằng lời chương trình của chúng ta như sau:

Tạo mới một chương trình thực thi được, tham chiếu đến thư viện fmt và chứa một function tên là main. Function này không có tham số, không trả về gì và thực hiện: Truy cập vào hàm Println trong thư viện fmt và gọi hàm này với một tham số – là chuỗi “Hello World”.

Println là hàm thực sự làm việc trong chương trình này của chúng ta. Bạn có thể đọc thêm mô tả về hàm này trong terminal bằng lệnh:

go doc fmt Println

Bạn sẽ thấy được đoạn mô tả sau:

Println formats using the default formats for its operands and writes to standard output. Spaces are always added between operands and a newline is appended. It returns the number of bytes written and any write error encountered.

Dịch:

Println sử dụng định dạng mặc định cho các toán hạn (tham số đầu vào) và ghi nó ra thiết bị xuất chuẩn (ở đây là terminal). Các dấu cách (space) được tự động thêm vào giữa các toán hạn và dấu xuống dòng được thêm vào cuối cùng. Nó trả về số lượng bytes đã ghi ra và các lỗi xảy ra nếu có.

Go là một ngôn ngữ được mô tả tài liệu rất tốt, nhưng ở mô tả này thì có vẻ hơi khó hiểu nếu bạn chưa từng làm quen với ngôn ngữ nào trước đó. Tuy vậy godoc vẫn là một lệnh vô cùng hữu ích và là nơi mà bạn cần tìm khi có câu hỏi nào đó.

Quay trở lại với function này, tài liệu này nói rằng hàm Println sẽ gửi bất cứ cái gì bạn đưa cho ra thiết bị xuất chuẩn – đây là tên của đầu ra là terminal bạn đang làm mở. Đây là hàm giúp cho dòng chữ Hello World được xuất ra màn hình.

Ở chương tiếp theo chúng ta sẽ tìm hiểu xem các Go lưu trữ và trình bày các thứ khác giống như chữ Hello World bằng cách tìm hiểu về các loại dữ liệu.

Các câu hỏi

  • Khoảng trắng là gì?
  • Comment là gì? Hai cách để viết comment là gì?
  • Chương trình của chúng ta đã bắt đầu bằng từ khóa pakage main. Vậy thì bắt đầu của các file trong package fmt bắt đầu bằng gì?
  • Chúng ta đã sử dụng function Println được khai báo trong package fmt. Nếu chúng ta muốn sử dụng function Exit trong package os thì chúng ta cần làm gì?
  • Chỉnh sửa chương trình chúng ta đã viết ở trên thay vì in ra chữ Hello World thì nó sẽ in ra dòng chữ Hello, my name is theo sau là tên của bạn.

Source: http://www.golang-book.com/books/intro/2

Categories
Học Go

Bắt đầu

Lập trình máy tính là một nghệ thuật, thủ công và khoa học của việc viết chương trình xác định cách máy tính hoạt động. Quyển sách này hướng dẫn bạn cách viết chương trình sử dụng một ngôn ngữ lập trình được thiết kế bởi Google tên là Go.

Go là một ngôn ngữ lập trình đa mục đích với nhiều tính năng và cấu trúc rõ ràng. Bởi vì nó có trên nhiều nên tảng, tài liệu cho các thư viện được viết đầy đủ và nó tập trung vào các nguyên tắc phát triển phần mềm. Go là một ngôn ngữ lý tưởng cho ngôn ngữ lập trình đầu tiên của bạn.

Quá trình mà chúng tôi sử dụng để viết phần mềm bằng Go (cũng như hầu hết các ngôn ngữ khác) khá đơn giản như sau:

  • Thu tập yêu cầu
  • Tìm giải pháp
  • Viết code để triển khai giải pháp
  • Compile source code thành file thực thi
  • Chạy và test chương trình để chắc chắn rằng nó hoạt động đúng.

Quy trình này cứ lặp đi lặp lại (có nghĩa là nó được thực hiện nhiều lần) và các bước thường chồng chéo nhau. Nhưng trước khi chúng ta viết chương trình đầu tiên bằng Go chúng ta cần nắm được vài điều kiện tiên quyết như sau.

File và folders

File là một tập hợp các dữ liệu được lưu trữ như một đơn vị dưới một cái tên. Các HĐH hiện đại (như Windows hay MacOS) chứa hàng triệu file chứa nhiều loại thông tin khác nhau – mọi thứ từ tài liệu văn bản đến file chương trình thực thi đến các file đa phương tiện.

Tất cả các file được lưu với cách thức tương tự nhau trên một máy tính: tất cả đều một cái tên, một dung lượng xác định (được đo bằng bytes) và với một kiểu định dạng. Thường thì định dạng file được quy định bởi file extension – đó là một phần của tên file phía sau dấu .. Ví dụ như một file với cái tên hello.txt thì có phần mở rộng là txt được sử dụng để đại diện cho dữ liệu văn bản.

Folder (hay còn được gọi là directory) được sử dụng để nhóm nhiều files lại với nhau. Chúng có thể chứa được folder khách. Trên Windows đường dẫn (path) file và folder (hay còn gọi là location) được biểu diễn bằng dấu \ (backslash), ví dụ: C:\Users\john\example.txtexample.txt là tên file, nó được chứa trong thư mục john, thư mục john lại được chứa trong thư mục Users, Thư mục Users lại được chứa trong ổ đĩa C (là biểu diễn cho ổ đĩa vật lý chính trên Windows). Trên OSX (và hầu hết các HĐH khác) đường dẫn file và folder được biểu diễn bằng dấu / (forward slash). Ví dụ: /Users/john/example.txt. Giống như trên Windows example.txt là tên file, nó được chứa trong thư mục john, và thư mục john lại được chứa trong thư mục Users. Không giống như trên Windows, OSX không có chỉ rõ tên ổ đĩa mà file được lưu.

Windows

Trên Windows file và folder được duyệt bằng phần mêm Windows Explorer (truy cập được bằng cách bấm đúp vào “My Computer” hoặc gõ win+e).

img

OSX

Trên OSX file và folder có thể sử dụng Finder (truy cập bằng cách bấm vào Finder icon – icon gương mặt trên thanh bên dưới màn hình).

img

Terminal

Ngày nay, hầu hết mọi tương tác với máy tính đều thông qua giao diện trực quan (GUIs). Chúng ta sử dụng bàn phím, chuột và màn hình chạm để tương tác với các nút hoặc các loại điều khiển khác nhau hiển thị trên màn hình.

Nhưng không phải lúc nào cũng theo cách đó. Trước khi GUI xuất hiện, chúng ta tương tác với máy tính thông qua terminal – là một giao diện văn bản đơn giản hơn để tương tác với máy tính. Thay vì tương tác với máy tính qua các nút trên màn hình thì chúng ta ra gõ các lệnh và nhận được phản hồi. Chúng ta đối thoại với máy tính.

Mặc dù cso vẻ như thế giới máy tính đã xem terminal như là di tích của khứ, nhưng thực tế thì đối với việc lập trình máy tính, terminal vẫn là giao diện người dùng cơ bản được sử dụng ở hầu hết các ngôn ngữ. Go vẫn không ngoại lệ, và vì thế chúng ta viết một chương trình Go chúng ta cần một sự hiểu viết cơ bản nhất về cách mà terminal hoạt động.

Windows

Trên HĐH Windows termnial (còn được gọi là command line) có thể được mở bằng cách bấm window + r (giữ nút window sau đó ấn nút r), gõ cmd.exe và bấm enter. Bạn sẽ nhìn thấy một cửa sổ đen xuất hiện trông như bên dưới:

img

Mặc định command line bắt đầu ở thư mục home. (Trường hợp của tôi là C:\Users\caleb) Bạn ra lệnh bằng các gõ chúng và bấm enter. Thử gõ lệnh dir, đây là lệnh sẽ hiển thị nội dung của thư mục. Bạn có thể sẽ thấy kết quả như bên dưới:

C:\Users\caleb>dir
Volume in drive C has no label.
Volume Serial Number is B2F5-F125

Theo sau một danh sách các file và thư mục được chứa trong thư mục home của bạn. Bạn có thể thay đổi thư mục bằng lệnh cd. Ví dụ như bạn có thư mục là Desktop. Bạn có thể thấy nội dung của nó bằng cách gõ lệnh cd Desktop và rồi gõ lệnh dir. Để quay trở lại thư mục home của bạn, bạn có thể dùng một thư mục đặc biệt tên là .. (2 dấu chấm cạnh nhau): cd ... Một dấu chấm đại diện cho thư mục hiện tại (được gọi là working folder), vì thế cd . không làm gì cả. Có nhiều lệnh bạn có thể sử dụng, nhưng bao nhiêu đây là đủ để bắt đầu rồi.

OSX

Ở HĐH OSX mở terminal bằng cách vào Finder -> Applications -> Utilities -> Terminal. Bạn sẽ thấy terminal như sau:

img

Mặc định termnial bắt đầu tại thư mục home của bạn. (Trường hợp của tôi là /Users/caleb) Bạn ra lệnh bằng cách gõ chúng và gõ enter. Thử gõ lệnh ls, nó sẽ hiện ra nội dung của thư mục. Bạn sẽ thấy nội dung tương tự như sau:

caleb-min:~ caleb$ ls
Desktop      Downloads      Movies     Pictures
Documents    Library        Music      Public

Đây là các file và folder nằm trong thư mục home (trường hợp của tôi không có file nào). Bạn có thể thay đổi thư mục bằng cách dùng lệnh cd. Ví dụ bạn có thư mục Desktop. Bạn có thể thấy nội dung của nó bằng cách gõ lệnh cd Desktop và rồi gõ lệnh ls. Để quay về thư mục home của bạn bạn có thể sử dụng một thư mục đặc biệt tên .. (2 dấu cách cạnh nhau): cd ... Một kí tự đại diện cho thư mục hiện tại (được gọi là working folder). vì thế cd . không làm gì cả. Có nhiều lệnh bạn có thể sử dụng, nhưng bao nhiêu đây là đủ để bắt đầu rồi.

Text Editors

Công cụ chính của một lập trình viên đó chính là text editor. Text editor tương tự như trình xử lí văn bản (Microsoft Word, Open Office,…) nhưng không giống ở chỗ chúng không có các định dạng văn bản (không in đậm, hay nghiêng,…) thay vào đó chúng xử lí văn bản plain text (văn bản thuần túy). Cả OSX và Windows đều có text editor kèm theo, nhưng chúng bị giới hạn các chức năng, vì vậy tôi gợi ý nên cài 1 cái khác ngon hơn.

Để dễ dàng hơn cho việc cài đặt tại trang chủ của quyển sách http://www.golang-book.com/ có một trình cài đặt, giúp bạn cài đặt cả bộ Go tool và cài đặt biến môi trường, editor đầy đủ.

Windows

Text editor được gợi ý trên Windows là Scite…

img

Text editor có một vùng trắng lớn để bạn có thể nhập nội dung vào. Ở bên trái bạn có thể thấy thanh số dòng. Ở dưới của cửa sổ hiển thị thông tin trạng thái hiển thị thông tin về file và vị trí hiện tại của con trỏ. Hiện tại (theo hình) nó nói rằng chúng ta đang ở dòng 1, cột 1, văn bản đang được chèn bình thường và chúng tôi đang sử dụng các dòng mới theo kiểu windows.

Bạn có thể mở file bằng cách bấm File → Open và duyệt đến file bạn cần. Có thể lưu file bằng cách File → Save or File → Save As.

Khi bạn làm việc trong một trình soạn thảo văn bản, sẽ rất hữu ích khi học các phím tắt. Menu hiện các phím tắt ở phía bên phải. Sau đây là vài phím tắt thông dụng:

  • Ctrl + S – lưu file hiện tại
  • Ctrl + X – cắt văn bản đang được chọn (Xóa bỏ nó và lưu nó vào bộ nhớ đệm clipboard để bạn có thể dán nó sau đó)
  • Ctrl + C – copy văn bản đang được chọn
  • Ctrl + V – dán văn bản trong clipboard ra vị trí con trỏ.
  • Sử dụng các phím mũi tên để di chuyển, Home để về đầu dòng và End để về cuối dòng.
  • Ấn giữ phím shift trong khi sử dụng các phím mũi tên (or Home and End) để chọn văn bản mà không dùng chuột.
  • Ctrl + F – Hiện lên một hộp thoại mà bạn có thể tìm được nội dung của file hiện tại.

OSX

Trên OSX trình cài đặt sẽ cài Text Wrangler:

img

Giống như Scite trên Windows, Text Wrangler có một vùng trắng lớn để bạn nhập văn bản vào. Bạn có thể mở file bằng cách bấm File → Open và duyệt đến file bạn cần. Có thể lưu file bằng cách File → Save or File → Save As. Sau đây là vài phím tắt có ích (Command là phím có kí tự  key):

  • Command + S – lưu file hiện tại
  • Command + X – cắt văn bản đang được chọn (Xóa bỏ nó và lưu nó vào bộ nhớ đệm clipboard để bạn có thể dán nó sau đó)
  • Command + C – copy văn bản đang được chọn
  • Command + V – dán văn bản trong clipboard ra vị trí con trỏ.
  • Sử dụng các phím mũi tên để di chuyển
  • Command + F – Hiện lên một hộp thoại mà bạn có thể tìm được nội dung của file hiện tại.

Go Tools

Go là ngôn ngữ biên dịch, có nghĩa là source code (code mà bạn viết) được dịch ra thành một ngôn ngữ mà máy tính có thể hiểu được. Vì thế trước khi chúng ta viết một chương trình Go, chúng ta cần có Go compiler.

Trình cài đặt sẽ giúp cài đặt hoàn toàn tự động. Chúng ta sử dụng go phiên bản 1. (Muốn xem thêm bạn có thể vào link http://www.golang.org)

Hãy chắc chắn rằng bạn đã cài đặt go thành công. Bạn hãy mở terminal ra và gõ lệnh:

go version

Bạn sẽ thấy nội dung như sau:

go version go1.0.2

Số phiên bản của bjan có thể khác đôi chút. Nếu bạn bị lỗi khi gõ lệnh trên thì bạn có thể thử restart máy tính sau khi cài.

Go tool gồm nhiều command và nhiều sub command. Để xem bạn có thể gõ lệnh sau:

go help

Chúng ta sẽ xem cách sử dụng chúng ở chương tiếp theo.


Ghi chú của người dịch:

  • HĐH ghi tắt của Hệ điều hành
  • OSX là phiên bản trước đây của HĐH macOS, có thể coi OSX hay Mac OS X hay macOS là một (khác phiên bản).
  • Phiên bản Go stable mới nhất tại thời điểm dịch bài là go1.13.
  • … kí hiệu 1 đoạn không quan trọng đã bị bỏ đi.

Source: http://www.golang-book.com/books/intro/1

Mục lục

Categories
Học PHP

Redirect – Chuyển hướng trang bằng PHP

This entry is part 1 of 1 in the series Học PHP qua ví dụ

Trong việc lập trình web bạn không thể thiếu việc chuyển người dùng từ trang này qua trang kia. Ví dụ như sau khi login thì chuyển người dùng về trang chủ. Hoặc vào các nội dung cần xác thực thì phải chuyển người dùng về trang login.

1. Chuyển trang bằng HTTP header

PHP hỗ trợ chuyển trang bằng cách trả về HTTP header Location theo đặc tả của giao thức HTTP. Khi trình duyệt nhận được response từ server có HTTP header “Location” thì trình duyệt sẽ tự động chuyển hướng đến url được chỉ định.

HTTP header:

Location: <new_URL>

Cách thực hiện đơn giản như sau.

<?php 
// các xử lí
// Tiến hành chuyển hướng
header("Location: /index.php");
exit;

// có thể các còn các xử lí khác không được thực hiện.
?>

Trường hợp bạn muốn chuyển hướng ra trang ngoài không phải trang hiện tại của bạn. Thì bạn hãy để đầy đủ đường dẫn URL.

<?php 
header("Location: https://google.com");
exit;

Các lỗi thường gặp khi sử dụng chuyển hướng bằng header

Lỗi 1: Warning: Cannot modify header information

Khi thực hiện chuyển trang bằng cách này. Tức là bạn đang thay đổi các giá trị HTTP header mặc định. Rất có thể bạn sẽ bị thông báo lỗi khi sau: Warning: Cannot modify header information. Để khác phục được lỗi này. Bạn cần hiểu bản chất vấn được được giải thích như sau. Nếu bạn đang gấp Bỏ qua cách chuyển hướng này và sử dụng các cách chuyển hướng ở bên dưới.

Giải thích:

Theo đặc tả một gói tin HTTP có cấu trúc như sau:

HEADER
<cách 2 dòng>
BODY

Mỗi dấu xuống dòng ở trên là cặp kí tự \r\n;

Ví dụ khi bạn xuất dòng chữ “Hello world”. File hello.php

<?php
echo "Hello world";

Thì cấu trúc của gói tin trả về như sau:

HTTP/1.1 200 OK
Server: nginx/1.17.6
Content-Type: text/html
Connection: keep-alive

Hello world

Dòng header khác này, có thể có hoặc không có, hoặc có nhiều hơn các thông tin – chỉ thị khác. Vì vậy trong các ví dụ sau mình giảm bớt các dòng header không liên quan tới nội dung bài viết.

Server: nginx/1.17.6
Content-Type: text/html
Connection: keep-alive

Nếu chúng ta đặt lệnh header phía trước lệnh echo sẽ thành ra như thế này:

<?php
header("Location: /index.php");
echo "Hello world";

Thì cấu trúc của gói tin trả về như sau:

HTTP/1.1 200 OK
Location: /index.php

Hello world

Vậy nếu ta đổi ngược 2 lệnh trên. Thì kết quả sẽ được như sau:

<?php
echo "Hello world";
header("Location: /index.php");

Chúng ta sẽ bị lỗi Warning: Cannot modify header information; Nhưng trong trường hợp tắt warning, website vẫn chạy được.

Trong các trường hợp thực tế, ta hay để code php bên trong đoạn mở như sau:

<html>
<?php
// xử lí ...
header("Location: /index.php");
?>

Như vậy ta cũng bị lỗi Warning: Cannot modify header information;

Chúng ta phải đảm bảo các lệnh header được gọi trước tất cả các output khác.

Lỗi 2: ERR_TOO_MANY_REDIRECTS

Một lỗi thứ 2 thường bị khi sử dụng cách này là lỗi ERR_TOO_MANY_REDIRECTS thường thấy mã lỗi này trên Chrome. Ở các trình duyệt khác, hình thức hiện lỗi có thể khác. Nguyên nhân lỗi là bị điều hướng liên tục.

Ví dụ như trình duyệt đang ở trang index.php, nhưng lại có lệnh header("Location: /index.php");. Vậy là khi ta vào trang index.php lại bị đá về index.php, liên tục như vậy. Đến một số lần quy định, Chrome sẽ không thèm chuyển hướng theo chỉ thị Location header nữa. Mà báo ra lỗi này.

Để giải quyết, chúng ta phải check điều kiện chuyển trang. Nếu đang ở trang hiện tại, thì không được chuyển nữa. Ví dụ như URL hiện tại của chúng ta là http://localhost/index.php thì ta phải kiểm tra thông tin $_SERVER['REQUEST_URI'] cho ta được đoạn sau domain /index.php.

<?php
// file index.php
if ($_SERVER['REQUEST_URI'] != '/index.php') {
	header('Location: /index.php');
}

Nhưng các bạn tự lưu ý là, đối với index.php là 1 trường hợp khá đặc biệt. Vì chúng ta vào url http://localhost/ thì thông thường cũng là truy cập vào file index.php. Tức là tương tự như vào http://localhost/index.php. Lúc này, $_SERVER['REQUEST_URI'] cho chúng ta giá trị là /. Vậy ta sửa lại như sau:

<?php
// file index.php
if ($_SERVER['REQUEST_URI'] != '/index.php'
     && $_SERVER['REQUEST_URI'] != '/' ) {
	header('Location: /index.php');
}

Nếu bạn đang cảm thấy mơ hồ hoặc thấy khó khăn, thì vui lòng đọc tiếp các cách khác bên dưới.

2. Chuyển trang bằng HTML

Ngoài cách điều hướng bằng php, chúng ta có thể dùng html tag. như sau:

<meta http-equiv="refresh" content="0;url=index.php">

Với số 0 là số giây sẽ delay. Sau đó sẽ truyển trang về url được khai báo. Như ta muốn chuyển về google.com sau 5s thì ta sẽ ghi như sau:

<meta http-equiv="refresh" content="5;url=https://google.com">

Với số 0 là chuyển ngay lập tức.

Lưu ý:

Sử dụng cách này các bạn cũng không thể tránh khỏi lỗi chuyển trang liên tục như trên. Khi chuyển trang không chuyển về trang hiện tại.

3. Chuyển trang bằng JavaScript

Chúng ta biết rằng JS được dùng để sử lí giao diện là trùm luôn. Vì vậy chuyển trang đối với JS chỉ là chuyện nhỏ. Cách thực hiện như sau:

<script>
	location.href = '/index.php';
</script>

Lưu ý:

Tương tự, sử dụng cách này các bạn cũng không thể tránh khỏi lỗi chuyển trang liên tục như trên. Khi chuyển trang không chuyển về trang hiện tại.

Tổng hợp

Chuyển trang bằng PHP:

<?php 
header("Location: /index.php");

Chuyển trang bằng HTML:

<meta http-equiv="refresh" content="0;url=index.php">

html Chuyển trang bằng JavaScript:

<script>
	location.href = '/index.php';
</script>

Mọi thắc mắc các bạn vui lòng để lại comment.

Bài viết gốc được đăng tại https://hocmoingay.top/

Người viết Hoàng Phúc

Categories
Bình luận

Sách tải free tràn lan trên mạng có nên đọc hay không?

Hiện nay, để muốn đọc một quyển sách, khi mà bạn đã có một cái máy đọc sách. Việc thường làm của mọi người là lên mạng tìm bản sách đã được chia sẻ miễn phí trên mạng. Có khi tìm được, có khi không. Nhưng phần lớn là tìm được, vì cộng đồng mạng rất thích “chia sẻ” những gì mình đang có (không phải đó là đặc tính làm lên mạng internet hay sao?!).

Vậy thì hôm nay mình xin bàn một ít về những mặt lợi và hại của việc tìm và tải sách free trên mạng. Đứng từ góc nhìn của người đọc, tạm thời chưa xét đến các vấn đề về quyền tác giả và nhà xuất bản.

Trước tiên mình xin nói rõ là mình chưa từng viết sách, càng chưa từng xuất bản cuốn sách nào. Vì vậy mình không nằm trong nhóm những tác giả đang bị ảnh hưởng lợi ích từ việc người đọc tải sách free.

Thêm vào đó mình là một trong những người từng đọc sách tải chùa khá nhiều. Với niềm “đam mê” đó mình còn bỏ thời gian công sức ra tổng hợp lại, up lên google drive chia sẻ trong các hội nhóm — bạn bè. Hơn thế nữa, mình còn lập ra nhiều trang web. Trong đó có tiền thân của trang blog này (đã không còn được sử dụng) là trang “hocmoingay.top” mà hiện nay đã không còn được sử dụng. Và một trang khác là ebooks4.pw hiện vẫn đang chạy. Nhưng mình đang có kế hoạch sớm bỏ đi trang này. Vì những lý do mình bàn luận sau đây cũng như là nó cũng đang ngốn 1 mớ phí duy trì hàng tháng.

Giờ ta xét về mặt lợi của việc đọc sách chùa:

  • Miễn phí
  • Đọc được nội dung sách

?! Còn không ta ?!

Vậy mặt hại là gì:

  • Chất lượng sách thấp hoặc rất thấp: Sách không được định dạng rõ ràng, sai chính tả, câu cú, trùng lặp — thiếu đoạn,… làm giảm trải nghiệm khi đọc.
  • Tốn thời gian tìm kiếm, lúc tìm được lúc không.
  • Tốn thời gian đọc, đọc 1 lúc mới thấy sách này dịch tào lao. Bỏ, tìm sách khác. Thật tệ khi gặp phải một quyển sách “google translate”.
  • Nhiều khi không tải được sách mà tải được… virus.
  • Vi phạm bản quyền.

Không biết mình có liệt kê thiếu phần nào không? Nếu có gì cần bổ sung các bạn vui lòng comment bổ sung giúp mình.

Như vậy, đọc phải một cuốn sách có chất lượng kém, nội dung không chính xác, câu cú lủng củn, sai sót nhiều. Nó làm cho mình tưởng rằng mình đã đọc qua quyển sách đó. Đã “cảm thụ” được những tinh tuý trong sách. Nhưng thật ra mình đang đọc 1 “phiên bản lỗi”. Làm sai khác đi những nhận định về quyển sách.

Nhưng thật khó để biết được những quyển nào là chất lượng như từ xuất bản, cuốn nào có chất lượng kém.

Vậy chốt hạ là có nên đọc sách tải chùa trên mạng hay không? Mỗi người sẽ có lựa chọn cho riêng mình. Nhưng với cá nhân mình thì mình quyết định KHÔNG.

Vì bạn không đủ thời gian để thử. Ở ngoài kia có rất nhiều sách cần đọc. Đọc xong mà mình còn cần phải hồi hộp, xem xét coi quyển sách này nội dung có đúng với nguyên bản không thì thật là lãng phí “bộ xử lí” lãng phí năng lượng thời gian.

Bạn nên để thời gian, “bộ xử lí” và năng lượng đó để dành cho việc phân tích, ghi nhớ và bình phẩm về nội dung quyển sách”thật” thì hay hơn.

Xin cảm ơn các bạn đã đọc hết bài viết!

Categories
Cách sử dụng Kindle

Cài đặt từ điển cho máy đọc sách kindle

Bước 1: Các bạn tải từ điển mà mình muốn trước khi tiến hành cài đặt nó trên Kindle bằng các đường link dưới đây.
https://drive.google.com/drive/folders/15wXOWO3t1eg01RETwI2mN75DiFL1WYoD?usp=sharing

Ngoài các từ điển free được phát triển bởi cộng đồng, bạn có thể mua từ để với chất lượng tốt hơn. Một trong số đó là: https://dictionaries.io/kindle/install

Bước 2: Tiến hành cài đặt từ điển trên máy đọc sách Kindle

  • Copy vào máy đọc sách Kindle bằng cách gắn cáp USB giữa máy Kindle.
  • Chép từ điển vào Kindle thư mục Dictonaries.
  • Tiến hành kích hoạt từ điển. Mỗi đời firmware sẽ khác nhau đôi chút, nhưng nhìn chung có mấy cách như sau:
    • Kindle 3: Home -> Menu -> Settings -> Menu -> Change Primary Dictionary
    • Kindle 4: Home -> Menu -> Settings -> Dictionaries
    • Kindle Touch: Home -> Menu -> Settings -> Dictionaries
    • Kindle DXG: Home -> Menu -> Settings -> Menu -> Change Primary Dictionary
    • Kindle Paperwhite: Home -> Menu -> Settings -> Device Options -> Language and Dictionaries -> Dictionaries

=> Rồi chọn từ điển mà bạn mới chép vào.

  • Hoàn thành.

Để kiểm tra lại các bạn chép 1 ebook tiếng anh vào máy và giữ chọn 1 từ kindle sẽ hiện kết quả tra từ điển.
Chúc các bạn thành công! có thắc mắc vui lòng comment bên dưới.

Categories
Top list

Top những website học trực tuyến tại Việt Nam

Các bạn thường thấy bạn bè chia sẻ danh sách các website cung cấp khoá học trực tuyến miễn phí hoặc có phí nổi tiếng. Nhưng rất tiếc chúng toàn là những chương trình bằng ngôn ngữ tiếng Anh. Nếu bạn chưa giỏi tiếng Anh, vậy thì sao?!

Không sao cả! Bạn có thể từ giờ cố gắng học tiếng Anh ở mức độ nghe và đọc được là tạm đủ để học các khác này. Dần dần vốn tiếng Anh của bạn sẽ tăng lên. Nhưng, nếu hiện tại bạn vẫn còn đang lay hoay chật vật với tiếng Anh thì sao? Không lẽ không học được online nữa. Vậy là chưa đúng. Không học tiếng Anh được thì mình học tiếng Việt. Hiện tại ở Việt Nam cũng đã có nhiều nền tảng cho phép chúng ta trao dồi được nhiều kỹ năng mà không cần đến lớp.

Dưới đây là danh sách các trang nền tảng website giúp bạn học các khoá học online bằng tiếng Việt với rất nhiều chủ đề.

KYNA – Học online cùng chuyên gia!

KYNA.VN được quản lý bởi Công ty Cổ phần Dream Viet Education, một trong những đơn vị đi đầu trong công nghệ đào tạo trực tuyến các kỹ năng tại Việt Nam từ năm 2011. Bắt đầu từ một đơn vị tạo khóa học kỹ năng dưới dạng trực tuyến, từ 5/2013, Kyna.vn bắt đầu xây dựng hệ thống website Kyna.vn, hợp tác với các giảng viên uy tín, có chuyên môn cao để tạo nên những khóa học chất lượng, chi phí thấp cho học viên. Sau 2 năm hoạt động, Kyna.vn hiện có hơn 100,000 học viên theo học.

Điểm khác biệt mà Kyna.vn mang lại cho học viên là hệ thống học tập chuyên nghiệp, có chức năng thảo luận, làm bài tập, tiểu luận tốt nghiệp để học viên tự theo dõi, đánh giá tiến trình học tập của mình.
Phong cách biên tập video đúng chuẩn video đào tạo giúp học viên dễ tiếp thu và nắm bắt ý chính của bài học hơn.
Sau khóa học, học viên được cấp chứng nhận tốt nghiệp.

VTC Academy – Biến đam mê thành sự nghiệp

Học viên Công nghệ và Nội dung số VTC – VTC Academy được thành lập từ năm 2010. Đến nay, qua 5 năm xây dựng và phát triển, VTC Academy tự hào trở thành đơn vị top 1 lĩnh vực “Đào tạo về Công nghệ và Nội dung số”.

Unica – Học từ chuyên gia

Unica là một hệ thống đào tạo trực tuyến, cổng kết nối Chuyên gia với Học viên, được vận hành bởi iNET Academy – Học viện Internet Marketing với hơn 100.000 học viên.

Monkey Junior – Học tiếng anh cho trẻ em 0-10 tuổi

Khoa học chứng minh 0-10 tuổi là giai đoạn vàng phát triển ngôn ngữ. Monkey Junior phát triển chương trình học ngôn ngữ TOÀN DIỆN NHẤT từ trước đến nay áp dụng phương pháp Giáo dục sớm, giúp trẻ phát triển vượt bậc năng lực ngôn ngữ trong giai đoạn này.

Với 3 sản phẩm chính lần này, Early Start mong muốn đẩy mạnh hơn nữa việc cải thiện tiếng anh của trẻ qua các gói/ thẻ học online.

  • Monkey Junior: Chương trình học tiếng anh trẻ em
  • Monkey Math: Toán tiếng anh chuẩn Mỹ  
  • Monkey Stories: chương trình truyện tiếng anh dành cho trẻ 

Edu mall – Siêu thị khoá học

Edumall là “siêu thị” các khóa học trực tuyến ngắn hạn lớn nhất Đông Nam Á với hàng nghìn khóa học thuộc mọi lĩnh vực, đội ngũ giảng viên chuyên nghiệp, giàu kinh nghiệm và mạng lưới học viên rộng khắp cả nước. Edumall – nơi bạn học mọi kĩ năng làm chủ tương lai.

Phương pháp sư phạm LIPE

Đã áp dụng thành công tại Đại học Harvard và Stanford. Xem bài giảng video(Lecture) – Hỏi-đáp với thầy và bạn học (Interaction) – Thực hành (Practice) – Đánh giá kết quả (Evaluation)

Trải nghiệm học tập không giới hạn

Bạn có thể học tại nhà, tại văn phòng, quán cà phê hoặc bất cứ nơi đâu, bất cứ khi nào miễn là thiết bị của bạn ( máy tính bàn, laptop, smartphone,…) có kết nối internet

Mua một lần học trọn đời

Chỉ mất chi phí một lần để mua khoá học là bạn có thể sở hữu khoá học mãi mãi ngay cả khi khoá học được cập nhật nội dung mới. Khoá học không giới hạn thời gian học tập.

Dễ học, dễ ứng dụng

Các khoá học được biểu diễn dưới dạng video, do giảng viên biên soạn từ trước và đưa lên hệ thống website edumall.vn.

Tổng thời gian trung bình mỗi khoá học kéo dài 3-4 tiếng, được chia thành nhiều bài giảng nhỏ có thời lượng từ 3-5 phút để học viên dễ tiếp nhận và vận dụng thực tiễn

Categories
Cách sử dụng Kindle

Cách khởi động lại máy đọc sách kindle

Một cách hiệu quả để khắc phục các tình trạng phổ biến sau:

  • Kindle bị đứng – đơ – giật => khởi động lại ?
  • Kindle không đồng bộ sách, hoặc bị lỗi trong quá trình tải sách => khởi động lại ?

Khởi động lại sẽ giúp cho máy đọc sách kindle làm mới lại hệ thống và hoạt động “đi vào nề nếp” như cũ.

Điều đầu tiên chúng ta cần quan tâm là vị trí nút nguồn. Nếu chưa biết nút nguồn ở đâu 😀 bạn hãy xem như hình. Vị trí nút nguồn máy kindle:


Các cách khởi động lại máy đọc sách kindle:

  • Cách 1: Bấm nút nguồn và giữ trong 7 giây. Hoặc cho đến khi xuất hiện hộp thoại “Power” Chọn nút “Restart”
  • Cách 2: Trường hợp máy của bạn bị đơ, không tác động gì được. Bấm 7 giây cũng không ăn thua thì bạn hãy bấm giữ liên tục nút nguồn trong 40s. Màn hình sẽ chớp 1 cái và tiếp tục tiến trình khởi động lại.

Màn hình khởi động lại của kindle:

Chúc các bạn thành công! ?

Categories
Cách sử dụng Kindle

Cách chuyển đổi định dạng ebook để gửi vào máy đọc sách kindle

Chào các bạn!
Bài viết hôm nay hướng dẫn các bạn chuyển đổi định dạng sách gửi vào máy đọc sách.

Tuỳ vào từng loại máy đọc sách mà bạn chọn định dạng sách khác nhau. Ví dụ như kobo, bibox thì chọn file epub. Còn máy kindle thì chọn file mobi, awz3,.. Trong bài viết này tập trung chủ yếu vào máy đọc sách kindle, nhưng khi bạn đã biết các chuyển đổi định dạng thì bạn có thể áp dụng cách tương tự để chuyển đổi qua lại giữa các định dạng ebook. Nếu bạn chưa rõ các định dạng hỗ trợ của máy đọc sách kindle vui lòng xem thêm các định dạng file ebook mà máy đọc sách kindle hỗ trợ.

1. Chuyển định dạng online.

Cách này dễ dàng nhất nhất vì không cần cài thêm phần mềm gì cả, giao diện các trang web hỗ trợ chuyển định dạng bằng tiếng anh – việt đều có với giao diện trực quan dễ sử dụng.

Bạn có thể tìm trên google cụm từ: convert “định dạng nguồn” to “định dạng đích”
ví dụ: convert epub to mobi

Google sẽ hiển thị rất nhiều trang, nhưng ở đây mình giới thiệu trang web sau:

https://convertio.co/vn/epub-mobi/

Trang web này với giao diện rất đơn giản và dễ sử dụng.

Bạn chọn file epub cần chuyển, website sẽ chuyển sang màn hình tiếp theo:

Bấm vào nút “Đổi” để tiếp tục, chờ 1 tí, xong hệ thống sẽ hiện nút “Tải về”. Bấm vào nút này trang web sẽ cho bạn tải về file đã chuyển đổi xong.

2. Sử dụng phần mềm chuyên nghiệp calibre.

Với cách này không những bạn có thể chuyển định dạng, mà calibre còn hỗ trợ bạn quản lí tổ chức các ebook của như 1 thư viện cá nhân. Nhưng trong nội dung bài viết này chỉ xoay quanh việc chuyển định dạng ebook bằng calibre. Còn giới thiệu chi tiết về calibre bạn có thể xem thêm tại loạt bài giới thiệu và các sử dụng chương trình quản lí ebook calibre.

3. Gửi email

Ngoài 2 cách trên khi bạn send sách pdf qua kindle bằng email với từ khoá trê n subject là “convert” thì document service cửa kindle sẽ tự động chuyển đổi file pdf thành định dạng file có thể có thể đọc resize chữ trên máy kindle.

Categories
Cách sử dụng Kindle

Giới thiệu công cụ gỡ bỏ mật khẩu pdf – online không cần cài đặt

Xin chào,
Nếu bạn đang tìm chương trình gỡ mật khẩu online, thì không cần tìm nữa!. Bạn chỉ cần vào website :
Sau đó chỉ cần làm theo 4 bước:
  1. Chọn file pdf bị khoá mật khẩu
  2. Nhập mật khẩu vào ô mật khẩu
  3. Submit.
  4. Ngồi chờ … hệ thống gỡ bỏ mật khẩu giúp bạn!
Chờ 1 tí xíu, sau khi hệ thống xử lí xong sẽ tự động cho download file pdf đã gỡ mật khẩu. Chúc các bạn thành công!
Categories
Cách sử dụng Kindle

Cách gửi trang web đang đọc vào máy đọc sách kindle

Xin chào các bạn!
Ở các bài trước mình đã giới thiệu đến các bạn các cách để gửi các ebook vào máy đọc sách kindle.

Nhưng nhu cầu ĐỌC của chúng ta không dừng lại ở đó. Bạn đang lướt web bổng gặp một bài viết rất hay mà lại khá dài. Có thể bạn không có thời gian đọc ngay lúc đó, hoặc bạn thấy đọc trên máy đọc sách SƯỚNG hơn nhiều. Vậy nên hôm nay mình giới thiệu đến các bạn cách để gửi một trang web dài vào máy kindle.

Tất cả chúng ta cần là một extension chính hãng của Amazon. Extension trên trình duyệt chrome tại đường link sau: https://chrome.google.com/webstore/detail/send-to-kindle-for-google/cgdjpilhipecahhcilnafpblkieebhea 

 

Bạn vào link trên, ở trang web mở ra bạn bấm nút Add to Chrome.

Chrome hỏi bạn có muốn cài không, bạn chọn “Add extension”

 

Khi bạn vào 1 trang web nào đó muốn gửi qua máy đọc sách kindle bạn chọn biểu tưởng Kindle ở trên góc phải. Rồi chọn “Send to kindle”

Vậy là đã xong! Có thắc mắc hoặc cần giúp đỡ vui lòng gửi vào bình luận bên dưới 😉