Postgres

Mở đầu

Bài viết này là bài note của khóa học PostgreSql. Mình biết một chút về SQL, từng dùng Mysql, Sql Server, Oracle, tuy nhiên mình vẫn xem một kháo PostgreSQL để xem nó có gì.

PostgreSQL

PostgreSql Important Features - Các thuộc tính quan trọng Postgre

SQL: 2011 Standard ACID compliant Support Indexes Views, Triggers, Procedures, Functions MultiVersion Concurrency Control (MVCC) SQL: 2008 Datatypes Native Programming Interface: C/C__, Java, Net, Perl, Python, Ryby, Tcl, ODBC

Limit - Giới hạn

Maximum Database Size: Unlimited Table: 32TB Row: 1.6TB Field 1G Row per table: Unlimited Columns per table 250-1600 depending on column types Indexes per table: Unlimited

Kết thúc

Scrapy

Hollywood Principle: Dont call us, we’ll call you

Mở đầu

Các lệnh

scrapy bench scrapy version scrapy view

Scrapy shell

How scrapy work

Scrapy selector Xpath: for xml, html document Css Selector: Selector HTML element Chúng ta cũng có thể sử dụng Regular Expression với selectors

Kết thúc

Module 1 Get started Scrapy Websites Using Scrapy(đọc là s c ríp pi) Scrapy là một framework cho việc crawling websites Cho phép lấy data theo một định dạng có cấu trúc Scrapy Shell giúp việc trích xuất dữ liệu test nhanh chóng Selector cho phép bạn chỉ định Xpath và Css từ những thông tin lấy được Scraping Websites - Scrapy shell Xpath và Css selector Spider - Spider, Items, Item Loaders, Item Pipelines Built-in services - Logging, email notifications - Debugging using telnet console - Broad crawls for parallel scraping - Auto throttling crawls Crawlers on the scrapy cloud - Deploying a Scrapy project on scrapinghub.com - Scraping on the cloud using Portia Scrapy được tạo phục vuj cho web scraping nhưng bây giờ được dùng cho web crawling. Scrapy là application framework not library Scraping vs crawling Library vs framework Lợi ích scrapy Asynchronous call back: speed, Parallelism, Fault tolerance Granular control: Download delay between request, Limit on Concurrent connnection, Auto throttling extension (website chặn )

Hành trình học GIS

Mở đầu

Chào các bạn, sau một kỳ nghỉ dài thì mình lại phỏng vấn và đi làm. Công ty hiện tại của mình làm về bản đồ, một lĩnh vực mà mình chẳng biết gì. Nên chắc chắn phải biết về bản đồ, GIS, … Chúng ta sẽ cùng học và

GIS mở đầu

Kết thúc

Hướng đối tượng trong java

Mở đầu

Chuẩn bị phỏng vấn, ôn lại một chút về hướng đối tượng

Hướng đối tượng

class định nghĩa cách tạo ra các object. Package định danh cho một tập hợp các class và interface có liên quan Kết thừa: cách để sử dụng lại tài nguyên của class, thể hiện extends implements, tăng tính sử dụng lại tài nguyên Trừu tượng: che dấu cài đặt chi tiết của phương thức đối với user, sử dụng abstract class, interface, tăng tính mở rộng của hệ thống, Đóng gói: che dấu thông tin, che dấu giữ liệu, không thể truy cập trực tiếp mà thông qua get/set, tăng tính bảo mật Đa hình: Một tên có nhiều hình dạng, thể hiện override và overload, trùng tên, tăng tính khả chuyển

Kết thúc

Database

Mở đầu

Mình học lập trình đã được mấy năm và gần bằng ấy thời gian làm việc với database. Làm việc ở đây là viết các câu lệnh tạo bảng, thêm, xóa, sửa, viết các câu query, nâng cao hơn tí là viết function, proceduce, trigger là cùng. Nếu ai đó hỏi mình những thứ cơ bản như chuẩn 1, chuẩn 2, chuẩn 3 là gì, hay những thứ nâng cao hơn như thiết kế database theo chiều dọc, ngang, hay về hiệu suất như đánh index hoặc những công nghệ mới như nosql (key - value, document, column family, graph) thì mình không biết phải trả lời thế nào. Vì mình là junior dev chưa va vấp đến vấn đề lớn, phải thiết kế sao cho hợp lý. Và nếu bạn cũng đang như mình, nghĩa là có một vài câu ở trên chưa trả lời được thì có lẽ là nên đọc bài viết này. Chúng ta sẽ cùng tổng hợp lại từ các bài viết, các cuốn sách. Thông tin trên internet thì hỗn loạn, lại theo ý hiểu chủ quan của mình có thể sẽ làm sai lệch. Mong các bạn góp ý.

