New FAMILUG

The PyMiers

Showing posts with label Ruby. Show all posts
Showing posts with label Ruby. Show all posts

Sunday, 1 November 2020

Không cần jq nếu đã có python/ruby

jq trở thành công cụ "làm tất cả" với các sysadmin. Trong khi jq được dùng để "query JSON" - truy cập dữ liệu trong 1 đoạn JSON thì nó cũng được dùng để kiểm tra syntax của 1 đoạn JSON.

JQ là gì

$ whatis jq

jq (1)               - Command-line JSON processor
 

Photo by Thanh Soledas on Unsplash
 

Nhưng nếu máy đã có python/ruby, hay các ngôn ngữ trang bị sẵn stdlib JSON, sẽ không cần phải cài gì thêm cả:

File bad.json ví dụ, thử dùng mắt thường tìm xem nó sai ở đâu:

{
  "name": "@exercism/typescript",
  "description": "Exercism exercises in Typescript.",
  "private": true,
  "repository": {
    "type": "git",
    "url": "https://github.com/exercism/typescript"
  },
  "devDependencies": {
  },
}

Sunday, 27 May 2018

In ra màn hình số 1 - dùng ngôn ngữ nào nhanh/nhẹ nhất?

Nếu chỉ cần in ra mà hình số 1, ngôn ngữ lập trình nào sẽ chạy tốn ít RAM nhất?
Thí nghiệm sau sẽ cho ta thấy các chương trình cần bao nhiêu RAM để chạy và in ra số 1, kết thúc dòng bằng một dấu xuống dòng (newline \n).
Ta dùng chương trình /usr/bin/time để có cả thông số về RAM (RSS) thay vì chỉ gõ time - lệnh builtin của bash.

bash4.3

$ /usr/bin/time bash -c 'echo 1'

1

0.00user 0.00system 0:00.00elapsed 100%CPU (0avgtext+0avgdata 3064maxresident)k

0inputs+0outputs (0major+136minor)pagefaults 0swaps

dash

$ /usr/bin/time /bin/dash -c 'echo 1'
1
0.00user 0.00system 0:00.00elapsed ?%CPU (0avgtext+0avgdata 1492maxresident)k
0inputs+0outputs (0major+67minor)pagefaults 0swaps

mawk

$ /usr/bin/time mawk 'BEGIN {print 1}'

1

0.00user 0.00system 0:00.00elapsed 100%CPU (0avgtext+0avgdata 1932maxresident)k

0inputs+0outputs (0major+86minor)pagefaults 0swaps

Tuesday, 4 November 2014

[Ruby] Cài đặt/sử dụng rbenv

Cho những ngày tháng không Facebook :">

Vì sao chọn rbenv ?

  • Nhẹ
  • Cài đặt đơn giản
  • Sử dụng dễ
  • Mỗi folder 1 gem version khác nhau được, hoặc set 1 version dùng chung (global)
  • Không cần quyền sudo, user bình thường cũng có thể cài ruby và deploy 1 ruby app.

 

Cài đặt RBENV

Hướng dẫn cài đặt này đã test cho Ubuntu 12.04 LTS.

Cài cái gói phụ thuộc (Dependency packages)
Phần này cần sudo để cài.

sudo apt-get install autoconf bison buixld-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev git curl

Wednesday, 25 September 2013

Công cụ quản lý truy cập đến nhiều server

Mặc định là bạn dùng ssh

0. Quản lý file ~/.ssh/config
Cần thì thêm, chán thì sửa

Ví dụ:
hvn@archhvn: ~ () $ head ~/.ssh/config
Host saltlab
    hostname 192.168.122.241
    user hvn

1. Dùng storm -> cho fan python
http://emre.github.io/storm/
Cài đặt:

sudo apt-get install python-pip
pip install stormssh

Cách dùng:
storm --help
storm add --help

2. Dùng ghost-ssh => cho fan ruby

https://github.com/bjeanes/ghost
có thể cài bằng gem

3. Dùng PAC manager => cho fan GUI :D 

Saturday, 17 August 2013

[Monitoring] StatsD

StatsD là tên của một NodeJS daemon (hay gọi khác là service), daemon này listen các message được gửi tới qua cổng UDP (mặc định là cổng 8125).

chữ d ở cuối statsd là viết tắt cho daemon, giống như cách đặt tên phổ biến cho httpd, ftpd, rsyncd ...

Từ cái tên này, có thể thấy StatsD là một daemon phục vụ cho việc thống kê (statistics). Người ta (Etsy) tạo ra StatsD để giúp cho việc thu thập dữ liệu trở nên dễ dàng hơn. Mô hình cơ bản nhất là trên 1 máy server, StatsD chạy và các webapp trên máy đó sẽ gửi các thông tin thống kê tới daemon này. StatsD chỉ phục vụ quá trình thu thập dữ liệu, sau đó nó có thể gửi tới một máy chạy graphite hay ganglia để thực hiện vẽ các đồ thị dựa trên dữ liệu thu thập được.

