Bài đăng

Đang hiển thị bài đăng từ 2017

Luật chơi của thế giới và tư duy kiến tạo

Thế giới là một trò chơi có luật. Nắm vững luật chơi hay kiến tạo ra luật chơi thì bạn là người chiến thắng. Trong bất cứ hình thái xã hội luôn luôn có mâu thuẫn giữa cá nhân và xã hội. Bởi vì xã hội đại diện cho lợi ích số đông, đôi khi nó xung đột với lợi ích cá nhân. Lợi ích cá nhân của bạn bị xâm phạm bởi luật chơi của xã hội. Bạn có 2 lựa chọn: một là tham gia cuộc chơi với luật chơi của người khác, hai là tạo ra luật chơi và bắt mọi người tuân theo.Muốn là người tạo ra luật chơi, bạn cần phải học về tư duy bản chất, tư duy phản biện, tư duy ngụy biện. 3 nguồn tư duy này hình thành tư duy kiến tạo. Vốn dĩ sự vật ko có bản chất và bản chất có thể thay đổi. Thế giới không tồn tại chỉ riêng biệt một sự thật hay tất cả mọi người đều sống trong thế giới tưởng tượng từ niềm tin của chính họ. Cùng một sự vật, một con người chúng ta có thể có vô vàn cách miêu tả, định nghĩa để dẫn dắt người khác theo cái cách ta muốn. Đó cũng là cái cách marketing hay quảng cáo xỏ mũi chúng ta hằng

Beautiful controller in Ruby on Rails

Your controllers is too fat and messy. You want to make them better. You should be follow these rules: Short, DRY, easy to read Minimum amount of glue code between request and model Unless there is good reason, controller should be follow a standard When user’s interactions are normalized to CRUD. Our controller could be like this class ObjectController < ApplicationController def index load_objects end def show load_object end def new build_object end def create build_object save or render 'new' end def edit load_object build_object end def update load_object build_object save or render 'edit' end def destroy load_object @object . destroy redirect_to objects_path end private def object_params obj_params = params [ :object ] obj_params ? obj_params . permit ( :id , :attributes ) : {} end def loa

3 common security issues in Rails

SQL injection Đây là kiểu tấn công gây ảnh hưởng lên câu truy vấn dữ liệu thông qua các tham số của ứng dụng web. Thường thì chúng được dùng để vượt qua bước chứng thực hay để đánh cắp dữ liệu. Ví dụ bạn muốn tìm những project có tên được lấy từ tham số name: Project.where("name = '#{params[:name]}'") Tham số này có thể là  'OR 1 -- . Kết quả câu truy vấn là: SELECT * FROM projects WHERE name = '' OR 1 --' (trả về là tất cả projects). Hay nếu tham số là ') UNION SELECT id,login AS name,password AS description,1,1,1 FROM users -- thì câu truy vấn dữ liệu là: SELECT * FROM projects WHERE (name = '') UNION SELECT id,login AS name,password AS description,1,1,1 FROM users --'  (lấy name và password của tất cả users). Cách phòng chống: Ruby on Rails đã xây dựng 1 filter để lọc các ký tự đặc biệt trong SQL:  ' ,  " ,  null  và xuống dòng. Filter này được dùng tự động cho câu lệnh  find  hay  find_by_something . V

Two common CSS problems I usually meet and solution

Hình ảnh
Footer need to be always at the bottom Most of web applications have a footer. Footer is for your company or organization’s infomation, copyright, etc. And as its name, it need to be at the bottom. But somethime your body content is too short, your footer is still at the bottom of the page, but not the bottom of viewport. Like this Solution: HTML <div id= "container" > <div id= "header" ></div> <div id= "body" ></div> <div id= "footer" ></div> </div> CSS html , body { margin : 0 ; padding : 0 ; height : 100% ; } #container { min-height : 100% ; position : relative ; } #body { padding-bottom : 60px ; /* Height of the footer */ } #footer { position : absolute ; bottom : 0 ; width : 100% ; height : 60px ; /* Height of the footer */ } References:  http://matthewjamestaylor.c