Chuẩn hóa cơ sở dữ liệu

Chuẩn hóa cơ sở dữ liệu để tránh dữ thừa dữ liệu và các lỗi khi thao tác thêm, sửa, xóa. Hồi thầy mình có nói việc chuẩn hóa làm tăng thời gian truy vấn vì việc join các bảng là tốn thời gian. Thầy có đưa ví dụ về cơ sở dữ liệu truy vấn điểm thi khi các thầy làm dữ liệu chuẩn hóa lượng truy vấn lớn (nhiều học sinh xem điểm) rất chậm, cuối cùng gộp các bảng lên tới 80 cột. Mình cũng nghe nói trên thực tế các ứng dụng thường đạt đến chuẩn 2. Mình đi làm thậm chí đến cuối dự án không muốn chỉnh sửa database còn lưu một trường dưới dạng json :D. Còn bài tập lớn, dự án của mình thì nó còn linh tinh nữa. OK nhưng việc học vẫn phải hàn lâm. Mình có xem một số bài viết về chuẩn hóa cơ sở dữ liệu nhưng bản thân mình thấy không thỏa mãn (vẫn chưa hiểu lắm :D). Nên mình sẽ dịch bài từ wikipedia https://en.wikipedia.org/wiki/Database_normalization Chuẩn hóa cơ sở dữ liệu là quá trình cấu trúc cơ sở dữ liệu quan hệ theo một số chuẩn gọi là normal forms để giảm data redundancy *dư thừa dữ liệu và tăng *data integrity toàn vẹn dữ liệu. Nó được đề xuất bởi Edgar F.Codd như là một phần không thể thiếu trong mô hình quan hệ của ông. Chuẩn hóa đồi hỏi tổ chức các cột (thuộc tính) và các bảng (quan hệ) của cơ sở dữ liệu để đảm bảo rằng các dependencies của chúng được đảm bảo bởi các ràng buộc toàn vẹn database. Chuẩn hóa bằng cách áp dụng một vài luật với một tiến trình synthesis (tạo mới một database design) hoặc decomposition (cải thiện một database design có sẵn).

Nhiệm vụ của chuẩn hóa cơ sở dữ liệu

Một nhiệm vụ của first normal form (chuẩn 1NF) được định nghĩa bởi Codd trong năm 1970 cho việc thao tác và truy vấn dữ liệu sử dụng một “universal data sub-language” (SQL là một ví dụ như một data sub-language), mặc dụ Codd đã coi nó là một thiếu sót nghiệm trọng. Nhiệm vụ của chuẩn 1 đã được nêu bởi Codd (các bạn có thể bỏ qua phần này, mình không hiểu rõ lắm, có lẽ SQL có mặt năm 1974 thì năm 1971 còn đang trung cổ lắm nên mục đích nó là thế này):

  1. Độc lập các collection của relations(bảng) từ các phụ thuộc thêm xóa sửa.
  2. Giảm việc phải tái cấu trúc các bảng, như một kiểu dữ liệu mới, như là tăng thời gian sống của một chương trình.
  3. Giúp mô hình dữ liệu thêm thông tin (more informative) cho người dùng.
  4. Tạo tập dữ liệu các quan hệ để truy vấn, nơi mà việc thống kê dữ liệu là thay đổi theo thời gian.

