Miễn 100% phí hồ sơ du học Nhật + Tặng 5~9 triệu/bạn
Showing posts with label lập trình. Show all posts
Showing posts with label lập trình. Show all posts

Sunday, September 30, 2018

Lập trình copy & paste

Tôi có lập trình ví dụ trang từ điển tra kanji nhưng tôi không viết mã mấy, bởi vì tôi ... không biết viết mã. Tôi chỉ copy & paste cho nhanh. Bởi vì, nếu trực tiếp ngồi viết từ đầu thì cũng khá mất thời gian.

Cái hay của thời đại này là bạn lập trình mà không cần viết code mấy. Tất nhiên, bạn phải biết là mình cần gì, sau đó tìm kiếm để tìm ra đoạn mã phù hợp và sửa đi cho đúng. Như thế không đòi hỏi bạn phải giỏi về ngôn ngữ lập trình.

Tôi viết bằng PHP (đang học cả Ruby) nhưng tôi không biết gì về PHP mà chỉ tra thôi. Trên đấy sẽ có đoạn mã ví dụ tôi copy về rồi thay tên biến số cho phù hợp. Thấy vẫn chạy ầm ầm!

Như vậy, lý tưởng lập trình quan trọng hơn kỹ năng lập trình. Nếu bạn có lý tưởng rõ ràng thì bạn sẽ "học lỏm" được thôi.

"Tôi lập trình nhưng tôi không viết code"
- Ngạn ngữ nhân loại cổ -

Vì sao copy & paste?

Saturday, February 10, 2018

[Lập trình] Very first AJAX

Tôi không biết gì về AJAX, trừ Ajax Amsterdam, cho tới khi đọc được sách thánh hiền tại đây.
AJAX is a developer's dream, because you can:
  • Read data from a web server - after the page has loaded
  • Update a web page without reloading the page
  • Send data to a web server - in the background

AJAX is not a programming language.
AJAX is a technique for accessing web servers from a web page.
AJAX stands for Asynchronous JavaScript And XML.
Điều quan trọng là tư duy lập trình: Kỹ thuật này làm được gì và sử dụng thế nào.

Vì thế tôi copy y chang và chỉ sửa lại code thôi. Nếu bạn tư duy logic (hợp lý) thì việc học tập trở nên dễ dàng hơn nhiều: Kiến thức, công cụ là để phục vụ con người chứ không phải ngược lại. (Vì cũng có những người sùng bái kiến thức kiểu hàn lâm, kinh viện.)

Trên localhost (dùng localhost cho nhanh đỡ phải tải lên server) trong thư mục "mark" tôi tạo hai file ajax.html và sha1_ajax.php (tên gì cũng OK).

File ajax.html sẽ dùng kỹ thuật AJAX để lấy nội dung của file sha1_ajax.php để hiển thị mà không phải tải lại trang. File này là để tạo mã hóa sha1 của string mà bạn nhập trong textbox ở ajax.html.

Chóng cả mặt! Look like this:


Ví dụ bạn nhập 'hello' vào textbox, rồi nhấn nút 'Encrypt' thì AJAX (JavaScript) sẽ lấy nội dung chuỗi SHA1 sinh ra bởi sha1.ajax.php và hiển thị mà không tải lại cả trang web.

Ghi chú: Khi chưa nhấn nút thì sẽ thế này:


Nếu dùng AJAX lập trình công cụ học tiếng Nhật thì sẽ khá COOL nhỉ!

Nội dung các file trong bài:

Thursday, February 8, 2018

[Lập trình] Vì sao phải mã hóa password?

Gọi là "hash"  hay "hashing". Bạn không nên lưu trữ password người dùng ở dạng nguyên vì nếu bị tin tặc đột nhập thì họ sẽ thấy ngay được mật khẩu người dùng. Bạn nào định du học ngành IT tại Nhật để vừa biết tiếng Nhật vừa biết IT để làm kỹ sư cầu nối (BrSE = bridge system engineer), dịch giả IT (IT communicator) hay quản lý dự án IT (IT project manager, PM) thì hãy chịu khó mày mò nhé. Quan trọng là ứng dụng được và hiểu nguyên lý.
>>Làm thế nào để học lập trình >>Trang lập trình

Why should I hash passwords supplied by users of my application?Password hashing is one of the most basic security considerations that must be made when designing any application that accepts passwords from users. Without hashing, any passwords that are stored in your application's database can be stolen if the database is compromised, and then immediately used to compromise not only your application, but also the accounts of your users on other services, if they do not use unique passwords.
KB: http://php.net/manual/en/faq.passwords.php

