Sổ tay HTML phản ứng
(maxbo.me)-
Sổ tay HTML phản ứng
- Nhấn mạnh tầm quan trọng của việc sử dụng HTML như một nền tảng xuất bản khoa học.
- Đề xuất khả năng dùng tệp HTML cho mọi giai đoạn của việc khám phá dữ liệu, phân tích, trực quan hóa và xuất bản.
- Thay vì sử dụng nhiều công cụ và nền tảng khác nhau như trước đây, có thể cung cấp một quy trình làm việc thống nhất thông qua HTML.
-
Ô
- Giải thích cách hiển thị nội tuyến các phần tử style và script bằng lớp CSS
echo. - Tạo trình soạn thảo mã cơ bản bằng thuộc tính
contenteditable. - Thiết lập để script được đánh giá lại khi xảy ra sự kiện
blur.
- Giải thích cách hiển thị nội tuyến các phần tử style và script bằng lớp CSS
-
Thư viện và runtime của Observable
- Import thư viện chuẩn và runtime của Observable rồi bind vào
window. - Định nghĩa ô thông qua hàm
cellvà hiển thị đầu ra của ô bằng Observable Inspector.
- Import thư viện chuẩn và runtime của Observable rồi bind vào
-
Ví dụ về ô
- Khai báo ô
counterđể in ra một con số mỗi giây. - Tạo ô
fizzbuzzđể sinh đầu ra khác nhau tùy theo giá trịcounter. - Dùng hàm
silentđể tạo ô không hiển thị đầu ra.
- Khai báo ô
-
Đầu ra phức tạp
- Dùng Hypertext Literal để định dạng giá trị
counter. - Dùng Observable Plot để sử dụng giá trị
countertrong biểu đồ.
- Dùng Hypertext Literal để định dạng giá trị
-
TeX, Markdown, Graphviz
- Trả về phần tử DOM từ ô để tạo đầu ra ở nhiều định dạng khác nhau.
- Dùng TeX, Markdown và Graphviz để tạo công thức, bảng và đồ thị.
-
Trạng thái ô
- Ô có thể trả về Promise hoặc Error, và Inspector của Observable sẽ áp dụng class vào phần tử div bên ngoài của ô.
-
SQLite
- Thực hiện truy vấn cơ sở dữ liệu bằng client SQLite dựa trên WASM.
- Trực quan hóa phân bố độ dài bài nhạc thông qua truy vấn SQL.
-
Python và R
- Chạy mã Python và R bằng Pyodide và WebR, đồng thời tạo trực quan hóa.
- Tạo biểu đồ bằng mô-đun
sqlite3của Python và Matplotlib.
-
Đầu vào
- Tạo input bằng Observable Inputs và liên kết chúng với các ô.
- Dùng hàm
viewofđể hiển thị phần tử input phía trên ô.
-
Tính khả biến
- Dùng hàm
mutableđể tạo đối tượng có thể thay đổi trạng thái. - Mỗi khi trạng thái thay đổi, một giá trị Generator mới sẽ được tạo ra.
- Dùng hàm
-
Kế hoạch tương lai
- Có kế hoạch tích hợp toàn bộ nội dung thành một thư viện và cung cấp tài liệu phù hợp.
- Tên thư viện được quyết định là
@celine/celine.
-
Hạ tầng slide
- Cung cấp mã để chuyển tài liệu thành slideshow.
- Có thể điều hướng slide bằng phím tắt bàn phím.
1 bình luận
Ý kiến Hacker News
Tôi đồng ý với bài viết cho rằng HTML có thể là nền tảng tuyệt vời cho notebook tính toán. Tuy nhiên, tôi không thích cách triển khai này. Observable rất hay nhưng lại lệch khỏi JS tiêu chuẩn. Tôi đang phát triển một hệ thống HTML phản ứng tên là Heximal, dựa trên template HTML và custom elements.
Tôi nghĩ tính khả dụng của cách tiếp cận này khá tệ. Khi làm phân tích dữ liệu khám phá, không có lý do gì phải bận tâm đến các yếu tố style. Đó là lý do Jupyter notebook xuất sắc. Dù vậy, vẫn đáng khen vì sự tò mò và nỗ lực hiện thực hóa một ý tưởng thay thế.
Bản demo Python và SQLite đặc biệt ấn tượng. Thật thú vị khi họ đã khởi động vòng lặp chỉnh sửa ngay trên web. Vấn đề về tính bền vững khá giống với TiddlyWiki, và có thể tránh được bằng cách dùng hệ thống tệp. Việc không thể export từ script nhúng là điểm cần được cải thiện.
Tôi dự định sớm thử hỗ trợ HTML notebook trong Raku. Hiện tại, các giải pháp notebook của Raku đều dựa trên Jupyter hoặc Mathematica.
Tôi thích định dạng của bài viết này. Nó dẫn đến những kết quả thú vị mà không cần quá nhiều dependency hay framework. Có thể sao chép các đoạn mã được đưa ra và hiểu từng bước một. Tôi sẽ dùng literate programming để export sang HTML và viết các bài blog.
Đây là HTML phản ứng, nhưng có vẻ gần như hoàn toàn là JavaScript.
Tôi đã thử chỉnh sửa pyodide nhưng nó bị crash trên điện thoại và trang bị tải lại.
Tác giả sẵn sàng trả lời câu hỏi.
Tôi đang định host các ví dụ mã Raku và xây dựng thứ gì đó tương tự cho literate programming. Có plugin Raku cho Jupyter Chatbooks, nhưng việc nó yêu cầu Python thì hơi gượng ép. Sẽ thật tuyệt nếu có một lớp message có thể dùng mã phía máy chủ để kết nối với các language kernel từ xa.
Con trỏ khủng long của Windows XP gợi lại rất nhiều ký ức.