Khi thêm xóa sửa một bảng sẽ có ảnh hưởng không mong muốn tới các bản khi chưa chuẩn hóa: *Update anomaly: *Các thông tin giống nhau trên nhiều dòng, việc cập nhật dữ liệu có thể làm mâu thuẫn logic. Ví dụ, mỗi bản ghi trong một Employees Skills bao gồm Employee ID, Employee Address và Skill, một thay đổi địa chỉ cho một employee có thể cần được áp dụng lên tất cả các bản ghi cho mỗi skill. Nếu chỉ cập nhật một phần, employee address được cập nhật trên một vài bản ghi nhưng không cho những bản ghi còn lại, sau đó bảng sẽ trong tình trạng không thống nhất. Đặc biệt khi bảng cung cấp một câu trả lời mâu thuẫn cho câu hỏi địa chỉ của nhân viên này là gì?. *Insertion anomaly. *Có một vài trường hợp không thể lưu trữ tất cả. Lấy ví dụ, mỗi một bản ghi trong Faculty và Their Course phải có Faculity ID, Faculty phải có Course Code *Deletion anomaly. * Tóm lại việc chuẩn hóa cơ sở dữ liệu giúp giải quyết được các vấn đề khi thêm, xóa, sửa dữ liệu. Còn bạn vẫn chưa biết phải làm thế nào để giải quyết thì chúng ta tiếp tục.

Thiết kế tối giản khi mở rộng cấu trúc cơ sở dữ liệu

Một cơ sở dữ liệu được chuẩn hóa cho phép cấu trúc của nó có thể mở rộng với các kiểu dữ liệu mới mà không thay đổi cấu trúc đã có quá nhiều. Quan hệ được chuẩn hóa, các mối quan hệ giữa các quan hệ được chuẩn hóa.

Normal Forms

Codd giới thiệu các khái niệm của normalization và được biết như là chuẩn 1 năm 1970. Codd tiếp tục định nghĩa chuẩn 2NF và 3NF trong năm 1971 và Code cùng Raymond F.Boyce định nghĩa Boyce-Codd normal form (BCNF) trong năm 1974. Không chính thức, một cơ sở dữ liệu quan hệ thường được mô tả là normalized nếu nó đạt được chuẩn 3. Chuẩn 3NF thoải mái với vấn đề thêm xóa sửa dị thường.

Một hình ảnh bằng cả ngàn từ ngữ. Primary key (no duplicate tuples): Bảng nào cũng phải có khóa chính (khóa chính là tập hợp không trùng lặp) No repeating groups: Không có dữ liệu lặp lại Atomic columns (cells have single value): Mỗi cột có một giá trị đơn. *First normal form: *

  • Loại bỏ các nhóm lặp lại
  • Tạo các bảng riêng cho tập dữ liệu liên quan
  • Chỉ định khóa chính với các dữ liệu liên quan

Ok sai *Atomic columns *chúng ta sẽ làm phẳng bằng việc tách cột Bảng đã đạt atomic, tuy nhiên việc tạo hai cột số điện thoại vẫn là một dạng *repeating group, *về mặt khái niệm giống thuộc tính, tên. Tại sao đặt số điện thoại trong Telephone number1 mà không phải Telephone number2, và không có lý do gì mà khách hàng không có nhiều hơn hai số điện thoại, vì thế có nên cho Telephone NumberN. Không thể tìm kiếm số điện thoại với việc tìm kiếm số cột tùy ý. Việc thêm số điện thoại có thể yêu cầu phải tổ chức lại bảng cho các cột mới hơn là chỉ thêm một dòng mới. Để mang mô hình về dạng chuẩn 1. Chúng ta sẽ chia thành các dòng và đảm bảo không có dòng nào trung nhau. ID là một giá trị không trùng lặp. Ta tách tiếp

Kết thúc

10 ngày làm youtuber

Mở đầu

Nếu bạn có theo dõi bài trước Chuyển văn bản thành giọng nói của mình, mình code cho bạn mình app để chuyển văn bản thành giọng nói để nó nghe truyện kiếm hiệp. Và nó đăng lên youtube. Nó khoe với mình rằng nó được 400 lượt sub và mấy chục nghìn lượt xem. Mình không ngờ rằng mọi người thích nghe truyện kiếm hiệp vậy. Có thể đối với các bạn là ít, nhưng với cái kênh youtube của mình mấy năm được 10 sub thì đây là con số lớn trong khi kênh của nó được tháng. Mình bảo nó là có vẻ nhu cầu là vô hạn và mơ tưởng đến làm một lần và ăn cả đời. Nhưng sự thật thì chẳng được như mơ!!! Mục đích là kể chuyện vui, cũng có một số thông tin về api, ngôn ngữ lập trình, và công cụ.

10 ngày làm youtuber