Hash dùng các hàm mã hóa (encrypt) nhanh như SHAR1() hay MD5() không phù hợp cho password vì dễ bị tấn công "brute force" (nói nôm na là thử mọi khả năng).

Xem ở KB (knowledge base) trên.

Tham khảo: PHP
sha1() - Calculate the sha1 hash of a string
sha1_file() - Calculate the sha1 hash of a file
crc32() - Calculates the crc32 polynomial of a string
md5() - Calculate the md5 hash of a string
hash() - Generate a hash value (message digest)
crypt() - One-way string hashing
password_hash() - Creates a password hash

Để tránh vấn đề này thì sẽ dùng "salt" (muối), là thứ được rắc thêm vào cho có thêm hương vị.

Mã hóa password trong PHP - thực hành

Dùng hàm password_hash.

Sunday, February 4, 2018

Nhật ký làm trang Login page

Phạm trù: Lập trình (programming)

Đại nghĩa của hôm nay là gì?
今日の大義はなんでしょう。

Lại nói về lập trình: Tôi chắc chắn chẳng biết gì về lập trình cả! Tôi chỉ lợi dụng trí tuệ nhân tạo Google để học tập thôi. Điều quan trọng vẫn là TƯ DUY LẬP TRÌNH và LÝ TƯỞNG LẬP TRÌNH.

Bạn học đại học là để có khả năng tư duy và khả năng học tập. Tôi có khả năng này thông qua việc du học Nhật Bản.

Chém gió: Lập trình ngày nay gần như là bắt buộc trong mọi công việc, nếu không hiệu suất sẽ rất thấp và không cạnh tranh được với máy móc nữa. Các bạn cần bắt đầu học lập trình sớm.
Tôi dự đoán sắp tới môn lập trình sẽ là môn bắt buộc trong các trường học VN. Bạn cũng có thể mở trường tư dạy lập trình và xây dựng sự nghiệp được đấy.

Lý tưởng lập trình: Vì sao cần trang Login Page?

Để tạo màn hình quản lý (CMS = content management system) nhằm quản lý nội dung mà chỉ riêng bạn truy cập được. Chắc chắn bạn không hề muốn "bàn tay lông lá" nào đó can thiệp vào hệ thống của bạn. Người dùng trang web thì chỉ nên xem kết quả sau cùng thôi, vì system của bạn đâu phải chế độ dân chủ?

Trang Login Page nhìn kiểu này:

Nếu Login Name hoặc Password sai sẽ bị báo lỗi

Công cụ  và cách làm trang Login Page vối PHP

Thursday, January 18, 2018

Nội dung buổi học làm web


Đầu tiên chế một file index.html ví dụ trong thư mục /dic trên localhost của bạn:
<html lang="ja">
<head>
<meta charset="UTF-8" />
<title>Yurica Dictionary</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
    <body>
        <div class="main">
            <div class="wrapper" style="text-align:center;">
                <img src="img/logo.png" alt="logo"><br /><br />
                <form action="look.php">
                  <input type="text" name="mylook" size="50"><br><br>
                  <input type="submit" value="Look Up">
                </form>
                <br>
                <br><span style="font-family:arial;">Phương Mai Từ Điển</span> 芳梅辞典 ★ ユリカ辞書 Yurica Jisho. Beta Version
            </div>
        </div>
    </body>
</html>

 Nội dung file style.css chỉ để căn chỉnh cho đẹp:
html, body {
    height: 100%;
    font-family: "Arial", Courier, Serif, Meiryo, メイリオ, MS Mincho, MS 明朝;
}
.main {
    height: 100%;
    width: 100%;
    display: table;
}
.wrapper {
    display: table-cell;
    height: 100%;
    vertical-align: middle;
}
.searchbody {
    margin-left: 150px;
}
Hoặc bạn có thể định nghĩa đoạn trên trong thẻ <style></style> ngay trong file HTML.

Lập trình từ điển

Saturday, January 6, 2018

Nhật ký làm web bằng Wordpress 2018

Vì sao Wordpress?

Giả sử bạn đang đi làm công ty nhưng muốn khởi nghiệp vào cuối tuần, hoặc bạn đang thất nghiệp muốn khởi nghiệp trong tuần, hoặc bạn là một người nội trợ chuyên nghiệp muốn thay đổi thế giới bằng tư tưởng vv. Việc bạn cần làm đầu tiên là có trang web.