Chế độ ăn lành mạnh cho một sức khỏe tốt

Hình ảnh
Con người là động vật ăn tạp nhưng hơn 85% là từ thực vật Để biết một loài động vật là động ăn cỏ, ăn thịt hay ăn tạp, người ta hay dựa vào các đặc điểm sinh lý của bộ máy tiêu hóa của động vật đó. Về cơ bản chúng ta có thể dựa vào cấu tạo răng hàm và ruột. Với các động vật ăn thịt, răng thường sắc nhọn, bén để xé thịt. Dạ dày của chúng thì ngắn, khoảng 1 đến 2 so với độ dài cơ thể. Bởi vì thịt dễ bị lên men sinh ra các chất độc hại nên cần có ruột ngắn để thải chúng ra nhanh. Động vật ăn cỏ thì chủ yếu là các răng vuông có chức năng nghiền cỏ và mỏng để nhai cỏ. Dạ dày thưòng dài từ 5 đến 7 so với độ dài cơ thể. Con người có tất cả 32 cái răng sau khi trưởng thành, trong đó có 8 cái răng cửa, 4 cái răng nanh (thức ăn động vật) và 20 chục cái răng hàm. Như vậy chúng ta thấy 28 (ăn thực vật) / 4 (ăn động vật). Chỉ mỗi ruột non đã dài gấp 4 lần chiều cao của 1 người trưởng thành. Từ tỉ lệ răng chúng ta thể suy ra con người nên ăn 87.5% thức ăn thực vật và 12,5% còn lại là động v

High-tech and natural/organic agriculture

Hình ảnh
Nông nghiệp công nghệ cao là nền nông nghiệp áp dụng khoa học kỹ thuật công nghệ để tạo và kiểm soát các yếu tố ảnh hưỏng tới sự phát triển của cây trồng nhằm phục vụ nhu cầu của con người. Chúng ta có thể kiểm soát ánh sáng, độ ẩm, nhiệt độ, các chất dinh dưỡng/ phân bón, đất hay giá thể, kiểm soát côn trùng, dịch hại. Tùy theo cây trồng mà con người có thể điều chỉnh các yếu tố để cây trồng được phát triển tốt nhất, đẹp nhất. Tất cả hiện nay có thể làm tự động được nếu như người trồng hiểu được sinh lý của cây mình trồng. Nhưng không phải là tất cả và con người không phải là tự nhiên. Các sản phẩm nông nghiệp công nghệ cao rất đẹp, an toàn và ăn khá ngon. Nhưng thiếu chất và thiếu nhiều nhất là các enzyme. Nhà màn ngăn các tia cực tím/UV nên cây trồng không sản xuất ra các enzyme chống oxy hóa nữa. Côn trùng bị tiêu diệt nên cây trồng không hấp thu được khoáng chất từ lớp vỏ của côn trùng. Môi trường nuôi dưỡng cây trồng được pha chế từ các hoạt chất bạn có thể mua được từ các c

Nông nghiệp hiện đại và vòng tròn vấn đề của thế giới