Mình thấy lạ khi có nhiều người đọc truyện ngôn tình, kiếm hiệp, tiên hiệp, sắc hiệp đến vậy. Trước kia mình có đọc thử truyện ngôn tình xem thế nào, mình thấy suốt ngày tâng bốc nhân vật chính, ngôn ngữ thì lấy từ truyện trung quốc, được dịch bằng tool và được chỉnh sửa bởi cộng đồng có lẽ cũng không phải giới nhà văn. Mình thích đọc tiểu thuyết văn học hơn. Vậy nên mình mới ấn tượng khi có cả một cộng đồng to lớn Tàng thư viện - đọc và thăng hoa cùng đam mê, truyenfull.vn - Đọc truyện online, đọc truyện chữ, truyện full, truyện hay. Tổng hợp đầy đủ và cập nhật liên tục, https://truyenyy.com/, https://truyencv.com. Có truyện lên đến 259819 lượt xem, và 7000 lượt theo dõi. Đây chỉ là ý kiến cá nhân của mình, các bạn đọc truyện cũng không nên chấp mình làm gì, nghĩa là nhu cầu đọc, nghe truyện cũng lớn các bạn ạ. Nhưng mảnh đất màu mỡ này đã được rất nhiều các tên tuổi khác khai thác rồi. Mình mới đến lại chẳng tìm hiểu gì cả.

Và mình bắt đầu code

Api fpt thì mình đã code trước cho bạn rồi. Bạn đang tự hỏi là có gì để code ở đây image

Crawler

Đầu tiên là lấy dữ liệu từ các trang như truyenfull, truyen.tangthuvien, truyencv về. Các bạn có thể sử dụng thư viện Scrapy của python. Rất nhanh chỉ trong khoảng 3 phút chúng ta có cả mấy nghìn chương từ các trang này.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def parse(self, response):
page = response.url.split("/")\[-2\]
if 'data' not in os.listdir():
os.mkdir('data')
if self.sub_url not in os.listdir('data'):
os.mkdir(f'data/{self.sub_url}')

text\_file = f'data/{self.sub\_url}/{page}.txt'
title\_file = f'data/{self.sub\_url}/{page}.title'

title = ' '.join(response.css('.chapter-title ::text').extract())
content = '. '.join(response.css('.chapter-c ::text').extract())
with open(text_file, 'w', encoding='utf-8') as f:
f.write(content)
with open(title_file, 'w', encoding='utf-8') as f:
f.write(title)
self.log('Saved file %s' % text_file)

Audio Maker

Tạo audio ta sẽ gọi các api text to speech của google, fpt, microsoft để làm việc này. Công việc sẽ là như sau:

  • Đọc các file text, chia thành các đoạn nhỏ
  • Gửi lên lấy cái file audio
  • Gộp thành một file
  • Gộp 10 chương làm một file
  • Chèn nhạc nền (cho hay)

ffmpeg sẽ là công cụ giúp bạn công việc này. Vâng đọc đống tài liệu của cái này đau đầu thật. Từ đầu mà đi đọc các bài viết tiếng Việt cho nhanh.

Image Maker

Chúng ta sẽ tạo ảnh hàng loạt. Sẽ in các con số của các chương lên. Để tạo video ở phần dưới Trong python có thư viện pillow. Mình sẽ đưa một ít code demo

1
2
3
4
5
6
7
8
9
10
def draw\_image(start\_chapter, end\_chapter , path, image\_name, font\_family, font\_size, x, y, color):
text = f'{start\_chapter}-{end\_chapter}'
image = Image.open(path + image_name)
font\_type=ImageFont.truetype(font\_family, font_size)
draw = ImageDraw.Draw(image)
draw.text(xy=(x, y), text=text, fill=color, font=font_type) #color is tuple
# image.show()
if f'chuong-{start\_chapter}-{end\_chapter}' not in os.listdir(path):
os.mkdir(f'{path}chuong-{start\_chapter}-{end\_chapter}')
image.save(f"{path}chuong-{start\_chapter}-{end\_chapter}/chuong-{start\_chapter}-{end\_chapter}.png","PNG")

Video Maker

Lại là ffmpeg. Chúng ta sẽ ghép audio và image tương ứng làm thành video. Image càng chất lượng việc tạo video càng lâu.

Video Uploader