Ngày nay, các bà nội trợ cũng có thể trở thành triệu phú, tỉ phú nếu có mặt hàng có thể làm ở nhà và bán ra thế giới, chỉ cần một trang web bán hàng thôi. Nhưng tôi cá là bạn không biết code, hoặc cũng chẳng muốn code. Ai cũng thế cả!

Tôi còn chẳng biết làm trang web như thế nào. Nên Wordpress là phương pháp phổ biến nhất hiện này, có rất nhiều cá nhân, công ty dùng Wordpress để làm web.

Wordpress là một dạng giải pháp (solution) để làm web cho nhanh, chỉ cần cài Wordpress (WP) và cài theme bạn muốn vào là có ngay trang web. Sau đó bạn có thể thay đổi giao diện, thêm chức năng vv vào cho thành trang riêng của bạn. WP có sẵn màn hình quản lý để tạo page, đăng bài vv.

Nếu bạn không cần thêm chức năng, tương tác cơ sở dữ liệu vv hãy dùng Blogger.
Nếu bạn không có hosting riêng mà muốn host miễn phí, hãy tạo WP online với host miễn phí tại wordpress.com.

Trong bài này ghi lại nhật ký làm Wordpress tự host tức là tải và cài trên host của bạn, có thể là local host, tức là máy tính của bạn cũng được.
>>Cài server và PHP engine
>>Làm sao để truy cập "localhost" của bạn từ Internet?

Bắt đầu Wordpress

Thursday, January 4, 2018

Học lập trình VBA trong Excel và Office

Tôi có biết gì về VBA (Visual Basic for Applications) không? Không.
Tôi có lập trình được VBA không? Có. Vì có thể tra trên mạng và tự học. Nếu tư tuy tốt về lập trình thì bạn có thể lập trình bất kỳ thứ gì với bất kỳ ngôn ngữ nào. Tôi cũng tạo khá nhiều tool để phục vụ công việc.

Chứng chỉ chuyên gia Microsoft Office

Excel và Office là công cụ hoàn hảo cho công việc văn phòng

Và bạn nên học lập trình VBA cho Excel và Office. Khi học lập trình thì chúng ta quan tâm là có thể làm được gì với ngôn ngữ đó. Lập trình VBA giúp bạn xử lý nhiều thứ như ký tự, số liệu, văn bản vv. Ví dụ khi bạn cần thay một cụm từ trong hàng trăm file Word cùng lúc chẳng hạn.

VBA không hỗ trợ ký tự tiếng Việt nhưng bạn có thể chuyển đổi từ mã Unicode bằng hàm ChrW, ví dụ:
à = ChrW(107)
Ví dụ = "V" & ChrW(237) & " d" & ChrW(7909)
Dấu nháy kép = Chr(34)

Lưu ý là trong sheet của Excel thì dấu nháy kép là hàm CHAR(34) nhé. Giữa VBA và Excel hơi khác nhau tên hàm số.

Nếu bạn đi du học ví dụ khóa học IT tại Nhật, bạn nên lấy chứng chỉ MOS = Microsoft Office Specialist (chuyên gia MS Office). Thường thì chương trình học sẽ hỗ trợ bạn lấy được chứng chỉ này.

Nếu học tốt về Office là bạn có thể làm hầu hết công việc văn phòng với hiệu quả rất cao và có thể sống phấn khích mỗi ngày.

Đây là tutorial để học VBA:
http://www.excel-easy.com/vba.html

Mở VBA trong Excel

Ấn Alt + F11 hay trên máy xách tay là Alt + Fn + F11. Để nhập hàm thì chọn Insert >> Standard Module...

Hàm số sẽ định nghĩa bằng Function hoặc Sub, khác nhau là Function cho ra kết quả vào một ô, còn Sub là chỉ chạy thôi.
Ví dụ Function myResult khi viết xong ở một ô bạn có thể nhập "=myResult(B2)" chẳng hạn.
Hàm myResult sẽ lấy trị số ở ô B2 làm tham số và trả lại kết quả vào ô mà bạn nhập.

Cách DEBUG (sửa lỗi) VBA

Tương tự như hàm Alert trong JavaScript, chúng ta sẽ dùng hàm MsgBox:
MsgBox "Debug is most important in programming"
MsgBox "Entered value is " & Range("A1").Value

Tất nhiên trong VBA bạn không thể viết MsgBox "Tôi sửa lỗi" được, vì nó sẽ hiện ra cửa sổ thông báo là "T?i s?a l?i" vì VBA không hỗ trợ ký tự tiếng Việt.