Điểm đáng chú ý và hay ho nhất của StatsD (tức phần daemon) là nó rất đơn giản nên được implement trên nhiều ngôn ngữ khác nhau. Có thể kể tới:

Friday, 9 August 2013

[Programming] Kho báu

Kho báu
Là nơi bạn sẽ tìm ra những kinh nghiệm quý báu, những đúc kết của cả 1 quá trình làm việc phức tạp và liên tục, sẽ giúp bạn trở thành 1 lập trình viên giỏi hơn.
  •  Bạn rất khó tìm thấy nó trong 1 manpage 
  •  Cũng không dễ dàng tìm trong document hướng dẫn sử dụng software
  •  Không biết có ai viết nó thành sách không
  •  Cũng chẳng tập trung ở các blog
...
Nhưng bạn sẽ tìm thấy kho báu này ở:

Monday, 24 June 2013

YAML là gì?

YAML (http://www.yaml.org/) là 1 định dạng dũ liệu được thiết kế nhằm mục đích để người và máy (các ngôn ngữ lập trình) cùng đọc được.

YAML được dùng vào mục đích tương tự JSON, XML nhưng ngắn gọn xúc tích hơn.
Ví dụ về 1 đoạn YAML được biểu diễn như sau:
-
  name: HVN
  mail:   hvn@familug.org
-
  name: SAM
  mail:   hai.lt@familug.org
http://yaml-online-parser.appspot.com/ Là 1 trang chuyển đổi YAML sang JSON. Bạn nên dùng trang này trong lúc đọc, vừa học vừa hành lúc nào cũng tốt hơn.


YAML để làm gì?

Thursday, 20 June 2013

Tuesday, 28 May 2013

Sửa lỗi ActionDispatch::Cookies::CookieOverflow trong Rails 3.x,4

Nguyên nhân do cookie để lưu session này đã đầy (giới hạn là 4KB thì phải?)
Giải pháp: Lưu chỗ session này vào database, Rails có hỗ trợ dùng Active record.

Có 1 số tut hướng dẫn tạo table trong db bằng chạy:
$ rake db:sessions:create
Thực tế mình chạy bị lỗi (Chả hiểu sao - nên viết lại tut này làm chỗ lưu trữ cho sau này).

rake db:sessions:create
rake aborted!
Don't know how to build task 'db:sessions:create'

Tuesday, 8 January 2013

[Ebooks] Learn The Hard Way

Các cuốn sách ở đây là những nguồn tài liệu rất tốt cho những ai tự học lập trình. Bắt nguồn từ sự thành công của cuốn Learn Python The Hard Way , tác giả đã sản xuất hàng loạt các cuốn sách khác cùng style với cuốn trên.  Các cuốn sách đều có thể xem online ở dạng HTML.
Với triết lý: "Less Talk, More Code", các cuốn sách này ngày càng trở nên nổi tiếng :D

Wednesday, 2 January 2013

Cùng học ruby

Như bài viết trước vừa nói, tớ học ruby theo kiểu nhảy vào code vì bản thân RAM bé, ko hợp với kiểu nhồi sách rồi mới làm.

Cùng tên với rất nhiều topic trên các forum mạng, nhưng đây sẽ không phải kiểu kêu gọi, đăng ký và bỏ đấy :v

Mục tiêu của tớ là học ruby để config chef. Nhưng cái mục tiêu này hơi mơ hồ, vì thật ra tớ chưa dùng chef nên cũng không rõ phải học bao nhiêu, vậy nên mục tiêu đổi thành: học dùng các khái niệm thuộc core của ruby tương đương với python như list, dict, if else, for, while, viết function, viết class, cài đặt môi trường để code, sử dụng vài thư viện ...

Bạn cũng nên set 1 cái mục tiêu trước khi nhảy vào học: ví dụ như học ruby + ruby on rail để làm 1 cái blog cho bản thân, để giải 20 bài PE ... :v

Nội dung chính của post này:
- chia sẻ tài liệu
- giải thích thắc mắc
- chia sẻ kinh nghiệm

Ngày số 1:

Friday, 9 November 2012

Cài đặt và quản lý ruby qua rvm


RVM - Ruby Version Manager. Để cài đặt và quản lý được nhiều version của ruby trên máy tính.
Tại sao rvm -> Without RVM, it’s pretty difficult to have more than one version of Ruby on your computer - tutsplus.com

1. Cài đặt

$ sudo apt-get install build-essential git-core curl
Cho các máy chưa có các gói này

$ curl -L https://get.rvm.io | bash -s

Để cài rvm, yêu cầu máy đã có sẵn gói curl

echo '[[ -s "/home/lamdt/.rvm/scripts/rvm" ]] && source "/home/lamdt/.rvm/scripts/rvm"' >> ~/.bashrc

Để thêm dòng [[ -s "/home/lamdt/.rvm/scripts/rvm" ]] && source "/home/lamdt/.rvm/scripts/rvm" vào file ~/.bashrc (làm tay cũng được).
Lưu ý: Thay lamdt bằng tên user.


$ rvm requirements

Để cài các gói rvm yêu cầu cho linux

$ rvm list known
Để liệt kê các version của ruby có thể cài