Chúng ta cũng có thể upload hàng loạt video lên youtube. Tài liệu của youtube có hướng dẫn sẵn các bạn tải code mẫu trên đây. Nếu dùng python thì code dành cho python 2 nhé. Mình lại dùng python 3.

Progress Viewer

Nãy giờ toàn console, màn hình đen, mình tạo thêm một cái giao diện phục vụ việc theo dõi tiến độ. Mình rất đắn đo là dùng python như Tkinter, QT, … hay dùng electron. Dùng python thì tiện vì đang code python sẵn, còn electronjs thì có thể tạo giao diện bằng html css. Và rồi mình chọn electronjs cho đẹp :D
home
progressviewer

Azure VPS

Nếu treo máy mình thì mình khá sót. Nên mình đăng ký một VPS của bill gate. Treo thoải mái.

và kết quả

Kết quả là một ngày mình up được tới 99 videos, tương đương với 990 chương truyện. Vì youtube chỉ giới hạn 99 video. Mình không rõ nó là bao nhiêu nhưng có ngày mình up đến video thứ 100 thì báo exceed … gì đó. Nhưng truyện auto của mình không được quan tâm lắm. Có lẽ cần thời gian. Nhưng phải có đến ba bốn chục kênh như kênh của bạn mình rồi. Thường là giọng google hoặc microsoft an. Chưa kể có những bạn đọc chay (mình nghĩ cũng kiên nhẫn thật). Máy không thể bằng người được, cũng công bằng phải không :D. Còn đội hình auto còn lại thì cũng rộn ràng không kém. Nhưng vẫn có những người nghe không biết là giọng máy, vẫn cất tiếng chửi rủa giọng này mà đăng lên mạng, đọc không ngắt nghỉ gì cả, đọc chậm thôi ad, ra được có chục phút ra làm gì (cái này do tác giả chưa viết, ra truyện nào bạn mình làm ngay truyện ấy). Cũng có những bình luận tích cực giọng hay, ra tiếp đi ad, … khá khen cho fpt, microsoft, nhiều người không phân biệt được giọng thật và giọng máy. Cũng có một số giọng mình biết chắc là máy nhưng không biết các bạn ấy làm kiểu gì.

Kết thúc

Các bạn có thể vào Truyện audio giải trí để cho mình một sub nhé. Cám ơn các bạn đã theo dõi.

Nhận dạng giọng nói

Mở đầu

Đây là cuộc thi https://www.kaggle.com/c/tensorflow-speech-recognition-challenge. Bài toán cho dữ liệu bao gồm 65000 bản ghi. Yêu cầu nhận ra 30 từ ngắn “Yes”, “No”, “Up”, “Down”, “Left”, “Right”, “On”, “Off”, “Stop”, “Go”, “Zero”, “One”, “Two”, “Three”, “Four”, “Five”, “Six”, “Seven”, “Eight”, and “Nine”, Bed”, “Bird”, “Cat”, “Dog”, “Happy”, “House”, “Marvin”, “Sheila”, “Tree”, and “Wow”. Là một bài toán classify. Nhận dạng file ghi âm của từ gì. Mục đích của chúng ta là tạo được model deep learning, nhận dạng được các từ đơn lẻ. Nghĩ đơn giản, file ghi âm sẽ được mã hóa dưới dạng số, chắc phải có thư viện nào đó đọc file wav dưới dạng số từ đó làm đầu vào trong mô hình, và đây là bài toán classify đầu ra là 30 danh mục. Theo tìm hiểu thì mình biết được một cái gọi là MFCC, cũng tương tự như word2vec trong NLP và mô hình của mình cũng nhận dạng khá tốt. Và ta tìm hiểu tiếp xem mọi người làm thế nào. Trên kaggle có rất nhiều bài viết hay. Mình sẽ dịch https://www.kaggle.com/davids1992/speech-representation-and-data-exploration

Speech Representation

Có hai lý thuyết về sự nghe của con người là Place Theory (dựa trên tần số) và Temporal Theory(). Trong Speech Recognition, Tôi nhìn thấy hai hướng chính là Spectrogram quang phổ (frequencies - tần số) và dựa trên đặc tính MFCC(Mel-Frequency Cepstral Coefficients). Bạn hiếm khi làm việc với raw(dữ liệu thô), temporal data.