Muốn hiện ra đúng thì phải dùng chuyển đổi từ mã Unicode của ký tự tương ứng:
MsgBox "T" & ChrW(244) & "i S" & ChrW(7917) & "a L" & ChrW(7895) & "i"

Còn đây là hàm tôi viết để thay dấu nháy kép trong một ô Excel bất kỳ bằng CHAR(34) (mã ký tự dấu nháy kép). Vì sao phải làm thế? Vì trong Excel muốn in ra dấu nháy kép trong công thức, bạn phải dùng CHAR(34), nếu không Excel sẽ hiểu dấu nháy kép là bắt đầu của chuỗi văn bản.

Ví dụ ="Hello "&A1 sẽ cho ra Hello [nội dung ô A1]. Bạn không thể gõ dấu nháy kép được. Giả sử ô A1 là Mark thì kết quả trong ô nhập công thức là: Hello Mark.
Muốn nhập thành Hello "Mark"?

Đây là công thức: = "Hello "&CHAR(34)&A1&CHAR(34).

Hàm số VBA trong Excel chuyển đổi dấu nháy kép:
Function HtmlString(Text As String) As String
  Dim CharCode, CharString, i As Long
  HtmlString = Text
  CharCode = Array(ChrW(34))
  CharString = Array(Chr(34)&"&CHAR(34)&"&Chr(34))
  For i = 0 To UBound(CharCode)
    HtmlString = Replace(HtmlString, CharCode(i), CharString(i))
  Next i
  HtmlString = Chr(34) & HtmlString & Chr(34)
End Function
Have fun!
Mark

Sunday, December 31, 2017

Làm thế nào để học lập trình (PROGRAMMING), nhất là khi bạn là nữ?

Lập trình nghe có vẻ rất khó và thường được mặc định là dành riêng cho các bạn nam. Sự thật là, không hẳn như thế, bất cứ ai, từ trẻ sơ sinh tới cụ già, đều có thể lập trình. Tôi lập trình bất kể tuổi tác, chẳng qua hồi nhỏ không lập trình là do thời đấy chưa có máy tính thôi.

Trên thế giới nói chung, nghề lập trình viên được mặc định là của nam giới. Chuyện đó thật hoang đường, vì bất kỳ ai cũng có thể lập trình nếu học tập một cách đúng đắn.

Nhân tiện, tôi nói luôn là: Số người lập trình giỏi rất ít. Sở dĩ nam giới hay lập trình vì tính họ rất chán thì đúng hơn là vì họ giỏi. Tất nhiên, đa phần lập trình viên xuất sắc là nam giới, vì thường ít bạn nữ theo học ngành này.

Không có khác biệt về đầu óc hay khả năng tư duy logic giữa nam và nữ. Sở dĩ các bạn nữ ít chọn ngành IT vì có ấn tượng là ngành này ít giao tiếp. Nhưng điều này cũng không đúng, vì nếu làm IT communicator hay kỹ sư cầu nối (BrSE) thì cần giao tiếp rất nhiều mà. Hơn nữa, nếu thành thạo IT và tư vấn được, bạn còn có thể làm nghề bán hàng (sales) và có thể giao tiếp cả ngày.

Thứ tự ngôn ngữ (言語) sắp xếp theo thứ tự số tuyển dụng ở Nhật (GeekJob / 2015)

Trở thành lập trình viên (programmer, coder) mà không cần ... lập trình

Friday, December 29, 2017

Học lập trình C Language

Với các bạn có chí hướng học ngành công nghệ thông tin, hoặc muốn trở thành kỹ sư cầu nối, hoặc làm công việc IT communicator thì nên học thành thạo một ngôn ngữ lập trình có cấu trúc. Tốt nhất là ngôn ngữ C. Rất nhiều ngôn ngữ bậc cao hơn dựa trên nền tảng ngôn ngữ này. Ngôn ngữ C về cơ bản không phải là lập trình web mà đơn giản là viết chương trình của bạn để chạy trên máy tính và đưa ra kết quả ra (màn hình, file vv). Bạn có thể dùng C lập trình ứng dụng Windows, hay Mac OS vv. Tất nhiên là để tạo ứng dụng giao diện người dùng thì dùng Visual C++ vv nhưng phần lập trình là C hay C++.

Lập trình có cấu trúc

Ví dụ tính giai thừa của n = n * (n-1) * (n-2) * ... * 1. Không đơn giản chút nào vì bạn phải nói cho máy hiểu được. Số phép nhân là (n - 1) cũng là số thay đổi theo biến số n nữa. Bạn không tính cho n cụ thể nào mà viết chương trình tính chung, nhập bất kỳ n vào cũng tính ra được. Bạn không thể đơn giản làm phép nhân (n - 1) lần vì n là biến số chưa biết mà ^^