Hình ảnh
Sự phát triển của ngành nghề lâu đời nhất thế giới Không một ngành nghề nào trên thế giới lâu đời hơn nông nghiệp. Những dấu tích của ngành nông nghiệp đã được phát hiện từ năm 12000 TCN. Nó gắn liền với đời sống và xã hội loài người. Khởi thủy là nông nghiệp thô sơ hay truyền thống. Đây là nền nông nghiệp sơ khai, chủ yếu dựa vào sức lao động của con người. Dụng cụ lao động còn thô sơ và năng suất thấp. Sản phẩn chủ yếu là lương thực. Các sản phẩm này tốt cho con người và môi trường nhưng năng suất không cao. Dưới áp lực của dân số và nhu cầu lương thực ngày càng cao và đa dạng, con người đã cải tiến máy móc, thiết bị, kỹ thuật để nâng cao năng suất. Họ đưa vào sử dụng những máy móc có năng suất cao, cây trồng đa dạng hơn. Và đặc biệt họ đưa vào sử dụng các loại thuốc bảo vệ thực vật(BVTV). Vấn đề năng suất phần lớn đã được giải quyết. Nhưng vấn đề mới lại xuất hiện, đó là, bệnh tật hủy hoại sức khỏe người tiêu dùng. Đây chính là nơi nông nghiệp sạch ra đời. Các tiêu chuẩn, p

Sessions là gì? Và Rails làm nó như thế nào?

Sessions là gì? Tại sao ứng dụng web cần nó? Nhiều ứng dụng web muốn lưu trữ thông tin trạng thái của người dùng theo thời gian. Ví dụ như thông tin giỏ hàng, hay thông tin chứng thực. Vì HTTP không làm đưọc điều đó nên chúng ta cần sessions. Nếu không có sessions, người dùng có thể cần phải chứng thực ở mọi request. Điều này thật sự khó chịu và không tiện nghi. Vậy sessions chỉ là 1 nơi lưu trữ thông tin của người dùng để có thể dùng chúng ở những request tiếp theo trong tương lai. Sessions được xây dựng thế nào? Mỗi khi có 1 user mới truy cập thì server sẽ cấp cho nó 1 session id. Id này đưọc gửi xuống client trong response trả về và lưu trong cookies của browser. Khi gửi yêu cầu tới server, browser của client sẽ gửi cookies có kém session_id trong đó nên server sẽ biết đc đây là request của user nào. Nếu không có session Id thì đó là 1 request của 1 user mới. Session Id tùy theo mỗi framework hay ứng dụng sẽ được build khác nhau. Ví dụ Rails thì nó là MD5 hash long value củ

Module vs class in ruby programming language

Modules are about providing methods that you can use across multiple classes - think about them as “libraries” (as you would see in a Rails app). Classes are about objects; modules are about functions. Class is mainly different from Module by 3 main methods: new, allocate, superclass. The table below show you the different between them.   Class Module instantiation can be instantiated can  not  be instantiated usage object creation mixin facility. provide a namespace. superclass module object methods class methods and instance methods module methods and instance methods inheritance inherits behaviour and can be base for inheritance No inheritance inclusion cannot be included can be included in classes and modules by using the include command (includes all instance methods as instance methods in a class/module) extension can not extend with extend command (only with inheritance) module can extend instance by using extend command (extends given instance with singleton method

Open class in Ruby

Trong ruby, không có sự khác biệt thực sự giữa code định nghĩa lớp và code của bất cứ loại nào khác. Nếu một lớp đã tồn lại, Ruby không định nghĩa nó lần nữa mà chỉ mở lớp này ra thêm các các methods mới vào. Có vẻ trong Ruby, chữ  class  giống một scope operator hơn là để khai báo lớp. Ví dụ: class OneClass def x "x" end end class OneClass def y "y" end end obj = OneClass . new obj . x # => "x" obj . y # => "y" Ở đây chúng ta có thể dùng kỹ thuật này (Open Class) để mở các lớp có sẵn, thậm chí là các lớp của Ruby, để chỉnh sửa. Kỹ thuật này giúp chúng ta có thể thêm thắt, viết lại cái hàm của lớp đã được định nghĩa trong thư viện (monkey patching). Mặt trái của nó là khi chúng ta chỉnh sửa hành vi các phương thức của thư viện chuẩn sẽ làm phần mềm khó test và kiểm soát. Nhiều khi khiến phần mềm chạy lỗi hoàn toàn. Có một số người khó tính thưòng hoàn toàn không khuyến khích các lập trình viên s