Place Theory và Temporal Theory

Place theory là một lý thuyết về sự nghe (Hearing hay auditory perception - sự nhận thức về thính giác) là sự nhận thức của chúng ta về âm thanh phụ thuộc vào các thành phần tần số cung cấp sự rung động của basilar membrane(màng đáy - thành phần ở trong tai). Theo lý thuyết này các pitch (cao độ) của âm thanh, giống như giọng nói của con người hay một tone trong âm nhạc, được xác định bởi nơi mà membrane rung động, dựa trên tần số tương ứng tới các tế bào thân kinh thính giác. Một lý thuyết thay thế là temporal theory, hay còn gọi là timing theory. Lý thuyết này được liên kết chặt chẽ với nguyên lý volley hay volley theory, một cơ chế các nhóm tế bào thần kinh có thể mã hóa các sóng âm thanh theo thời gian. Trong trường hợp này, neural firing theo thời gian sẽ nhận thức được cao độ (cao độ là một cảm giác của thính giác, trong đó người nghe có thể ấn định được những âm thanh vào các vị trí tương đối trên một thước đo chủ yếu dựa vào tần số rung.[5] Cao độ có quan hệ chặt chẽ với tần số, nhưng không phải là một mối quan hệ tương đương). Place–volley theory bao gồm cả hai cơ chế này, các cao độ thấp bởi temporal pattern và các cao độ cao bởi rate-place patterns. Place theory được tin tưởng nhiều hơn.

Visualize

Vậy chính xác chúng ta đang tìm kiếm gì? Mạng neural cần các con số đầu vào. Chúng ta không thể cho file wav vào để train được. Để biến raw data thành các con số và để dễ hình dung chúng ta hãy xem các ví dụ bên dưới.

Wave

Spectrogram (Quang phổ)

Nếu chúng ta sử dụng quang phổ như là các đầu vào của mạng neural, chúng ta phải normalize feature. (Chúng ta cần normalize qua toàn tập dữ liệu). Có một sự thật thú vị. Chúng ta có 160 features cho mỗi frame, tần số trong khoảng 0 đến 8000, nghĩa là mỗi feature tương ứng với 50Hz. Tuy nhiên tai nghe được từ 3.6Hz đến 1000-2000Hz. Có nghĩa là con người nghe được trong khoảng nhỏ hơn cái mà được trình bày trong quang phổ.

MFCC

Nếu bạn muốn biết chi tiết về MFCC hãy xem MFCC explained. Bạn sẽ nhìn thấy rằng nó mô phỏng lại các thuộc tính của thính giác con người. Bạn có thể tính toán Mel Power Spectrogram và MFCC sử dụng thư viện ví dụ librosa trong python.

Silence removal (xóa các phần im lặng)

Kết thúc

Part I: Foundation (And We Dont Mean Makeup!)

Đọc sách không cần đọc nhiều, cần phải hệ thống lại kiến thức