Đây là hàm tính giai thừa dùng vòng lặp FOR:
long factorial(int n)
{
    long result = 1;
    for (int i=2; i<=n; i++) result *= i;
    return factorial;
}

Vòng lặp này chạy n - 1 lần, với biến số i đầu tiên là 2, kiểm tra điều kiện i <=n, và sau một lần chạy lại tăng i thêm 1 (i++).

result *= i tức là result (mới) = result (cũ) * i.

Đây chính là ngôn ngữ của máy tính và cách diễn đạt công thức gia thừa bằng ngôn ngữ máy tính.

Đặc biệt, bạn có thể viết HÀM ĐỆ QUY: Một hàm gọi lại ... chính nó.

Hàm đệ quy tính giai thừa trong C:
long factorial(int n)
{
    if (n<=1) return 1;
    else return n*factorial(n-1);
}

Làm thế nào học ngôn ngữ C?

Bạn cần cài C Compiler vào máy >>Khát vọng lập trình
Hoặc: Installing a C++ Compiler on Your Own PC
>>https://www.cs.odu.edu/~zeil/cs250PreTest/latest/Public/installingACompiler/
*C Compiler là chương trình biên dịch chương trình viết bằng C (text) ra file ngôn ngữ máy chạy được (exe).

Nếu bạn không muốn cài C Compiler thì có thể học và mô phỏng tại:
http://www.learn-c.org/

Học C trên mạng: >>Khát vọng lập trình

Tóm lại là hãy học lập trình và thuật toán với C nhé. Bài này chỉ nêu ra MỤC TIÊU để bạn theo đuổi thôi, không phải dạy gì lập trình ở đây. Học C tôi nghĩ là tầm 1 tháng là có thể xong được đấy, vì cũng khá dễ hiểu mà. Nếu bạn muốn trở thành kỹ sư cầu nối thì quan trọng là phải đọc được hiểu mã nguồn chứ lập trình được hay không thì chưa bàn tới.
Mark

Saturday, December 16, 2017

Lập trình và thuật toán: Lập trình lịch nghỉ lễ Việt Nhật

Tôi yêu lập trình. Chẳng có gì tuyệt hơn lập trình trong cuộc đời và phương châm là:

Bạn có thể lập trình mọi thứ, kể cả cuộc đời!
- Mark -

Nhưng lập trình để làm quái gì, và bản thân "lập trình" có ý nghĩa gì? Lập trình có nghĩa là bạn biến một loạt thao tác thành một chương trình (program) nên việc lập trình gọi là programming, tiếng Nhật gọi là プログラミング đọc là pừ-rô-gừ-ra-min-gự hay đại loại thế. Nếu đọc "programming" họ lại chẳng hiểu. Để lập trình bạn thường dùng ngôn ngữ lập trình gọi là programming language ví dụ Java, C, Ruby, Visual Basic vv. Lập trình hơi khác với "coding", coding chỉ là viết mã (code) tức là viết mã nguồn (source) chương trình bằng ngôn ngữ lập trình nào đó.

Còn lập trình nói chung thì liên quan tới cái gọi là THUẬT TOÁN (algorithm, アルゴリズム), nói nôm na là phương thức giải quyết để đưa ra lời giải đúng, đôi khi gọi là "giải thuật" (cách giải).

Giải thích đơn giản về lập trình và thuật toán

Ví dụ "tit for tat": Ăn miếng trả miếng. Có ai chơi bạn bạn chơi lại liền.
Hoặc "tit for 2 tat": Ăn hai miếng trả một miếng. Có ai chơi bạn hai lần, bạn chơi lại một lần.
Hoặc "2 tit for 1 tat": Ăn một miếng trả hai miếng.
"Tiên hạ thủ vi cường": Đánh phủ đầu.

Mục đích là để lập trình khiến mọi người TÔN TRỌNG bạn. Còn các chiến lược trên là thuật toán. Bạn có thể áp dụng nhiều thuật toán khác nhau với nhiều người khác nhau.

Lập trình lịch nghỉ lễ Việt Nhật

Kết quả là như thế này:
Vì sao phải lập trình mà không làm thành bảng luôn cho nhanh? Vì như thế mỗi năm bạn phải làm một bản mới. Nếu chỉ làm một lần và chỉ cần thay năm vào nó tự tạo ra lịch (calendar) thì tuyệt nhỉ? Đây gọi là LẬP TRÌNH. Bạn sẽ chỉ làm một lần rồi cho chạy chương trình nhiều lần.

