Trang daynhauhoc.com được viết bằng ngôn ngữ nào?

Cho mình hỏi là trang daynhauhoc.com viết bằng ngôn ngữ nào vậy? Mình thấy trang web này chạy rất nhanh: PHP, ASP, JSP hay NodeJS

Ruby on Rails ở back-end, Emberjs ở front end, Postgre cho database và Redis lưu trữ cache và dữ liệu tạm thời

Ruby on Rails — Our back end API is a Rails app. It responds to requests RESTfully in JSON.
Ember.js — Our front end is an Ember.js app that communicates with the Rails API.
PostgreSQL — Our main data store is in Postgres.
Redis — We use Redis as a cache and for transient data.

Mã nguồn bạn có thể xem ở đây https://github.com/discourse/discourse

5 Likes

Dạo này thấy Discourse có vẻ nổi trong việc làm forum nhỉ?
Mọi người khi muốn tìm hiểu technique mà một trang dùng thì có thể dùng trang: http://builtwith.com/daynhauhoc.com

Trang chủ cúa discourse: http://www.discourse.org
(hiện giờ discourse không thấy support plugin, theme, … chắc cũng phải 1 thời gian nữa mới có thể cạnh tranh với các nền tảng forum # như vbb, xenforo, …)

7 Likes

Nếu như bạn giải thích thì:

  • Ruby on Rails tương tự PHP ở phía Sercer
  • Ember.js tượng tự như Javascript ta chạy ở phía client.
  • PostgreSQL tượng tự MysSQL dùng để lưu trữ CSDL
  • Còn Redis mình không biết nó tương tự cái gì nhưng mà mình nghĩ nó dùng để tăng tốc trang web không biết có đúng hay không? :smiley:

Về cơ bản thì bạn hiểu đúng rồi, mình chỉ sửa lại 1 chút thôi

  • Discourse viết kiểu fat client nên Rail/Ruby chỉ dùng để làm webservice (output json để client app sử dụng).
  • Ember.js là một framework được built trên JS. Giờ các nghiệp vụ logic được đẩy xuống client xử lý: routing, binding, … nên cần có 1 framework cho dễ dùng. Trước kia, bạn làm routing, data binding phía server thì giờ bạn làm phía client (chuyển từ fat server app sang fat client app). Ember.js có lẽ nói tương tự AngularJS thì ổn hơn.
  • Redis thì giống memcached, nghĩa là quản lý các data persistent trên RAM, thay vì trên ổ cứng. Lý do là tốc độ truy xuất từ RAM nhanh hơn rất nhiều so với ổ cứng. Ví dụ, bạn có thể lưu sessionid tạm vào Redis, lưu danh sách những followerIds / followeeIds khi người dùng thao tác với danh sách này trên Twitter. Sau này, khi DB rảnh rảnh thì bạn mới save đống này vào storage trên ổ cứng (vì RAM dù gì cũng không thể to như ổ cứng được, và nếu mất điện cái thì đống data trên RAM sẽ mất đi)
  • Còn postgreSQL thì là hệ quản trị CSDL quan hệ, giống MySQL, SQLServer như bạn đã hiểu.
6 Likes

Uhm, redis được dùng để lưu trữ thông tin kết nối socket, thông tin về session, cache. Về cache chẳng hạn, người ta thường sử dụng cache để lưu trữ kết quả câu truy vấn database thay vì gọi trực tiếp thường xuyên đến database. Ví dụ có 100 người cùng request nội dung của trang chủ, thay vì gọi câu truy vấn 100 lần thì có thể gọi 1 lần trong lần đầu tiên và lưu xuống redis. Ở 99 lần còn lại, nếu nội dung chưa thay đổi, thay vì phải gọi đến database chính thì chỉ cần chui vô redis - nội dung được lưu trữ trong Ram, do đó tốc độ truy xuất lớn hơn và làm tăng tốc độ truy cập của người dùng. Nó sẽ tăng tốc độ rõ rệt nếu số lần read >>> write.

4 Likes

Discourse support plugin khá nhiều rồi anh. Theme thì chỉ có thể chỉnh css được thôi. Template chưa chỉnh được

1 Like

Đã Support Google Adsense chưa bác ơi? Em thấy nhiều người kêu khoản này lắm.

Support mấy năm rồi. Bạn lên meta.discourse.org để tìm hiểu

1 Like

Chạy Discourse hơi tốn tài nguyên bác nhỉ. Em cũng định chạy 1 site Not for profit nhưng mà đi nguyên một con VPS thì cũng hơn tốn tiền.

Discourse là được tốn ưu hóa hết mức có thể rồi đó :slight_smile:

Bạn có thể cài lên vps 512 MB ram nhưng mà hiệu năng không tối ưu

2 Likes

Cho mình hỏi cái fat server app, fat client app là gì vậy. Mình không hiểu khái niệm này cho lắm

Dùng Redis lưu dữ liệu trên RAM mà chưa kịp lưu vào Database chẳng may mất điện đột ngột xem như mất hết dữ liệu đúng không bạn

Redis có disk persistence của riêng nó. Nếu mất điện của chỉ mất một phần thôi, không mất hết toàn bộ.

1 Like

Dường như daynhauhoc có dùng socket vậy nó dùng bằng gì? Ruby on Rain ?

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?