Pre-calculus chỉ là một điểm dừng trên con đường calculus. Bạn bắt đầu với ngôi làng Algebra I (đại số I) di chuyển tới ngôi làng của Geometry (hình học), tạo cách riêng để tới thành phố Algebra II, và tìm cho chính bạn thủ đô là pre-calculus. Những kĩ năng này, cho hầu hết các phần là giống nhau. Phần này sẽ lấy lại các kĩ năng ấy (và trong một vài trường hợp là mở rộng chúng). Ở những chương bắt đầu ôn lại những thứ căn bản: sử dụng các operations(các phép tính), solving and graphing equations (giải phương trình, bất phương trình và vẽ đồ thị) và sử dụng khoảng cách và điểm chính giữa. *Sau đó chúng ta sẽ di chuyển tới số thực, bao gồm *radicals (căn thức). Tất các thứ bạn muốn biết về phương trình sẽ được ôn lại trong các chương graphing và transforming parent graphs, rational functions, và piece-wise functions . Chúng ta cũng sẽ đi qua các performing operations on functions và làm thế nào để tìm ra inverse. Chúng tôi sau khi đã giải được các phương trình bậc cao sử dụng các phương pháp factoring, completing the square, and the quadratic formula. Bạn cũng học làm thế nào để graph những phương trình bậc cao phức tạp. Cuối cùng, bạn khám phá ra các hàm số mũ và hàm logarit và các mà bạn muốn với chúng. Chapter 1: Khởi đầu của khởi đầu : Pre-pre-calulus Pre-calulus là hòn đá đệm bước cho calculus. Nó là sau các môn toán như pre-algebra, algebra(đại số), gemetry(hình học) và algebra II. Bây giờ tất cả những thức bạn cần là pre-calculus để lấy mục đích cuối cùng - calculus. Và như bạn có thể nhớ lại về lớp đại số 2. Và bước tiếp theo pre-calculus bắt đầu với những khái niệm chắc chắn rằng bạn mong muốn hiểu ngọn ngành Vì thế, chúng ta sẽ bắt đầu ở đây, xem lại các khái niệm. Nếu bạn cảm thấy đã hiểu hết thì hãy thoải mái bỏ qua chương này và tiếp tục. Nếu bạn không nhớ một vài khái niệm chúng ta thảo luận trong chương này, hoặc trong cả cuốn sách, bạn có thể tìm cuốn For Dummies math book khác để review. Nền tảng là quan trọng. Bỏ thời gian ra ngay bây giờ để ôn lại - Nó sẽ tiết kiệm cho bạn vô số thời gian trong tương lai. Bạn nhớ những từ viết tắt, chứa các thông tin phức tạp ơn: PEMDAS viết tắt của Thứ tự các phép toán: Các dấu ngoặc, các số mũ, phép nhân chia rồi đến cộng trừ. Một số thuộc tính của số: Bài tập

Giữ sự cân bằng trong khi giải phương trình

Bằng cách đơn giản hóa biểu thức là cơ bản của pre-algebra, giải phương trình với các biến là algebra. Tất cả các thứ cần thiết là các khái niệm phức tạp trong pre-calculus. Giải các algebraic equations nên dễ dàng cho bạn. Tuy nhiên nó là nền tảng của pre-calculus, chúng ta sẽ gửi tóm tắt cho bạn ở đây. Việc viết trên máy tính khó thật mình sẽ giải toán bằng giấy rồi chụp ảnh. TODO 6 - 10

Một bức tranh đáng giá bằng cả ngàn từ ngữ: Đồ thị và phương trình

Đồ thị là trình bày trực quan của các phương trình toán học, Trong pre-calculus, bạn sẽ được giới thiệu nhiều phương trình toán học và sau đó sẽ vẽ đồ thị của chúng. Chúng tôi gửi bạn thực hành vẽ đồ thị với các phương trình sau khi chúng tôi đã cover nhiều phương tình phức tạp. Trong khi đó (In the meantime), nó là quan trọng để thực hành các thứ cơ bản: vẽ đồ thị phương trình tuyến tính và bất phương trình. Đồ thị được vẽ trên Cartesian coordinate system (hệ tọa độ cartesian). Hệ này được tạo bởi hai chiều: ngang (trục x) và dọc (trục y). Mỗi điểm trên hệ tọa độ được gọi là một cặp tọa độ cartesian (x, y). Bạn có thể vẽ đồ thị dạng tuyến tính bằng hai cách: plug and chug hoặc sử dụng slop-intercept form: y=mx + b. Về toán học bạn nên biết cách sử dụng dạng slope intercept, nhưng chúng ta sẽ gửi cho bạn một cái nhìn nhanh về plug and chug, bởi vì phương trình.

Vẽ đồ thị bằng plug and chug method

Nói chung là chúng ta lấy hai điểm thuộc đồ thị và kẻ đường thẳng đi qua hai điểm đó. Phương trình có dạng ax + by = c. Vd 2x + 3y = 12 => (x = 0, y = 4) (x=6 <-y =0). Nối hai điểm

Vẽ đồ thị sử dụng dạng slop-intercept

y = ax + b Như phương trình trên 2x + 3y = 12 => y= -2x/3 + 4 Ta có ngay y=4. Vẽ điểm đó trên đồ thị và tìm điểm 2/3 Đối với bất phương trình chúng ta sẽ kẻ phương trình và vẽ miền. Sẽ vẽ dấu chấm với < ? Vùng sẽ ở trên nếu y <, và ở dưới nếu y >

Sử dụng đồ thị để tìm ra thông tin (khoảng cách điểm chính giữa và độ nghiêng)