Ví dụ bạn cần tính công thức toán, bạn chỉ lập trình ra rồi lần sau nhập đầu vào (input) là sẽ tự động có kết quả đầu ra (output), ví dụ JLPT Score Calculation Tool 2018.

Vậy lập trình như thế nào?

Trước hết là chúng ta xác định LÝ TƯỞNG về lịch nghỉ lễ: Chỉ cần nhập ngày đầu năm và năm đó (ví dụ 2018) là chương trình tự động tính ra ngày cả năm. Tháng 1 thì dễ rồi:

Ngày sau = Ngày trước + 1

Vấn đề là ngày 1 tháng 2 sẽ bắt đầu vào thứ mấy? Chúng ta phải tính được VỀ MẶT TOÁN HỌC, chứ không phải về mặt thị giác. Ví dụ ngày 1 tháng 1 bắt đầu là thứ Hai, thì ngày 31/1 là thứ Tư, do đó, ngày 1 tháng 2 là thứ Năm. Nghe có vẻ dễ hiểu nhưng khi vào lập trình thì không dễ như thế, vì chúng ta phải viết toán học.

Thế này nhé, cứ sau 7 ngày hết 1 tuần là lại về thứ cũ, tháng 1 có 31 ngày nên dư ra 3 ngày, nên sẽ là thứ cũ + 3. Ví dụ ngày 1 tháng 1 là thứ Hai, thì ngày 1 tháng 2 sẽ thêm 3 là thứ Năm.

Nhưng chúng ta sẽ không chắc ngày 1/1 có rơi vào thứ 2 không, nên chúng ta sẽ lấy biến số là Ngày của  chủ nhật tuần đầu tiên để tính, vì ngày này chắc chắn tồn tại nhỉ? Nhỡ đâu ngày 1 rơi đúng chủ nhật thì từ thứ hai tới thứ bảy sẽ trống.

Thứ của ngày 1 = (7 - Ngày của chủ nhật MOD 7 + 1) MOD 7

Bạn phải dùng toán học mà tính ra công thức này. X MOD Y là số dư của X khi chia cho Y, ví dụ 4 MOD 7 = 4, 10 MOD 7 = 3, đôi khi viết là X % Y.

Ví dụ, ngày 1 rơi vào thứ Tư thì chủ nhật là ngày 5. Nên:

Thứ của ngày 1 = (7 - 5 MOD 7 + 1) MOD 7 = 3 MOD 7 = 3, ngày thứ 3 trong tuần, tức là thứ Tư vì thứ Hai = ngày thứ 1, thứ Ba = ngày thứ 2, vv.

Do đó, chúng ta tính được Thứ của ngày 1 tháng 1. Giờ là thứ của ngày 1 tháng 2:

Thứ của ngày 1 tháng 2 = (Thứ của ngày 1 tháng 1 + 1 + 3) MOD 7

+1 là vì thứ tiếp theo thì phải thêm 1, còn +3 là vì tháng 1 dư 3 ngày (31 - 28 = 3).

Giờ chúng ta sẽ tìm THUẬT TOÁN để điền vào tuần đầu tiên của tháng 2 (tức là có thể có ngày trống, ngày nào mà ngày 1 rơi đúng thứ đó mới là "1", ngày tiếp theo là "2"):

Ở ô Thứ Hai: IF Thứ của ngày 1 tháng 2 = 1 THEN Điền "1" ELSE Để trống
Ở ô Thứ Ba: IF Thứ của ngày 1 tháng 2 = 2 THEN Điền "1" ELSE Để trống

Tuy nhiên, nếu nhỡ ngày thứ Hai là ngày 1 thì thứ Ba do không phải ngày 1 sẽ bị để trống? Do đó, chúng ta phải sửa lại:

Ở ô Thứ Ba:

IF Thứ Hai không trống THEN Ngày thứ Ba = Ngày thứ Hai + 1
ELSE IF Thứ của ngày 1 tháng 2 = 2 THEN Điền "1" ELSE Để trống

Ngoài ra, tháng 2 bạn cũng phải tính số ngày vì nếu NĂM MOD 4 = 0 (năm chia hết cho 4) thì số ngày sẽ là 29, nên sẽ dư 1 ngày đó. Mỗi tháng tùy số ngày dư mà sẽ ảnh hưởng tới thứ của ngày 1 của tháng sau nhỉ?

Vậy làm sao để bạn điền cho hết ngày một tháng? Thuật toán là:

