Một số thủ thư chuyên lẫn không chuyên của các trường học mầm non, phổ thông đang cảm thấy xoắn lên vì việc cần phải đáp ứng tiêu chuẩn Mức độ 1, Mức độ 2 trong hoạt động thư viện. Riêng về phần mềm, hiện có khoảng chục phần mềm để quản trị thư viện với quy mô khác nhau.
Có những điều nhiều thủ thư, nhân viên, cán bộ thư viện băn khoăn đó chính là liệu phần mềm mà mình lựa chọn có đáp ứng được Thông tư 16/2022/TT-BGDĐT? Đáp ứng rồi vấn đề tiếp theo đó là trường có chịu bỏ tiền ra mua hay không? Có phần mềm nào miễn phí?
Bài viết này là một dạng quảng cáo trá hình (nhưng vì giả trân quá nên… hiện hình luôn) nhưng có thể đáp ứng nhu cầu của bạn.
Bạn sẽ thấy rằng dù trình độ nghiệp vụ thư viện bản thân hết sức ABC đi nữa, sau khi đọc xong bài viết bạn cũng vỡ ra nhiều điều, có thể tự tin chọn ngay một phần mềm cùi bắp đủ dùng với chi phí vô cùng rẻ, lại được hỗ trợ tốt trong quá trình sử dụng suốt vòng đời sản phẩm.
Có thể nói, bạn khó tìm thấy bất cứ phần mềm quản trị thư viện tích hợp nào trên thị trường có hỗ trợ khách hàng tốt như SLiMS Fork bởi vi chúng tôi kiếm tiền thông qua dịch vụ hỗ trợ khách hàng, không phải qua việc bán sản phẩm phần mềm nên bạn thoải mái yêu cầu được trợ giúp mà không phải ở trạng thái băn khoăn là không rõ còn được hưởng chính sách hỗ trợ hay không.
Nguyên tắc liên thông thư viện
Cái này có thể nói thuộc loại “biết rồi, khổ lắm, nói mãi”. Thực sự về mặt kỹ thuật, trừ những phần mềm thư viện dùng cho vùng sâu vùng xa, thuộc loại cài trên máy tính không có kết nối mạng mới không đáp ứng được nguyên tắc này mà thôi.
Nhưng, “nói dzậy mà hổng phải dzậy” đâu à nghen. Để chúng tôi giải thích cho bạn rõ vì sao là như vậy? Bởi vì trong máu người Việt chúng ta, tính cát cứ thừa hưởng từ thời “Loạn 12 sứ quân” vẫn còn.
Rất hiếm có thư viện nào muốn liên thông, lý do nói ra thì buồn cười nhưng họ quá cùi bắp. Nói trắng phớ, thô thiển: lèo tèo vài cuốn sách, vài cái bàn. Nói hoa mỹ hơn: tài nguyên thông tin, bộ sự tập nghèo nàn, việc bổ sung vốn tài liệu chưa được coi trọng. Vì vậy, liên thông khác nào “vạch áo cho người xem lưng”?
Đó là chưa kể nhiều lãnh đạo thư viện hoàn toàn mù tịt về công nghệ. Ngay cả những thủ thư, cán bộ, nhân viên thư viện, thư viện viên lâu năm trong nghề, làm nghiệp vụ gọi là “có sừng có gọng”, kinh nghiệm đầy mình thì cũng không biết được liên thông thư viện thực sự nó là như thế nào? Nếu có thấy, chỉ là câu chữ xuất hiện trên văn bản, trên các báo cáo.
Vậy thì, để Mỵ giải thích cho các bạn rõ như thế này:
Ở trên là mô hình dạng điểm – điểm. Tức là không có một trung gian hoặc một nơi tập trung. Trong thực tế có mô hình khác đó là có một điểm kết nối theo mô hình sao như sau:
Liên thông là sao? Hiểu đơn giản giống như bạn đang chat trên một group Zalo hoặc Facebook Messenger mà thôi.
Điều kiện cần đó là có kết nối mạng, điều kiện đủ đó là các thành viên phải online. Vậy thì, bạn hãy chỉ cho tôi biết được bao nhiêu trường học phổ thông ở Việt Nam có những chiếc máy tính chạy 24/7 để mà các thư viện trường học khác kết nối đến? Hoặc có sở giáo dục, phòng giáo dục nào có hệ thống máy tính nối mạng chạy phần mềm phục vụ cho các trường học? Không, ngay cả những đơn vị sử dụng các bộ phần mềm quản lý trường học có nhều mô-đun của các đơn vị lớn như Viettel, VNPT, FPT cũng chỉ có một vài mô-đun nào đó dùng điện toán đám mây mà thôi.
Mô-đun vê quản lý thư viện, nói thẳng ra là “con ghẻ” của trường, nên chẳng có mấy trường học quan tâm đâu. Nếu có, bạn hỏi xem,, liệu có dự án nào tài trợ cho trương hoặc trường đó là trường kiểu mẫu, điển hình của tỉnh, của huyện đó để lấy ra như một mô hình trình diễn hơn là thực chất?
OK. Vậy qua đoạn trên, các bạn thấy rằng chỉ cần có chút kiến thức về giao thức giao tiếp mạng máy tính, cộng với “quyết tâm chính trị” đủ cao, bạn sẽ áp dụng ngay cái này cho thư viện. Nhưng rồi phải giao lưu với các lãnh đạo thư viện khác mới có thể liên thông, chứ có một mình thư viện bạn làm tốt, thì cũng giống như đứa trẻ đang ở độ tuổi ngồi nói chuyện một mình mà thôi. Liên thông nghĩa là có ít nhất từ hai đơn vị trở lên và dữ liệu thư viện phải chảy được hai chiều, có qua có lại.
Phần mềm chúng tôi đặt tất cả trên cloud. Các server chúng tôi đặt ở các data center trải dài 3 miền đất nước cùng hệ thống CDN được áp dụng để có thể trong vòng 3 giây là phản hồi các yêu cầu nghiệp vụ, yêu cầu của bạn đọc trên phần mềm.
Quản lý và nghiệp vụ thư viện
Phần mềm thư viện đối với thư viện tất nhiên cũng giống như phần mềm kết toán đối với phòng kế toán của doanh nghiệp vậy. Không cần phải nói nhiều, SLiMS Fork là phần mềm hàng trăm thư viện ở Indonesia sử dụng, nó mà không đáp ứng được thì người ta đã dẹp bỏ từ lâu rồi.
Các chuẩn về thư viện bạn tra cứu thấy trên trang Thư viện Quốc gia Việt Nam đều có mặt trong phần mềm SLiMS Fork. Điều tuyệt vời hơn đó là vì chúng tôi quản trị từ A đến Z từ phần cứng, giao thức mạng và cả các dữ liệu của nhiều đơn vị khách hàng khác nhau nên bạn chỉ cần ký kết liên thông với đơn vị khác mà nếu họ cũng sử dụng phần mềm của chúng tôi thì việc kết nối là diễn ra trong ngày.
Trong thực tế, ngoài những phần mềm mang tính mô phỏng, đồ án sinh viên mang tính thử nghiệm hoặc do những công ty làm ăn không đàng hoàng mới sản xuất ra những phần mềm không áp dụng các nghiệp vụ, còn không, làm sao họ có thể mang bán được, có lẽ chỉ có những công ty dạng “sân sau của quan chức biến chất” nào đó mới dám bán phần mềm không dùng được.
Phần mềm chúng tôi rất dễ sử dụng, chúng tôi dám nói rằng một học sinh lớp 4 có thể sử dụng dễ dàng sau một tuần dưới sự hướng dẫn của chúng tôi thì không lý do gì những người được cử làm thư viện không thể sử dụng được hoặc kêu than. Chúng tôi sẽ tổ chức những khóa đào tạo và có chấm điểm để các thủ thư được dịp cọ xát, để nâng cao trình độ, kỹ năng về máy tính và nghệp vụ thư viện.
Tiêu chuẩn về tài nguyên thông tin
Điều tuyệt vời nhất với phần mềm mà chúng tôi blah blah nãy giờ ở đâ đó là có khả năng quản lý 2 trong 1. Tức là bạn có thể quản lý sách giấy, băng đĩa, các vật mang tin có trong thư viện và cả những sách điện tử ebook, các thứ thuộc “thư viện ảnh”, các bài hát, clip “kỷ niệm truyền thống” của nhà trường, ngay cả giáo án điện tử, bài giảng điện tử của giáo viên.
Quái lạ hơn là nếu nhà trường định giao cho thư viện quản lý luôn các file văn bản, biểu mẫu, đó cũng là việc quá đơn giản, thủ thư có thể mỗi ngày đưa lên khoảng 30 văn bản kèm với mô tả tóm tắt để cho cả trường dùng. Chưa hết, có một vài phần mềm tiện ích, trường lại không có phòng tin học, có thể giao luôn cho thư viện.
Tài nguyên thông tin nếu chỉ là những thứ thủ thư phải làm đề án để mua về thì cái đó theo nghĩa quá hạn hẹp. Tài nguyên thông tin mở hiện nay nhiều cái rất tốt miễn phí, thu thập dễ dàng, chỉ cần có chút kỹ năng, yêu nghề là có thể làm cho thư viện vô cùng hấp dẫn. Điều đó chỉ có thể làm được nếu phần mềm cũng có chức năng để gặt hái những tài nguyên Internet một cách dễ dàng.
Thay cho kết luận
Vì là thủ thư, từng giải nghệ nhưng cảm thấy những gì chúng tôi thu lượm được trong những năm mài đũng quần ở các thư viện chúng tôi thấy rõ ràng là có thể mang chia sẻ với đồng nghiệp. Góp mỗi người một tay thì rồi phần mềm thư viện đến ngày sẽ liên thông một cách dẽ dàng, mạch lạc và thực tế hữu ích cho bạn đọc.
Túm cái quần chip lại, bạn có là người muốn thư viện phát triển, muốn đáp ứng tốt hơn nhu cầu thông tin của bạn đọc thư viện, cũng như điều kiện làm việc của thủ thư hay không mà thôi. Nói điều này làm tôi nhớ đến ông Trần Bình Minh (giờ đã là Giám đốc VTV) từ ngày xa xưa khi ông xuất hiện trên tivi để tuyên truyền về môi trường với slogan “điều đó tùy thuộc vào bạn mà thôi”. Nào, vậy nhé, xin hãy sáng suốt chọn cho thư viện của bạn một phần mềm xịn sò. Nếu bạn thuê phần mềm SLiMS Fork của chúng tôi hẳn bạn sẽ thấy rằng mình đã quyết định đúng đắn, thông minh.
Đây là một phần mềm được mông má lại từ phần mềm SLiMS của Indonesia. Nếu là người lạc quan, bạn có thể hiểu rằng chúng tôi đã nỗ lực chỉnh chọc vào đó để phù hợp với điều kiện Việt Nam. Nếu bạn là người bi quan, bạn có thể xem SLiMS Fork là một sự “cải lùi” của SLiMS 9 Bulian của Indonesia.
SLiMS Fork chạy hoàn toàn trên nền Web
Điểm qua chút xíu về phần mềm này liên quan chút xíu đến kỹ thuật, đến CNTT nhưng cũng dễ hiểu cho bạn là người ngoại đạo. Nó như sau:
Được viết bằng ngôn ngữ PHP, một ngôn ngữ lập trình Web rất thông dụng nhưng cũng bị cười nhạo nhiều nhất. Hết năm này đến năm khác, người ta dự báo đó sẽ là năm ngày tàn của PHP, nhưng hơn 20 năm trôi qua rồi ngôn ngữ này vẫn phục vụ tốt cho hàng triệu, nếu không muốn nói là hàng tỉ trang web trên thế giới này.
SLiMS Fork được chúng tôi (những người trong Nhóm KACBT) lấy mã nguồn từ phần mềm SLiMS 9 Bulian của Indonesia về để bỏ bớt một số chức năng chưa cần thiết ở Việt Nam, và cũng thêm một số chức năng mà SLiMS 9 Bulian chưa có: bạn đọc tự đăng ký trực tuyến, tự lấy lại mật khẩu khi quên, tích hợp việc quản trị thư viện truyền thống và tài liệu số 2 trong 1 để thuận tiện hơn với các thư viện quy mô nhỏ và vừa (dưới 50 ngàn đầu sách) ở Việt Nam.
Áp dụng những tiêu chuẩn hiện đại của thế giới web ngày nay nhưng: Single Page, Web API, HTTPS/ HTTP2… để giúp trải nghiệm người dùng mượt mà như phần mềm desktop.
Người dùng với tư cách thủ thư không cần phải cài cắm gì vào máy tính nếu đang sử dụng Windows 10 hoặc Windows 11 hoặc máy tính Apple, máy tính IBM tương thích sử dụng một Distro Linux thông dụng.
Người dùng với tư cách bạn đọc truy cập dễ dàng vì giao diện tùy biến nên hỗ trợ truy cập tốt trên điện thoại, máy tính bảng.
SLiMS Fork đáp ứng yêu cầu của trường học, hỗ trợ thầy cô giáo
Như đã giới thiệu trước rằng SLiMS Fork có khả năng quản lý sách giấy và tài liệu số 2 trong 1. Đoạn này chúng tôi giới thiệu sâu hơn để bạn rõ.
Tài liệu số có thể ở nhiều dạng như file PDF, Word, Excel, file âm thanh, file video,… và nếu cần, để thuận tiện hơn cho giáo viên, một file nén dạng Zip, Rar có thể được upload lên để có thể “tải về một cục” mà không bị phân tán, vụn vặt khó sử dụng do thiếu file.
Như vậy, SLiMS Fork kiêm luôn chức năng quản lý giáo án điện tử, bài giảng điện tử của giáo viên. Khi thư viện quản lý cái này, nhà trương có thể hướng dẫn giáo viên gửi cho thủ thư qua email để quản lý tập trung, dễ báo cáo hàng học kỳ, năm học.
Các ưu điểm mà SLiMS Fork tự hào so với các phần mềm khác
Mô hình thuê bao hiện đại: bạn chỉ trả tiền cho những gì bạn sử dụng. Hay nói đúng hơn, xài bao nhiêu trả bấy nhiêu mà không cần phải bỏ ra một cục tiền tốn kém để rồi trùm mền để đó hoặc sử dụng thấy không ổn nhưng cũng không thể bỏ được để dùng phần mềm khác.
Giá cả: vô cùng hợp lý. Chúng tôi ước tính nếu trường học có dưới 500 học sinh, đội ngũ giáo viên dưới 100 người thì thuê bao phần mềm chỉ tương đương một tháng lương của giáo viên tốt nghiệp đại học đi dạy được 3 năm.
Kết xuất báo cáo: chúng tôi làm sẵn một số báo cáo và luôn cập nhật thêm mẫu báo cáo mới dựa trên yêu cầu cụ thể của khách hàng. Nếu bạn không tìm thấy mẫu báo cáo, chi cần gửi yêu cầu, ngày hôm sau mẫu báo cáo sẽ xuất hiện để bạn sử dụng ngay mà không phải chịu rào cản rất quan liêu khi sử dụng các phần mềm thư viện đặt mua hàng trăm triệu đồng.
Mượn thêm tài nguyên: trong trường hợp bạn cần đáp ứng một yêu cầu lớn sức mà bạn lo lắng gói thuê bao thông thường bạn đang thuê không thể tải nổi, chúng tôi sẽ cho mượn tài nguyên để chịu tải để bạn có thể tự tin rằng không bị “bể show” khi nhà trường đang thuyết trình về thư viện.
Bạn là thủ thư? Hưởng lợi rất nhiều từ SLiMS Fork
Chúng tôi là sẵn một số form mẫu nhập lệu trên Excel để bạn có thể sử dụng ngay trước khi thuê phần mềm SLiMS Fork.
Hỗ trợ thêm về nghiệp vụ trong quá trình sử dụng: bạn có thể chat với chúng tôi để được hướng dẫn onsite ngay khi biên mục hoặc sử dụng cá mô-đun như quản lý bạn đọc, lưu thông, hoặc kết xuất báo cáo. Những thứ lâu ngày, thảng hoặc mới sử dụng, bạn chưa thể thành thạo/ khó mà thành thạo như công tác kiểm kê, chúng tôi sẽ hỗ trợ đến… tận chân răng.
Chúng ta nói chuyện cùng ngôn ngữ: vì nhóm chúng tôi có người từng làm thủ thư nên bạn không gặp khó khăn để trao đổi vì chúng ta cùng chung ngôn ngữ.
Những phân hệ nào SLiMS Fork trang bị?
Thực ra, với vai trò là người làm nghiệp vụ thư viện, người ta sẽ không thích dạng liệt kê một loạt tính năng để làm gì. Việc này giống với việc bạn có cái xe, mục đích chính là nó đưa bạn đến nơi cần đến, khi dùng nó cảm thấy dễ dàng, thoải mái là được, những tính năng kiểu như đèn tự sáng khi trời tối mà không cần bật, cần gat nước 3D,… có lẽ là phù phiếm, chơi là chính chứ gọi là “xe làm ăn” không cần phải trang bị. Phần mềm thư viện cũng giống vậy.
Phân hệ biên mục
Đây có thể nói là phân hệ trung tâm của mọi phần mềm quản trị thư viện tích hợp. Nếu không có biểu ghi biên mục, sản phẩm được tạo ra từ phân hệ này, vốn tài liệu của thư viện sẽ nằm ngoài phần mềm, và như vậy thì không khác gì một công ty không có sổ sách kế toán. Vì thế, phân hệ này quan trọng, mọi phần mềm thư viện tích hợp đều có.
Điểm đặt biệt của SLiMS Fork, được chúng tôi cải tiến thêm từ mã nguồn gốc đó là khi đính kèm file, lúc này file nếu là dạng sách điện tử ebook, thư viện có thể cho mượn sách này giống như mượn sách giấy vậy. Điểm khác biệt đó là bạn đọc trả sách điện tử mà không cần thao tác của thủ thư, sách hết hạn thì được tự động triệu hồi.
Ngoài ra, phân hệ còn hỗ trợ vài phương thức khác nhau để việc nhập dữ liệu có sẵn vào phần mềm SLiMS Fork dễ dàng, tiết kiệm thời gian, công sức nhập liệu.
Tương tự như nhập liệu đầu vào, phân hệ cũng hỗ trợ việc xuất dữ liệu ra theo vài định dạng khác nhau để tiện sử dụng trong in ấn, làm dữ liệu đầu vào cho phần mềm khác hoặc chuyển sang phân hệ báo cáo để xuất ra dạng có ý nghĩa thống kê, giải trình.
Phân hệ OPAC (mục lục đọc bằng máy)
Nếu như phân hệ biên mục là công cụ để tạo ra một kho danh sách liệt kê những tài liệu của thư viện thì phân hệ OPAC chính là chìa khóa để mở cánh cửa này, bạn đặt chìa khóa ngay cửa để bạn đọc mở khóa vào kho tàng thông tin của bạn.
Chúng tôi đã cải tiến để OPAC có thể tìm kiếm tiếng Việt chính xác hơn, hỗ trợ tiếng Việt không dấu.
Các truy vấn có tốc độ nhanh hơn mà không làm quá tải máy chủ.
Trong tương lai, khi nhiều khách hàng tham gia vào nhóm liên thông thư viện, chúng tôi sẽ làm cho việc tìm kiếm được thuận tiện hơn. Lúc bấy giờ, liên thông thư viện không còn là điều xa vời, chỉ thấy trên các văn bản ngành thư viện mà trong thực tế như thế nào các thư viện chưa hề biết đến ngoài vài thử nghiệm nhỏ lẻ không đi đến đâu.
Ngay trên trang OPAC bạn đọc còn có thể bình luận về cuốn sách để giao lưu cùng với bạn đọc khác. Ngoài ra, bạn đọc cũng có thể đề xuất thư viện bổ sung thêm tài liệu thông qua việc điền form, chat với thủ thư.
Phân hệ lưu thông (cai quản việc mượn – trả tài liệu)
Phân hệ biên mục quan hệ với phân hệ lưu thông trong vai trò nó là nhà bếp chế biến món ăn, còn phân hệ lưu thông là những người trực tiếp phục vụ thực khách.
Ngoài việc cho mượn tài liệu dạng giấy hoặc được chứa trên vật mang tin như CD/DVD, vi phim, vi phiếu thì chúng tôi cải tiến để phân hệ lưu thông của SLiMS Fork cho phép bạn đọc có thể “mượn” các file ebook dạng PDF, Word hoặc các định dạng multi-media.
Chúng tôi cũng đã phát triển một số tính năng rất thú vị, đợi đến khi có thư viện muốn có sự đổi mới phương thức phục vụ sẽ sẵn sàng lắp thêm vào cho hoạt động ngay. Ví dụ như bạn đọc ở xa muốn mượn sách được ship tận nhà như mua hàng trên sàn thương mại điện tử, thư viện có thể làm việc này dễ dàng khi được tích hợp chức năng thanh toán chi phí giao tài liệu qua đường bưu điện hoặc công ty vận chuyển, nhận thanh toán qua ví điện tử hoặc chuyển khoản, thanh toán ngay luôn trên trang thư viện.
Phân hệ bạn đọc
Đây là phân hệ giúp bạn từ bỏ hoàn toàn việc ghi sổ rồi sưu tầm hình ảnh thẻ của bạn đọc, sau đó xếp thành hàng trông tốn diện tích và mang màu sắc cổ xưa, thiếu cơ động đối với một thư viện hiện đại.
Nếu thư viện nơi bạn vẫn còn bị vướng mắc bởi thủ tục giấy tờ buộc phải có sổ sách, đơn giản, phân hệ có chức năng để bạn in ra và đóng thành sổ để sẵn sàng cho việc kiểm tra, báo cáo.
SLiMS Fork cho phép người truy cập đăng ký bạn đọc ngay trực tuyến và có thể đăng nhập sử dụng thưu viện ngay mà không đợi chờ đến ngày nhận thẻ. Việc tới thư viện nhận thẻ chỉ là thủ tục, có thể bạn đọc lúc nào rảnh tới thư viện cũng không thành vấn đề.
Phân hệ từ điển
Bạn sẽ cảm thấy lạ tai khi lần đầu nghe phân hệ này? Nó là cái gì vậy? Với phần mềm khác nó có thể nằm phân tán ở các phân hệ khác. Nhưng dễ hiểu nếu bạn là dân thư viện chính hiệu: đó chính là “dữ liệu có kiểm soát tính nhất quán“.
Nếu bạn là một thư viện làm việc bài bản, khoa học, những ngày đầu tiên khi bắt đầu nhập liệu bạn sẽ phải nạp thông tin vào phân hệ này để ngăn ngừa trường hợp tùy ý thêm vào trong quá trình biên mục dẫn đến phá vỡ tính nhất quán, tạo ra dự liệu rác làm cho về lâu dài thông tin thư viện trở nên một mớ hỗn độn, kém giá trị.
Phân hệ kiểm kê
Phải nói rằng phân hệ này trông có vẻ gì đó đơn giản, nghèo nàn chức năng nhưng nó lại là phân hệ khiến các thủ thư bối rối nhiều nhất bởi một số lý do sau:
Kha khá thư viện hầu như không có chế độ kiểm kê định kỳ theo năm nên nhiều năm mới kiểm kê một lần. Những người làm kiểm kê hầu như không hiểu được mục đích của kiểm kê.
Tuy hiểu được mục đích của kiểm kê nhưng số liệu có được nói lên điều gì, ngay cả lãnh đạo thư viện kinh nghiệm nhiều năm, thuộc loại trí thức Tây học đức cao vọng trọng nhiều lúc cũng bó tay.
Số liệu kiểm kê có chính xác hay không không ai rõ, hoặc tạo ra mâu thuẫn giữa thư viện với bê quản lý tài sản của cùng đơn vị chủ quản.
Chính vì tính chất của kiểm kê là liên quan đến tài sản nên nó có ý nghĩa về kinh tế, về hiệu quả, về các vấn đề bảo vệ, khai thác tài sản hiệu quả ra sao nên nhìn chung kiểm kê là quan trọng nhưng ít người hiểu được thực sự nó là gì khi chỉ là những người thừa hành.
Do vậy, mỗi khi các đơn vị sử dụng SLiMS Fork tổ chức kiểm kê, chúng tôi sẽ hỗ trợ tận tình vì từng có kinh nghiệm thực hiện kiểm kê ở vài thư viiện lớn, phức tạp. Vì chúng tôi là những thủ thư từng trải qua nhiều việc khác nhau ở thư viện, từng phải chứng minh, giải trình. Thậm chí, có thành viên nhóm từng phải tham gia một số khóa học để nắm vấn đề, giúp cho thư viện đưa ra những báo cáo tâm phục khẩu phục.
Phân hệ hệ thống
Cái này nói quan trọng cũng được, mà không quan trọng cũng không sai. Chỉ là đến lúc “đụng chuyện” vào mới thấy như máy tính của bạn mà hỏng Windows không khởi động được vậy đó.
Theo dõi blog này một thời gian hẳn bạn cũng biết một điều rằng nhóm KACBT có mông má một phần mềm trong lĩnh vực thư viện để sử dụng cho chính mình. Sau đó, có một vài đơn vị cảm thấy thích phần mềm này nên nhóm cũng chia sẻ, cho thuê phần mềm thư viện. Câu chuyện liên quan đến bug được chia sẻ cho vui như sau.
Bug trong lập trình, chuyện thường ngày ở huyện
Bug nghe như con bọ nhưng nó lại là một thứ liên quan đến máy tính. Vì sao người ta sử dụng chữ bug? Nó có cả một lịch sử lỗi phần mềm khá thú vị. Kacbt không muốn bê lịch sử đó vào đây, bạn tiện qua bên Wikipedia để xem nhé.
Vậy thì việc xử lý lỗi phần mềm cũng hình dung giống như việc bắt, gắp con bọ ra khỏi máy móc hoặc vật chủ nếu đó là con bọ ký sinh. Việc bắt này dĩ nhiên là mang tính tích cực, có dụng ý tốt chứ không phải xấu.
Việc phần mềm có lỗi, có bug là rất thường xảy ra, ngay cả một lập trình viên kỳ cựu vẫn có thể dính phải lỗi như thường bởi có những lỗi thuộc chủ quan của người lập trình không đủ giỏi, nhưng có những lỗi do nhiều nhân tố tác động nên không ai có khả năng lường trước được mọi việc.
Những ngộ nhận đáng buồn cười
Nếu bạn có thời gian lang thang các cộng đồng lập trình viên trao đổi với nhau bạn sẽ thấy có một tình trạng rất vừa thú vị nhưng vừa cảm thấy bực mình nếu bạn đã có một số năm viết mã.
Tại sao lại có chuyện vừa thú vị vừa bực mình cơ chứ? Đúng như vậy đó. Có thể bạn nhớ lại những ngày bạn mới chập chững vào nghề viết code hoặc học lập trình? Nhớ lại, bạn mới thấy là có những câu hỏi, những chia sẻ hoặc “phát hiện động trời” khi một bạn học sinh, sinh viên nói rằng cô ấy hoặc anh ấy phát hiện ra lỗi trong phần mềm nào đó. Họ còn khẳng định chắc như đinh đóng cột rằng họ đã kiểm tra rất kỹ rằng chương trình họ viết hoàn toàn chính xác, không có khả năng tạo ra lỗi, mà chỉ có thể là do IDE, trình biên dịch hoặc hệ điều hành.
Ngày đó bạn có từng vậy? Nếu không, bạn là một trong những kẻ may mắn quá đỗi hoặc già trước tuổi nên không còn những phút trẻ trâu nữa.
Cũng có ngộ nhận khác đó là khi đã được sửa lỗi bởi người có kinh nghiệm hơn, như trưởng nhóm, thầy giáo chẳng hạn, phần mềm sẽ hết lỗi. Điều này là có khi chỉ trong thời gian ngắn mà thôi. Một ngày nào đó có thể hóa ra lỗi đã được làm cho nghiêm trọng hơn thay vì được sửa.
Có bug ngay trong SLiMS Fork
Phần mềm SLiMS Bulian của Indonesia được nhóm Kacbt đục đẽo cải tiến thêm một số tính năng để phù hợp với nhu cầu sử dụng. Trong quá trình này chúng tôi thừa nhận rằng mình làm cho phần mềm trở nên mất ổn định hơn dù có thể có những chức năng như ý.
Minh họa một bug có vẻ ngớ ngẩn
Nếu đúng logic ra đó là bạn đọc chỉ được mượn sách khi tư cách thành viên hợp lệ, thẻ bạn đọc cũng còn hạn sử dụng. Đàng này, lỗi lập trình đã có sự kiểm tra tính hợp lệ của bạn đọc trước khi thực hiện giao dịch nhưng cách nào đó người viết mã đã “quên” việc tắt nút cho mượn sách.
Lỗi này sẽ dẫn đến việc bạn đọc vẫn mượn được sách như bình thường. Có khả năng vẫn chẳng có gì xảy ra cho đến ngày cuốn sách được trả về lại thư viện. Nhưng cũng có thể xảy ra nhiều việc rắc rối như khi trả lại thì lại bị chức năng cho trả sách cảnh báo rằng không thể thực hiện giao dịch bởi vì bạn đọc bị treo tư cách thành viên, thẻ hết hạn.
Giả sử lỗi trên mà liên quan đến tiền bạc như ở ngân hàng, cửa hàng, rạp chiếu phim… không rõ chuyện gì xảy ra nhỉ? Ông bà ta có câu “sai một con số bán một con trâu” hoặc “sai một ly, đi một dặm” là nhằm để tự răn mình và răn các thế hệ sau cần phải cẩn thận hơn trước việc ăn nói, viết lách.
Có những lỗi lập trình rất đắt giá, hàng triệu đô la mất đi, mà có khi chỉ là lỗi… chính tả.
Để hạn chế bug người ta làm gì?
Thiệt hại liên quan đến bug gây ra những hậu quả tai hại. Do đó, người ta, những lập trình viên cần phải nghĩ ra cách để phòng ngừa theo phương châm “phòng bệnh hơn chữa bệnh”.
Trong thực tế, khi làm phần mềm có tính phức tạp một chút, có từ hai người chung sức trở lên hoặc chỉ một người nhưng luôn tâm niệm “thực hành tốt” thì việc kiểm tra trước khi phát hành là cần thực hiện.
Người trực tiếp viết code sẽ phải theo một quy trình các bước phát triển phần mềm khá nghiêm ngặt. VIệc test trong quá trình viết code được áp dụng ngay, thường có một phương pháp khá phổ biến được gọi là unit test.
Khi phần mềm đã thành hình hài, chạy được rồi thì có cả một đội ngũ thực hiện việc test phần mềm. Việc test phân làm 2 nhóm chính đó là test thủ công và test tự động. Dù là test nào đi nữa cũng có con người thực hiện chứ chưa thể giao phó hoàn toàn cho máy tính xử lý luôn được.
Test thủ công được thực hiện khá giống với người dùng thực sự sẽ sử dụng phần mềm đó trong tương lai, các chức năng dành cho người dùng từ thông thường cho đến quản trị viên,… test từ giao diện sử dụng cho đến xử lý số liệu, báo cáo… Test thủ công thì mất nhiều thời gian hơn
Trong thực tế, nhiều phần mềm cần được test tự động trước rồi sau đó trải qua bước test thủ công trước khi phát hành.
Ngày nay các phần mềm vận hành có liên quan đến mạng Internet nhiều nên người ta còn có thêm test về bảo mật. Việc này có khi phải thuê công ty chuyên về bảo mật làm bởi vì nhiều đơn vị phát triển phần mềm không đủ khả năng thực hiện.
Gợi mở: ngoài bug phần mềm, có những cái được gọi là “tính năng” nhưng với người dùng đó là thứ rất bực mình. Bạn có thể tìm hiểu thêm về việc tại sao khi nhập đúp chuột để chọn một từ trong Word nói riêng, vài phần mềm soạn / hiển thì thảo văn bản trên hệ điều hành Windows thì thể nào khi bạn copy dán chỗ khác nó cũng “tặng kèm” cho bạn một khoảng cách phía sau từ đó.
Bạn có từng nghe đến “quả trứng phục sinh” trong phần mềm, trò chơi điện tử chưa? Nếu chưa, giờ là lúc bạn mở mang thêm chút kiến thức vui vui nhé.
Kết bài: trong thực tế cũng đã từng xảy ra bug nhưng rồi trở thành tính năng được yêu thích.
Cuối tuần rảnh rỗi, sau khi giải quyết được đoạn code quá trần ai khoai củ.. đành đi cà khịa chơi. Cái đoạn code này được viết ổn, nhưng phải sau hơn một tuần ngồi vò đầu bứt tóc debug, trace từng dòng để xem logic sai lạc chỗ nào mới phát hiện hóa ra… cấu hình sai, code không liên quan.
Khi bạn nghĩ ra trò bẩn bựa, nó xuất hiện ngay
Đầu tiên mở trình duyệt web lên xem có gì bẩn bựa? Bỗng nhiên trình duyệt hỏi có đồng bộ bookmark
Dù không hiểu lắm về đồng bộ ở đây là làm gì, vẫn thử OK xem sao. Vậy là mất chừng 20 giây, bookmark đã được đồng bộ về, ra một mớ như sau:
Không có gì là bẩn bựa… chỉ là quả lừa
Click ngẫu nhiên lên một bookmark cũ
Cái blog cũ xưa của một ông lương y nào đó tên là Thuận Nghĩa. Nói thật, không thể nhớ được ông này là ông nào, từng ghé blog của ông từ thuở nào. Có lẽ đã lâu lắm rồi, từ thời phong trào viết blog hãy còn là ở những ngày vàng son cũng nên. Kệ, cứ lướt lướt tí xíu…
Nhặt được 2 cái hình này:
Hahaha, đại ca William Sydney Porter có đội mồ sống lại, ông cũng không ngờ rằng tác phẩm của mình có thể truyền cảm hứng khắp năm châu, bốn bể… đến mức ngày nay bọn trẻ trâu lấy ra để troll nhau.
Vậy là đi đứt buổi sáng sau khi lướt web đọc lan man… vài chục trang web dạng “khai quật mộ cổ”.
Bối cảnh của việc Luật Thư viện đã ra đời, các văn bản hướng dẫn, thông tư… và chủ trương học tập suốt đời của nhà nước, chuyển đổi số này nọ được “phóng tác” rất lâm li bi hài dẫn đến việc người ta muốn làm sống lại thư viện. Nhưng, biết rồi, khổ lắm, nói mãi. Đây là một bài viết dạng rất tếu táo, hỗn loạn, bạn đọc vui lòng đọc giải trí chứ không phải để bực mình à nghen.
Quảng cáo ngay khi vào bài cho khí thế
Chúng tôi, Nhóm KACBT có “mông má” một phần mềm thư viện từ một phần mềm của Indonesia để đáp ứng được nhu cầu về một phần mềm thư viện tích hợp ILS của hầu hết các thư viện dưới 50 ngàn cuốn sách, dưới 15 ngàn bạn đọc. Bạn có nhu cầu hãy liên hệ với chúng tôi ngay và luôn. Phần mềm dạng này cho thuê, giá cả rất mềm, và rất dễ sử dụng cho những ai biết cầm chuột máy tính, trình độ học vấn lớp 4.
Những ưu điểm của phần mềm thư viện SLiMS Fork của chúng tôi đó là bạn có thể quản lý thư viện truyền thống và thư viện số trong 1 giao diện. Chưa kể, nếu cần, chúng tôi tặng kèm bạn một trang web đơn giản, hiệu suất cao để bạn làm trang thông tin thư viện luôn. Bạn muốn xem qua để hình dung phần mềm chạy nhanh xịt khói và ổn định ra sao, hãy click VÀO ĐÂY.
Một điều rất… điên khùng khi bạn thuê phần mềm của Nhóm KACBT đó là bạn được hỗ trợ bởi những thủ thư, những người làm thư viện thực sự chứ không phải là công ty phần mềm nào mà phần mềm thư viện chỉ là một trong những món trên menu của họ đâu. Chúng tôi chỉ có món duy nhất là phần mềm quản lý thư viện tích hợp + thư viện số = hai trong một mà thôi.
Và vì phần mềm thuê bao online nên lỗi gì là chúng tôi sẽ sửa tức thì cho bạn hoặc có giải pháp để bạn tiếp tục công việc mà không bị gián đoạn công việc. Cũng rất kinh dị đó bạn bỏ tiền ra thuê, 10 phút sau khi chuyển tiền bạn có thể sử dụng. Quái dị hơn, bạn có thể dùng thử 30 ngày mà không cần trả đồng nào. Quái lạ hơn nữa, đó là tuy thê bao hàng năm nhưng đến một ngày nào đó có công ty nào đó chào mời phần mềm xịn sò hơn, bạn muốn hủy thuê với chúng tôi, bạn cũng không cần phải nêu bất cứ lý do nào, chúng tôi hoàn lại tiền cho bạn những ngày trong năm mà bạn chưa dùng.
Phần mềm? Đi đâu loanh quanh cho đời mỏi mệt
Người viết bài này dám nói rằng khá buồn cười về chuyện tin học hóa, tự động hóa ngành thư viện. Mặc dù trên các báo cáo luôn nêu ra những nỗ lực, cố gắng rất nhiều của cả tập thể ngành thư viện, của nhiều công ty công nghệ có cung cấp giải pháp phần mềm thư viện… nhưng đến nay sau gần 1/4 thế kỷ từ ngày CDS/ISIS hãy còn chạy trên nền MS-DOS tới nay, mọi thứ đều chỉ có bề nổi mà chưa đi vào chiều sâu thực sự. Nói cách khác, thiếu sự hữu ích thực sự hoặc đầu tư lãng phí phần nhiều.
Bạn đừng nói rằng gã này không có tính xây dựng nhé. Gã từng là một thủ thư và thử nghiên cứu về cách chuyển đổi phần mềm, mua sách cũ về lập trình để có thể viết được phần mềm… nhưng nói thật là có những cái dạng làm việc tập thể thì cá nhân xem ra chỉ là muối bỏ bể mà thôi.
Cho đến hiện nay, cứ tạm đồng ý với nhau rằng các thư viện tỉnh, thư viện đại học đã 100% hoàn tất quá trình đưa phần mềm quản lý thư viện tích hợp integrated library system (ILS) đi nhưng “giấc mơ liên thông” vẫn là một câu chuyện dài và… bạn đang quay về ngày xưa xem phim hoạt hình Ну, погоди!
Phát hiện chuyện… động trời
Hóa ra nhiều thư viện huyện gần như chỉ là một tủ sách. Hỏi người dân ở các thị trấn có đặt thư viện, không có tới 1% người dân biết thư viện nằm ở đâu. Nếu chỉ tập trung vào hỏi những người được xem là có chút trí thức/ sách vở, con số này cũng không quá 5%. Ui, vậy cái “thiết chế văn hóa” này là thế nào? Hài hước tí, thiết này có lẽ là… cục sắt?
Rồi đến chuyện các thư viện trường phổ thông thì sao nhỉ? Tình trạng cũng hẻo luôn không biết thế nào đây. Từng có bạn làm thư viện trường phổ thông, sau khi trò chuyện, các bạn ấy nói mang tiếng là nhân viên thư viện nhưng công việc các bạn ấy rất ít liên quan đến thư viện. Chưa kể là các bạn ấy kiếm thêm bằng công việc phụ giáo viên chấm điểm.
Rồi thì chưa kể là nếu thử xem những trường trung cấp, cao đẳng, có những trường không có thư viện luôn hoặc chỉ là một cái phòng đọc sách có vài trăm cuốn sách cũ mèm để đó. Nói chung là không có gì để có thể gọi là thư viện cả.
Nguyên nhân không phải là phần mềm
Từng phải là người trực tiếp sử dụng, hướng dẫn người khác sử dụng phần mềm thư viện, nên người viết bài này có vài chia sẻ sau:
Phần mềm nào cũng có cái được và cái chưa được như bất kỳ sản phẩm nào trên thế giới này.
Người dùng có người hài lòng, có người thấyy tạm, có người bực mình.
Dù bạn có dùng đến hay không, phần mềm sẽ sớm lỗi thời theo thời gian, cùng lắm 5 năm từ lúc mua
Giá phần mềm nhìn chung quá mắc. Cái sự mắc ở đây không bởi giá cao bởi vì phần mềm dạng chuyên dụng khó bán đại trà được như Windows, Office thì giá cao là không bàn cãi. Mắc ở đây nghĩa là khai thác quá ít. Giá phần mềm rẻ nhất khoảng 15 triệu, mỗi năm dùng có khoảng 35 lần, cứ cho rằng dùng được 5 năm. Tính ra mỗi lần sử dụng là 15.000.000/(35 x 5) = 85.714 đồng/ lần.
Và cũng từng là người cung cấp phần mềm, giải pháp thư viện từ phần cứng, phần mềm, người viết bài cũng có vài chia sẻ thế này:
Nhiều đơn vị mua để đối phó với kiểm định, họ không thực sự muốn dùng phần mềm hoặc muốn dùng thì cũng chẳng có tài liệu để quản lý.
Phần mềm được mua trong gói giải pháp nhiều tiền, nhưng nó chỉ là thứ đi kèm với những phần cứng mà ít khi là một gói độc lập.
Phần mềm nhiều khi có những lỗi khá ngớ ngẩn mà bên đơn vị phát triển phần mềm không thể khắc phục.
Sau khi nhìn ngó quanh, chúng tôi có thể kết luận rằng phần mềm đơn giản cũng chỉ là công cụ mà thôi, nó chẳng có tội tình gì để mà kêu ca, ca thán. Vấn đề cốt lõi ở đây là CON NGƯỜI và CƠ CHẾ. Nói thế nào nhỉ? Bạn có bao giờ cảm thấy rất bức xúc nhưng chịu chết, không thể làm gì hơn, và cũng chỉ thở dài mong ngày mai tươi sáng hơn, mọi thứ tốt đẹp hơn lên…
Nhưng rồi, một ngày nào đó bạn bỗng nhiên tủm tỉm cười (có khi kèm cả sự chua chát nữa) rằng mình đã làm cái quái gì? Mình cứ nghĩ mình là tốt việc của mình là đời thêm tốt đẹp, tươi vui rồi, có cần gì phải làm gì thêm. Vậy xin hỏi, bạn làm thư viện thì một năm bạn đọc bao nhiêu cuốn sách, hãy kể ra xem bài học của năm qua nhờ đọc sách, áp dụng vào thực tế là gì?
Thay cho kết bài: mới cách đây 3 hôm mà thôi, một người bạn (cùng thời sinh viên với tác giả bài này) phàn nàn rằng anh ấy vẫn chưa thể sử dụng email được ở chỗ mấy cái CC, BCC là gì nên gọi điện hỏi. Người viết bài chỉ biết nói: 20 năm qua ông chưa từng rời công việc văn phòng, còn tôi đi làm đủ thứ, công việc văn phòng gần nhất cách đây 7 năm. Vậy, nói nghe thì rất lý thuyết kiểu: mọi thứ đều do con người, nhưng quả là đáng ngại cho chất lượng nguồn nhân lực.
Bạn là một Linux user? Có thể bạn chỉ mới bắt đầu với hành trình vọc Linux hoặc dùng trên 3 năm, vấn đề cập nhật kernel luôn luôn là việc làm nhàm chán, tẻ ngắt mà nếu không làm thì lại lo ngại về một lỗ hổng bảo mật nào đó có thể khiến cuộc sống số của bạn đảo lộn.
Bài viết này chỉ như ghi chú lại những gì vừa thực hiện (dù đã biết từ lâu nhưng cứ tưởng đâu phải đăng ký trả tiền subscribe theo năm, nhưng hóa ra là miễn phí cho cá nhân) liên quan đến cập nhật Kernel tự động mà không cần khởi động lại máy. Nào, bắt đầu thôi.
Hãy chắc rằng bạn dùng hệ điều hành Ubuntu và đăng ký Ubuntu One/ Ubuntu Pro
Đăng ký một tài khoản tại https://ubuntu.com/pro
Sau khi có tài khoản nếu hệ thống không tự động login, bạn cần login để truy cập trang https://ubuntu.com/pro/dashboard
Thực hiện một số lệnh trên Terminal của bạn
Lần lượt gõ các lệnh sau mà không cần chớp mắt 😀
Lệnh trên có thể không cần thiết nếu bạn sử dụng Ubuntu 20.04 trở đi. Giả sử bạn có gõ thừa lệnh trên cũng không vấn đề gì, hệ thống sẽ báo đã có rồi.
Lệnh trên thành công sẽ báo: canonical-livepatch 10.6.0 from Canonical✓ installed
Nếu báo lỗi hay gì đó, bạn tự xử lý nhé.
Tiếp tục gõ lệnh:
để cài đặt cái gọi là Ubuntu Pro Client.
Quay lại trang https://ubuntu.com/pro/dashboard thấy như hình:
Copy chuỗi như trên hình (của bạn dĩ nhiên khác chút xíu). Gõ lệnh:
Không cần giải thích, bạn biết sẽ phải thay token của bạn vào câu lệnh ở chỗ khoanh đỏ hình bên trên.
Bạn có thể chờ đợi mất 2 phút để lệnh hoàn tất. Với những thông báo trong quá trình chạy gần như sau:
Tiếp theo, gõ lệnh:
Để thấy được tình trạng của máy bạn. Vậy là xong rồi đó. Từ nay mỗi khi có kernel mới, Livepatch sẽ tự làm nhiệm vụ của mình mà bạn không cần phải restart lại máy.
Cách đây chừng nửa năm người viết bài này có dịp viết một ứng dụng web nhỏ để hỗ trợ nhóm bạn bè quản lý một số file tài liệu để có thể chia sẻ với nhau một cách dễ dàng. Lúc đó viết code chỉ mất tầm 3 ngày là xong. Từ đó đến nay web chạy tốt, ổn định. Nhưng…
Có sự nhầm lẫn trong việc phân quyền
Vì là ứng dụng một người viết code duy nhất nên anh ta cũng là tester và hỗ trợ, hướng dẫn người sử dụng luôn. Tình nhìn xảy ra vì có người dùng có nhiều hơn một thư mục nên đã xảy ra trong quá trình upload có sai sót về kiểm tra nên người nọ đã upload nhầm vào thư mục người kia.
Điều khôi hài hơn là trong việc phân quyền nhầm người ta đã không thể download tài liệu của mình đưa lên nhưng lại download được tài liệu khác.
Trong quá trình viết code có kiểm thử, nhưng khó bao quát được hết các tình huống, khi sử dụng một thời gian mới có nhiều điều buồn cười.
Khi di chuyển server đành phải xử lý thủ công
Gần đây hosting đã bị đầy nên chuyển sang server mới. Vì ứng dụng nhỏ nên không có các thứ như cài đặt, kiểm tra tính toàn vẹn dữ liệu này nọ nên đã nảy sinh ra vấn đề, chưa gọi thảm hoạ lắm nhưng cũng phải xử lý thủ công vì không biết file nào sau khi đổi tên đã là file nào.
Cũng thật may mắn khi đang có vài bạn nữ với kỹ năng tin học văn phòng khá nên phân cho mỗi người vài trăm file để họ rà soát và gắn lại cho đúng. Việc đơn giản vậy mà cũng mất 2 ngày mới hoàn tất. Thật quá nguy hiểm!
Bài học
Trong quá trình upload file luôn xảy ra trường hợp sai sót, file bị đứt gãy hoặc không được đưa vào đúng thư mục. Do đó cần phải có đoạn mã để kiểm tra việc này.
Chưa hết, trong cơ sở dữ liệu nên lưu kích thước của file để trường hợp nhầm lẫn, thất lạc có thể nhanh chóng viết một vài script để dò tìm, đối soát, tiết kiệm rất nhiều công sức rà soát thủ công. Nếu có hàng ngàn file sẽ là thảm hoạ vậy.
Bạn sử dụng hệ điều hành Linux để phát triển phần mềm ứng dụng trên môi trường NodeJS và rất bực mình khi thường xuyên bị báo lỗi với quyền liên quan NodeJS hoặc có những cảnh báo cảm thấy không lấy gì làm vui vẻ, tích cực cho lắm? Bài viết này chia sẻ phần nào cách KACBT đối mặt với vấn đề, có thể bạn tìm thấy sự hữu ích, áp dụng được.
Chưa cài NodeJS muốn cài từ đầu, không dùng root
Ghé vào trang https://nodejs.org/download/release để tải phiên bản Node.js bạn muốn dùng để tải về dưới dạng file .tar.gz
Thực hiện các lệnh sau:
Các lệnh cài đặt Node.js với user thường
Sau cùng, hãy kiểm tra thành quả của bạn xem đã ổn chưa với lệnh node –version
Bạn tự do thay đổi node-v18.14.0-linux-x64.tar.gz bằng phiên bản Node.js của bạn, thư mục nodejs-apps bằng tên thư mục do bạn tự đặt nhé.
Đã có Node.js trên máy, muốn thay đổi thành user bình thường
Thực hiện lệnh npm config get prefix để xem có phải hiện ra /usr hay không? Nếu đúng, thực hiện tiếp các lệnh sau:
Cài Node.js global cho user thường
Cách này có hai điều cần lưu ý:
Nếu trước đây bạn đã phải dùng root để cài đặt các modules và có app nào đó đã chạy thì rồi sẽ báo bạn không có quyền. Cách xử lý: sudo chown -R whoami ~/.npm && sudo chown -R whoami /usr/local/lib/node_modules
Để có thể lần khởi động máy sau, các thiết lập trên vẫn còn tác dụng, bạn phải có lệnh: echo -e “export NPM_CONFIG_PREFIX=~/.npm-global\nexport PATH=\$PATH:~/.npm-global/bin” >> ~/.bashrc
Sử dụng NVM (Node Version Manager) khi bạn muốn khác bên trên
Cách này tất nhiên lúc ban đầu cần mất chút thời gian để làm quen, sử dụng. Nhưng lợi ích lâu dài của nó là xứng đáng với những gì bỏ ra.
Vào trang https://github.com/nvm-sh/nvm xem phần Installing and Updating và làm theo, hết sức dễ dàng, bạn có thể xem chỉ với vài câu lệnh:
Sử dụng NVM để quản lý các phiên bản Node.js
Đây là cách đáp ứng tốt nhất các yêu cầu phức tạp về Node.js khi cần sử dụng nhiều phiên bản khác nhau, các gói cài đặt khác nhau của ứng dụng cần phiên bản khác nhau tránh “giẫm đạp” lên nhau thành một mớ hỗn độn mất kiểm soát.
Bài này đăng lại comment từ một status Facebook do chính tác giả comment trên group Facebook mang tên Học lập trình web (F8 – Fullstack.edu.vn). Tại sao đăng lại? Tại vì thấy có vẻ như nhiều bạn trẻ (và không còn quá trẻ nữa khi ở tuổi 26 đến 32) mà lại hay hỏi những câu rất lơ ngơ. Có thể một trong số đó vô tình vào KACBT để học HTML, sẵn đọc luôn cho bớt mơ mộng.
Vấn đề của những bạn mơ bước chân vào lập trình là gì?
Vấn đề lớn nhất của những người không đủ tiêu chuẩn để gia nhập nghề mới dù loay hoay nhiều năm, học lung tung cả lên hết trung tâm nọ, trung tâm kia, mua hàng chục khóa học online với giá khoảng 9 đến 99 đô la. Mấy cái KHÔNG sau cần giải quyết hoặc khắc phục phần lớn thì tiêu chuẩn nghề mới nâng cao lên được, mới có thể đi làm.
Tiếng Anh yếu kém: cái này đánh rớt hết 80% những người mơ mộng muốn chuyển sang làm trong lĩnh vực lập trình, hay nói đúng hơn, chưa tới được bãi gửi xe lấy gì mà tham dự sự kiện?
Người học không chịu kết bạn ngoài đời, không đi chơi giao lưu với dân trong nghề để học hỏi, không mò đến các event về ngành định chuyển qua để được tắm trong không khí của nó, để hít thở, ngửi mùi, kích thích sự hứng thú với nghề mới. Trong khi đó toàn lên mạng tám với dân ngoại đạo, showbiz của nghề hơn là dân trong nghề. Dân trong nghề thực thụ lại ít tám trên mạng, có tám họ toàn vô những chỗ khá chuyên sâu.
Tạp chí chuyên ngành là “vũ khí” rất quan trọng để tìm hiểu, học hỏi, nghiên cứu một chuyên môn mới nhưng hầu hết thanh niên Việt Nam (trừ những HS, SV từng làm nghiên cứu khoa học ở trường/ đại học hoặc bị thầy cô giáo bắt tìm đọc tạp chí để làm bài tập/ đề tài nghiên cứu) KHÔNG biết tạp chí chuyên ngành là gì, ngay cả dân đang trong nghề còn chưa biết đến có sự tồn tại của chúng, mà lại cho rằng chúng kém hữu ích, và hẳn họ chỉ ở mức thợ code là hết mức.
Người học sợ, ngại đọc sách và cũng sợ tham gia các khóa học dạng MOOC đủ chuẩn SCORM hoặc AICC mà chỉ thích xem clip, đọc các tut, xem video clip, học mót các course dạng bootcamp mà người hướng dẫn không có chứng chỉ về sư phạm giảng dạy.
Đặc điểm của nghề mang tính kỹ thuật/ ứng dụng như IT, lập trình
Ngành kỹ thuật khác nhiều so với các ngành xã hội đó là phải đề cao tính chất làm để học chứ không phải học để làm. Cho nên, người học phải nhúng tay vào làm mới học được. Ai có tư tưởng học lý thuyết cho nhuyễn rồi mới thực hành là hỏng, hỏng bét, hoặc chỉ học thực hành, xao nhãng lý thuyết cũng hỏng. Hai món này phải đan xen, cài vào nhau trong mỗi buổi học thì mới là cách học đúng.
Ví dụ như để làm được giao diện trang web thì phải lôi “đồ nghề” là trình soạn thảo văn bản thô, thu thập các file hình ảnh (được thiết kế trên Photoshop trước đó) rồi ngồi mà lắp chúng lại, trong quá trình lắp sẽ phải thì đọc “tài liệu hướng dẫn”, không khác so với lấy bộ đồ chơi lắp ghép Lego ra chơi.
Để học được vào, được thấm, khi học người học cần phải ép bản thân mình vào tư thế không thoải mái tránh rơi vào giấc ngủ hoặc dễ bị xao nhãng.
Ví dụ: kiếm một cái màn hình mà 25 phút nó tắt một lần, 5 phút sau mới lại bật lên được thì ta sẽ thấy 25 phút rất quý báu, tranh thủ mà cày cho xong đoạn code nào đó tránh để màn hình làm cho mất hứng. Bàn phím thì nên mua một cái second-hand tiếng Nhật để buộc phải thuộc cách gõ code, bởi việc nhìn mặt phím là vô dụng. Tất nhiên, bạn đừng ngây thờ nghĩ rằng có cái màn hình nào mua mới ngoài tiệm có sẵn chức năng 25 phút tắt một lần, cách học là bạn phải suy nghĩ vấn đề, tìm kiếm phần mềm trên máy tính để thực hiện chức năng đó cho bạn.
Kết: Khắc phục được các vấn đề trên, việc chuyển sang nghề viết code là trong tầm tay các bạn.
Có thể nói rằng nếu chỉ có HTML, một trang web trông không khác gì những công trình xây thô thấy còn nguyên gạch, vữa. Hoặc muốn dễ hình dung hơn, bạn tìm một hotgirl Trung Quốc để mặt mộc. Từ các bài trước, chúng ta đã làm một trang web về trà sữa chưa có chút nào CSS.
Bài hôm nay, chúng ta mở file bai5.html ra, Save As thành bai7.html để thực hành.
Tạo file CSS và viết vài rule
Tạo file bai7.css , save vào thư mục D:\xampp\htdocs\css (nếu chưa có thư mục css bạn phải tự tạo, đây là kiến thức tin học căn bản, KACBT mặc định bạn đã nắm biết).
Soạn nội dung file bai7.css như sau:
Hình 1. Nội dung file bai7.css
Luôn Save file lại trước khi làm gì hơn. Ta cũng nhớ lại lý thuyết đã học ở bài trước, giờ thì mở file bai7.html ra để sửa.
Hình 2. Dòng 5 chính là gắn CSS vào HTML
Save lại file và mở trình duyệt lên truy cập để xem thử hình hài trang web thế nào. Trông cũng vui mắt rồi:
Hình 3. Diện mạo trang web khi có chút CSS
Hoan hô bạn, giờ đây bạn đã thấy ánh sáng le lói ở cuối đường hầm. Trang web trông như vào thập niên ’90 của thế kỷ trước. Không sao, chúng ta đang ở mức học “bảng cửu chương” trong quá trình học toán, rồi sẽ làm toán được.
Thêm một vài rule nữa, kèm chút giải thích
KACBT cũng nhại theo giới showbiz, tiết lộ cho bạn một… tin động trời: vừa rồi đã gặp thảm hoạ về ổ cứng nên mất sạch tất cả những gì liên quan đến những bài học từ bữa giờ. Vì thế cho nên, thực sự đoạn mã minh hoạ trong bài 7 này không còn, và KACBT cũng phải ngồi gõ lại từ bài 5.
Điều khôi hài xảy ra: nếu bạn chú ý quan sát, đoạn HTML hiện đang chưa đúng với ở bài 5. Ở bài 5 có một DIV bọc ngoài MAIN. Giờ phải sửa lại cho giống bài 5 đã rồi làm gì làm:
Bọc DIV có class là three-cols bên ngoài
Nhớ đóng thẻ DIV, nếu không gây lỗi valid
Cũng cần nói thêm rằng, bạn chỉ sửa mã như trên nếu bạn ngồi gõ mã ở bài này, còn nếu bạn đã Save as từ file bai5.html thì không cần phải làm gì thêm, nếu đã làm, hãy nhớ “undo” các bước, nếu không sẽ có 2 thẻ DIV bọc nhau chẳng để làm gì.
Mở file bai7.css lên, sửa rule cho header thành như sau:
Viết thêm một số dòng để trang trí HEADER
Đọc thấy dòng ảnh nền ở trên, không cần phải nhắc bạn cũng phải biết rằng tìm một hình ảnh làm ảnh nền bỏ vào thư mục images để khi xem trang web hiện được ảnh này lên.
Có một phép mầu xảy ra khi bạn thử chỉnh hiển thị trang web bằng cách bấm Ctrl + dấu trừ để thu nhỏ trang web của bạn (hoặc màn hình của bạn rộng, hỗ trợ full HD trở lên), bạn sẽ chứng kiến được cái ảnh nền nó nhảy lập lại một cái bên tay phải. Đó là mặc định của thuộc tính background-image.
Chỉ cần thêm vào sau dòng thuộc tính này, giờ đây rule cho HEADER trông như sau:
Không cho lặp lại ảnh nền bằng thuộc tính background-repeat có giá trị no-repeat
Nhớ bấm Ctrl + số không để trình duyệt bạn trở về xem trang web đúng 100% của nó nhé, nếu quên, bạn có thể sẽ nhìn web của bạn không đúng tỉ lệ thật của nó.
Bạn có thể tung hoành với CSS của bạn bằng cách thêm rule, bổ sung các thuộc tính cho rule đang có để làm thế nào cho trang web của bạn được đẹp hơn. KACBT không “cầm tay chỉ việc” cho bạn những thứ đó, mà bạn phải tự động não, tự thực hành,… hòng tiến bộ, hiểu bài.
Chúng tôi chỉ có thể thử cung cấp vào rule, bạn có thể gõ lại vào file CSS để xem chuyện gì xảy ra, rồi có thể thay đổi để cảm thấy ưng ý hơn. Ví dụ, đoạn CSS sau:
Một vài khối rule CSS mà bạn có thể thử áp dụng
Một số thuộc tính được gọi là shorthand. Nghĩa là một thuộc tính shorthand cho phép thiết lập nhiều thuộc tính đồng thời thay vì phải viết rời từng thuộc tính. Áp dụng shorthand sẽ giúp viết CSS gọn gàng hơn. Nhưng nhược điểm là bạn phải làm nhiều mới có thể nhớ đúng thứ tự các giá trị, nếu không nhớ đúng, có thể kết quả sẽ khác với mong đợi.
Thuộc tính background là một thuộc tính dạng shorthand. Ta có ví dụ sau:
Viết rời từng thuộc tính
Đoạn nhiều thuộc tính như trên, gom lại thành 1 thuộc tính shorthand:
Thuộc tính background là thuộc tính shorthand
Bạn có thể tìm hiểu thêm về Shorthand properties trên trang của tổ chức Mozilla.
Một vài mẹo hay dân trong nghề phải biết
Dù bạn chỉ học làm web dưới dạng nghiệp dư amateur chơi cho vui, điều đó không ngăn cản KACBT và bạn trao đổi với nhau vài thứ của dân trong nghề, cũng dễ để áp dụng. Nào, bắt đầu ngay.
CSS Reset
Mặc định trình duyệt có một số định nghĩa ngầm về CSS để khimở một file HTML lên thì có thể hiển thị được nội dung, đọc được. Nhưng các trình duyệt web khác nhau lại không thống nhất nhau về việc này dẫn đến khi viết CSS, bạn đã kiểm tra tới lui thấy không có gì sai sót nhưng những gì hiển trị trên trang web lại không như mong đợi, loay hoay đủ kiểu bạn vẫn bó tay. Các đại ca lâu năm trong nghề giải quyết vấn đề này bằng cách sử dụng cái gọi là CSS Reset (hoặc Reset CSS), đó là một số rule CSS được viết sẵn, mỗi khi bạn định viết CSS thì hãy copy các rule này vào đầu file CSS của bạn hoặc đặt trong một file reset.css và nhúng ngay vào HTML của bạn. Nội dung CSS Reset như sau:
/***
The new CSS reset - version 1.8.2 (last updated 23.12.2022)
GitHub page: https://github.com/elad2412/the-new-css-reset
***/
/*
Remove all the styles of the "User-Agent-Stylesheet", except for the 'display' property
- The "symbol *" part is to solve Firefox SVG sprite bug
*/
*:where(:not(html, iframe, canvas, img, svg, video, audio):not(svg *, symbol *)) {
all: unset;
display: revert;
}
/* Preferred box-sizing value */
*,
*::before,
*::after {
box-sizing: border-box;
}
/* Reapply the pointer cursor for anchor tags */
a, button {
cursor: revert;
}
/* Remove list styles (bullets/numbers) */
ol, ul, menu {
list-style: none;
}
/* For images to not be able to exceed their container */
img {
max-inline-size: 100%;
max-block-size: 100%;
}
/* removes spacing between cells in tables */
table {
border-collapse: collapse;
}
/* Safari - solving issue when using user-select:none on the <body> text input doesn't working */
input, textarea {
-webkit-user-select: auto;
}
/* revert the 'white-space' property for textarea elements on Safari */
textarea {
white-space: revert;
}
/* minimum style to allow to style meter element */
meter {
-webkit-appearance: revert;
appearance: revert;
}
/* preformatted text - use only for this feature */
pre {
all: revert;
}
/* reset default text opacity of input placeholder */
::placeholder {
color: unset;
}
/* remove default dot (•) sign */
::marker {
content: "";
}
/* fix the feature of 'hidden' attribute.
display:revert; revert to element instead of attribute */
:where([hidden]) {
display: none;
}
/* revert for bug in Chromium browsers
- fix for the content editable attribute will work properly.
- webkit-user-select: auto; added for Safari in case of using user-select:none on wrapper element*/
:where([contenteditable]:not([contenteditable="false"])) {
-moz-user-modify: read-write;
-webkit-user-modify: read-write;
overflow-wrap: break-word;
-webkit-line-break: after-white-space;
-webkit-user-select: auto;
}
/* apply back the draggable feature - exist only in Chromium and Safari */
:where([draggable="true"]) {
-webkit-user-drag: element;
}
/* Revert Modal native behavior */
:where(dialog:modal) {
all: revert;
}
Bạn cũng có thể sử dụng một mẫu CSS khác được gọi là normalize.css có nội dung như sau:
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
/* Document
========================================================================== */
/**
* 1. Correct the line height in all browsers.
* 2. Prevent adjustments of font size after orientation changes in iOS.
*/
html {
line-height: 1.15; /* 1 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/* Sections
========================================================================== */
/**
* Remove the margin in all browsers.
*/
body {
margin: 0;
}
/**
* Render the `main` element consistently in IE.
*/
main {
display: block;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Firefox, and Safari.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/* Grouping content
========================================================================== */
/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/
hr {
box-sizing: content-box; /* 1 */
height: 0; /* 1 */
overflow: visible; /* 2 */
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
pre {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/* Text-level semantics
========================================================================== */
/**
* Remove the gray background on active links in IE 10.
*/
a {
background-color: transparent;
}
/**
* 1. Remove the bottom border in Chrome 57-
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none; /* 1 */
text-decoration: underline; /* 2 */
text-decoration: underline dotted; /* 2 */
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in
* all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
/**
* Remove the border on images inside links in IE 10.
*/
img {
border-style: none;
}
/* Forms
========================================================================== */
/**
* 1. Change the font styles in all browsers.
* 2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
font-family: inherit; /* 1 */
font-size: 100%; /* 1 */
line-height: 1.15; /* 1 */
margin: 0; /* 2 */
}
/**
* Show the overflow in IE.
* 1. Show the overflow in Edge.
*/
button,
input { /* 1 */
overflow: visible;
}
/**
* Remove the inheritance of text transform in Edge, Firefox, and IE.
* 1. Remove the inheritance of text transform in Firefox.
*/
button,
select { /* 1 */
text-transform: none;
}
/**
* Correct the inability to style clickable types in iOS and Safari.
*/
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* Correct the padding in Firefox.
*/
fieldset {
padding: 0.35em 0.75em 0.625em;
}
/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from `fieldset` elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* `fieldset` elements in all browsers.
*/
legend {
box-sizing: border-box; /* 1 */
color: inherit; /* 2 */
display: table; /* 1 */
max-width: 100%; /* 1 */
padding: 0; /* 3 */
white-space: normal; /* 1 */
}
/**
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/
progress {
vertical-align: baseline;
}
/**
* Remove the default vertical scrollbar in IE 10+.
*/
textarea {
overflow: auto;
}
/**
* 1. Add the correct box sizing in IE 10.
* 2. Remove the padding in IE 10.
*/
[type="checkbox"],
[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type="search"] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
* Remove the inner padding in Chrome and Safari on macOS.
*/
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}
/* Interactive
========================================================================== */
/*
* Add the correct display in Edge, IE 10+, and Firefox.
*/
details {
display: block;
}
/*
* Add the correct display in all browsers.
*/
summary {
display: list-item;
}
/* Misc
========================================================================== */
/**
* Add the correct display in IE 10+.
*/
template {
display: none;
}
/**
* Add the correct display in IE 10.
*/
[hidden] {
display: none;
}
Chúng tôi không có lời bình nào về tốt/ xấu, hay/ dở của hai mẫu CSS kể trên mà bạn thử áp dụng vào chọn cái phù hợp với bản thân mình. Hoặc, ở đẳng cấp cao hơn, bạn chế ra một thứ cho riêng bạn, đó chính là việc học đã hiểu bài, áp dụng tốt và nâng cao hơn một bước.
Nếu bạn để ý, ngay cả CSS Reset (hoặc Reset CSS) kể trên cũng đã là một bản cải tiến của cái nguyên ban đầu, phù hợp hơn với cách trình duyệt web hiện đại ngày nay. Bản gốc của Eric A. Meyer cũng đã cải tiến 1 lần, như sau:
Trong quá khứ, khi CSS hãy còn chưa mạnh mẽ như ngày nay, cách để có một hình tròn trên trang web đó là phải sử dụng trình xử lý ảnh để cắt gọn trước thành hình tròn rồi xuất thành ảnh GIF (thuở ban đầu), hoặc ảnh PNG có nền trong suốt.
Ngày nay, bạn dễ dàng tạo ra được ảnh trong khung tròn với chưa đến chục dòng CSS, học thuộc lòng để áp dụng luôn.
Nếu hình ảnh của bạn vuông, hãy áp dụng đoạn HTML & CSS này.
Trong thực tế, hình ảnh đa số là hình chữ nhật chứ không phải hình vuông. Do đó, hãy sử dụng một trong hai lựa chọn sau đây tuỳ ảnh bạn là chữ nhật dọc (chiều rộng hẹp, nhỏ hơn chiều cao) hay chữ nhật ngang (chiều rộng > chiều cao).
Hình ảnh dọc thì áp dụng như này. Chú ý sửa kích thước cho phù hợp với mong muốn của bạn.
Trong khi đó, nếu hình ảnh bạn có xu hướng ngang, tức là chiều rộng lớn hơn chiều cao, hãy nhớ đoạn CSS bên dưới để áp dụng:
Hình ảnh ngang thì áp dụng CSS như này.
Canh giữa một khối trong một khối
Chúng tôi minh hoạ bằng DIV, bạn có thể dùng khối khác miễn khối đó có display là block.
Mẫu chốt của mẹo này là vùng khoanh đỏ trên hình
Như vậy, chúng ta kết thúc bài 7 này ở đây. Hẹn gặp bạn ở bài kế tiếp.
Bài tập thực hành
Thay đổi FOOTER để trông bắt mắt hơn bằng cách thêm thông tin trong file HTML, thêm rule trong file CSS
Thay đổi thanh lề trái, thanh lề phải của trang web
Thêm nội dung cho phần MAIN để trang web trở nên hấp dẫn hơn