NẾU ngày hôm trước không trống VÀ ngày hôm trước < ngày tối đa THÌ ngày hôm sau = ngày hôm trước + 1 NẾU KHÔNG để trống

Đơn giản vậy thôi.

Sau khi lập trình xong thì bạn tha hồ làm lịch bất kỳ năm nào. Chỉ cần nhập năm vào là sẽ tự động ra lịch.

Nên nhớ là bạn có thể lập trình tự động mọi thứ trong cuộc đời, từ học tập, công việc, luyến ái, sự nghiệp, sở thích, tất tần tật.
Tôi thích lập trình và sẽ còn tiếp tục lập trình đều đều trong tương lai.

Ngay cả tập thể dục tôi cũng lập trình luôn cho chắc. Tôi sắp thành robot nhưng cũng sắp tới thời đại robot thống trị rồi nhỉ? ^^
Good day!
Mark

Bài tập thuật toán lập trình: Hãy tính ngày 1 tháng 1 kể từ năm 2018 rơi vào thứ mấy trong tuần.
+Xem đáp án

Saturday, October 7, 2017

Công cụ tính lý tưởng về sức khỏe và tuổi thọ

Phần nối tiếp của Lý tưởng về chỉ số vòng eo chuẩn và chỉ số sức khỏe. Tôi làm công cụ này để tính cho tiện, vì ngồi tính tay cũng mệt mà. Càng lười sống càng lâu, miễn là bạn FIT (cân đối). Tôi vẫn phải nhắc lại là: FIT ĐỂ TÔN TRỌNG VÀ ĐƯỢC TÔN TRỌNG.

Bạn có thể thảm bại trong cuộc đời, nhưng bạn FIT, hơn nữa có RÂU ĐẸP thì chẳng ai không tôn trọng bạn cả. Bạn có thể thoải mái dùng bạo ngôn và bạo lực nữa, mà thế thì cũng không thất bại lắm nhỉ!

Yếu tố quan trọng trong sức khỏe và tuổi thọ

Sunday, September 18, 2016

Ngôn ngữ lập trình

Ngôn ngữ lập trình (programming language) là gì?

Các máy tính không hiểu được văn bản, hay ngôn ngữ tự nhiên của con người mà chỉ hiểu một thứ: Ngôn ngữ máy (machine language hay machine code) gồm mã nhị phân 1 và 0.

"Không biết lập trình phí nửa cuộc đời."
- Ngạn ngữ nhân loại mới -

Khi bạn lập trình bằng ngôn ngữ Ruby chẳng hạn, thì đó chỉ là văn bản (text) và sẽ không chạy được. Để chạy được thì bạn phải dùng chương trình biên dịch (gọi là compiler) để dịch ra ngôn ngữ máy (dạng nhị phân) mà máy tính hiểu được, tham khảo sơ đồ dưới đây.

Để hiểu chính xác thì bạn sẽ phải học môn học gọi là Kiến trúc máy tính (Computer architecture).


Ví dụ khi bạn lập trình bằng ngôn ngữ Ruby và lưu thành myprogram.rb chẳng hạn thì đây chỉ là file văn bản. Bạn cần dùng Compiler (tích hợp trong phần mềm Ruby mà bạn tải và cài) để biên dịch thành file nhị phân có thể chạy được (thường là file EXE ví dụ myprogram.exe).

Ngôn ngữ lập trình cũng tiến hóa theo thời gian và ngày càng gần ngôn ngữ tự nhiên của con người hơn. Càng giống ngôn ngữ tự nhiên thì học lập trình càng dễ nhưng lại càng xa rời bản chất thật sự của máy tính.

Ngôn ngữ Asembly

Đây là ngôn ngữ gần ngôn ngữ máy nhất và đòi hỏi bạn phải hiểu rõ cấu trúc máy tính. Bạn có thể thao tác trực tiếp trên bộ nhớ.
Ví dụ lập trình ngôn ngữ Asembly sẽ như thế này:

MOV AL, 1h        ; Load AL with immediate value 1
MOV CL, 2h        ; Load CL with immediate value 2
MOV DL, 3h        ; Load DL with immediate value 3
MOV EAX, [EBX]  ; Move the 4 bytes in memory at the address contained in EBX into EAX
MOV [ESI+EAX], CL ; Move the contents of CL into the byte at address ESI+EAX
Vì thế, ngôn ngữ này chỉ rành cho chuyên gia cực kỳ am hiểu cấu trúc máy tính và rất khó học.

Ngôn ngữ BASIC

Wednesday, August 24, 2016

Khóa học lập trình ngôn ngữ Ruby tại Nhật Bản

Học nghề chuyên môn lập trình ngôn ngữ Ruby tại Nhật Bản [Senmon]
POINT Lương lập trình viên IT tại Nhật (3x tuổi) 60 ~ 100 triệu/tháng

Vì sao học ngôn ngữ lập trình Ruby?

Ngôn ngữ tự nhiên, dễ học, “hướng đối tượng”, thân thiện với lập trình viên
Có nhiều ngôn ngữ lập trình mà hiện nay Java được coi là dẫn đầu bên cạnh ngôn ngữ phổ biến kahcs như .NET, C, Visual Basic, C#, PHP, Python, Perl, v.v…
Trong số các ngôn ngữ lập trình thì Ruby là ngôn ngữ vì người Nhật, của người Nhật và do người Nhật. Ruby là ngôn ngữ rất dễ học, dễ lập trình, gần với ngôn ngữ tự nhiên và là một ngôn ngữ lập trình hướng đối tượng (Oject Oriented Programming Language). Ngôn ngữ lập trình hướng đối tượng là gì thì tôi sẽ nói ở bài khác. Ruby là một trong các ngôn ngữ lập trình được khắp thế giới yêu thích và say mê.

Quiz: Lập trình hướng đối tượng là gì? Vì sao?

Ngôn ngữ lập trình Ruby.

Ngoài ra, vì Ruby được viết bởi nhà sáng chế người Nhật (Yukihiro “Matz” Matsumoto) nên ngoài mang đậm phong cách Nhật Bản thì chắc chắn xử lý ký tự tiếng Nhật rất tốt. Ngôn ngữ này được coi là rất thân thiện với lập trình viên và ngay cả các bạn không quá giỏi về IT và lập trình cũng lập trình được (khác với Java hay C++ cần bạn phải thực sự hiểu sâu về cấu trúc máy tính).

Để lập trình web bằng Ruby thì bạn cần cài web application framework (framework là một thư viện các lớp đã được xây dựng hoàn chỉnh, bộ khung để xây dựng các ứng dụng). Vì thế, lập trình web bằng Ruby được gọi chính thức là Ruby on Rails nói nôm na là “hồng ngọc trên đường ray”. Tạm thời bạn hãy nhớ tên này và nên cài vào máy và mày mò thử. Tài liệu về Ruby cũng rất nhiều nhất là nếu bạn giỏi tiếng Nhật. Ruby là lấy theo tên đá quý Ruby (hồng ngọc).

Ví dụ thế này: Khi in dòng chữ “Xin chào Saroma” trong PHP thì sẽ là:
echo “Xin chào Saroma”;
Trong Ruby là:
puts “Xin chào Saroma”

Tiêu chí của người sáng lập Ruby là lập trình vui vẻ, câu khẩu hiệu là A Programmer’s Best Friend (Người bạn tri kỷ của lập trình viên). Bạn có thể thực hiện phép toán thế này ngay cả với chuỗi văn bản:
# Ruby hiểu ý của bạn
# Bạn có thể làm toán
# trên toàn bộ chuỗi Array
thành_phố  = [ "Tokyo",
               "Nagoya",
               "Kyoto",
               "Osaka" ]
đã_thăm = ["Tokyo", "Nagoya"]

puts "Tôi phải " +
     "ghé thăm " +
     "các thành phố:",
     thành_phố - đã_thăm

Học nghề chuyên môn về lập trình ngôn ngữ Ruby ở Nhật

Nội dung chính khóa học lập trình Ruby: Thông qua việc học tập ngôn ngữ Ruby để phát triển năng lực thực tiễn về IT, thông qua thực hành phát triển hệ thống v.v. để tích lũy kinh nghiệm làm việc về IT.
Mục đích học tập: Tại khóa học này, bạn học không chỉ khả năng ứng dụng cao độ cần thiết đối với kỹ sư (lập trình viên), phương pháp sử dụng kỹ thuật IT mới nhất mà còn học năng lực giao tiếp cần thiết cho người đi làm và được đào tạo nhân lực có khả năng tác chiến ngay lập tức trong ngành IT.

㊎㊎㊎㊎㊎
Học bổng 200,000 yên, 300,000 yen, 500,000 yen (40 triệu, 60 triệu, 100 triệu)/năm
Nếu thành tích ưu tú và tiếng Nhật tốt ⇒Chiến lược tiếng Nhật

Để tìm hiểu chi tiết khóa học Ruby hãy đăng ký tư vấn.

Nội dung chương trình học lập trình Ruby