Thảo luận Từ điển công nghệ:Autolink/Javascript

Từ Từ điển công nghệ
Phiên bản vào lúc 07:45, ngày 9 tháng 5 năm 2008 của Minhdang (Thảo luận | đóng góp) (Tạo liên kết trong 1 lần xuất hiện đầu tiên)

Vấn đề mở rộng rất đáng được quan tâm. Liệu cấu trúc hiện nay của script cho phép sử dụng danh mục khoảng 1000 từ mà không làm chậm máy tính hay không? Thông tin cần biết: tất cả các từ được ghép chung vào một reg exp bằng phép tính |, do đó chuỗi này có chiều dài lên đến cả chục ngàn kí tự.

Không biết có thuật toán nào tốt hơn không?

Kí tự phân cách từ

Hiện nay, một từ được phân cách bởi các kí tự: " ", ".", ",", "\"", "'", "-"

Đề nghị thêm kí tự phân cách: "/"

Bug: http://vntelecom.org/diendan/showthread.php?p=1191#post1191

Xem chỗ: WEP/WPA (chỉ đặt link đến WPA, không có link đến WEP)

Đã bổ sung "/" --Jcisio 02:02, ngày 11 tháng 10 năm 2007 (PDT)
Theo mình thì nên bỏ cái "-". Ví dụ đôi khi WCDMA còn được viết là W-CDMA. W-CDMA là một thuật ngữ. Tương tự D-AMPS, I-WLAN, 3-DES,64-QAM,U-RNTI,U-SIM, EAP-SIM,W-AMR... Thực ra việc thêm vào cái "-" là tùy người viết, và người ta chấp nhận cả 2 cách viết có và không có "-". Do vậy, đề nghị bỏ "-". --Nvqthinh 03:10, ngày 17 tháng 10 năm 2007 (PDT)
Bỏ được kí tự nào thì tốc độ xử lí nhanh thêm được chút đó, càng có lợi :D Tuy nhiên ở đây kí tự phân tách từ còn dùng trong mục đích khác, thí dụ ai đó viết "CDMA-kĩ thuật..." thì nếu "-" không là kí tự phân cách từ CDMA sẽ không được nhận ra. Vấn đề kiểu W-CDMA đã được giải quyết trong phiên bản hiện tại, vì "W-CDMA" là thuật ngữ dài, nó sẽ được nhận diện nguyên cụm từ thay vì chỉ có "CDMA" như trước. --Jcisio 10:41, ngày 17 tháng 10 năm 2007 (PDT)

Lỗi "link nằm trong link" (xong)

ở trang này: http://thongtincongnghe.com/article/1525 có một link là "WiMax chỉ là công nghệ được thổi phồng", trong đó chữ 'WiMax' lại được nhận diện ở TDCN (có gạch dưới), nhưng không thể link đến TDCN được.

Giải pháp đề nghị: không parsing bên trong một link.

Lỗi này đã được biết đến khá sớm, tuy nhiên vẫn để vậy. Lí do là sau này thay vì là link thông thường mình có thể đổi thành link đặc biệt, click vào nó hiện định nghĩa vắn tắt trong một ô nhỏ nhỏ thay vì mất công load nguyên trang TDCN. Một phần khác là vì lười :P --Jcisio 00:45, ngày 14 tháng 10 năm 2007 (PDT)
Thông tin đây: đây còn là cách hành xử của mỗi trình duyệt. Firefox không mở link đến TDCN nhưng Opera thì có (IE chưa test được).--Jcisio 00:51, ngày 14 tháng 10 năm 2007 (PDT)
Đã sửa trong phiên bản hôm nay. Bỏ qua các thuật ngữ nằm trong các thẻ: /script|style|textarea|a|h\d/ --Jcisio 03:25, ngày 16 tháng 10 năm 2007 (PDT)

Lỗi "link đến cụm thuật ngữ thay vì từng từ trong cụm từ" (xong)

- Ví dụ "IP PBX" là một thuật ngữ chứ không phải hai thuật ngữ riêng biệt. - "IEEE 802.16" là một thuật ngữ chứ không phải là 2 thuật ngữ riêng biệt. - Ví dụ "triple DES" là một thuật ngữ chứ không phải chỉ link đến DES ( trường hợp này hơi khó nhỉ). --Nvqthinh 02:24, ngày 16 tháng 10 năm 2007 (PDT)

Cái này chắc phải tìm người rồi ngồi bàn tính giải thuật, dùng cái nào kiểu "greedy match" thì sẽ ra thuật ngữ cụ thể thay vì thuật ngữ chung. Cần chọn thuật toán và cấu trúc dữ liệu sao cho: 1/ thời gian xử lí nhanh nhất 2/ dữ liệu tải về (danh sách mục từ) là nhỏ nhất.--Jcisio 02:58, ngày 16 tháng 10 năm 2007 (PDT)
Hiện tại đã sửa một phần lỗi này, dùng thuật toán cũ. Các từ dài được xem xét trước, rồi xem xét tiếp các từ ngắn hơn. --Jcisio 06:38, ngày 16 tháng 10 năm 2007 (PDT)
Đã cập nhật lại autolink.js, hiện không biết độ phức tạp của việc xử lí regular expression nên không rõ khi có vài ngàn mục từ tốc độ sẽ thay đổi ra sao. Sẽ giải quyết sau.--Jcisio 14:58, ngày 16 tháng 10 năm 2007 (PDT)
Hiện tại Nam dùng thuật toán search matching nào thế? Khi matching thì xem TDCN là pattern hay ngược lại? --Nvqthinh 23:47, ngày 16 tháng 10 năm 2007 (PDT)
TDCN là pattern. Xây dựng pattern theo kiểu (word1|word2|...|wordn) rồi đưa cho regular expression nó tìm trong web thay vì implement các thuật toán tìm kiếm riêng trên javascript. Độ phức tạp của pattern trên có lẽ là tuyến tính O(MN) hoặc cùng lắm thì O(Mlg(MN)), M là số từ của TDCN.--Jcisio 02:10, ngày 17 tháng 10 năm 2007 (PDT)
Vừa cải tiến thuật toán tìm kiếm bằng cách chia nhiều pattern con, tránh dùng duy nhất một pattern quá dài. Do đó tốc độ tìm kiếm chắc chắn sẽ tuyến tính với số từ của TDCN. Tuy nhiên tốc độ này không nhanh lắm, theo thử nghiệm trên một máy tính khá mạnh (MacBook Pro), một trang web dài trung bình thì 1s xử lí được khoảng 1000-1300 từ trên Firefox (trên Safari nhanh hơn khoảng 40%). Vậy nếu ta có dữ liệu 5000 từ thì mất chừng 4s sau khi tải trang web mới hiển thị được các link. Sẽ chọn cách chia tối ưu sau...--Jcisio 10:48, ngày 17 tháng 10 năm 2007 (PDT)
Lại vừa mới cải tiến lần nữa bằng cách duyệt thô danh mục từ trước khi xây dựng pattern. Ước tính rằng áp dụng 25 000 từ cho một trang web chỉ mất khoảng 1s.--Jcisio 12:59, ngày 17 tháng 10 năm 2007 (PDT)

Cần tìm người biết MooTools

Để viết lại phần link, thay vì click vào nó chuyển đến TDCN thì nó sẽ hiện vắn tắt định nghĩa trong một khung nhỏ (iframe), cần thì link đến bài đầy đủ. Cái này tương tự Slimbox Ex, nhưng cần viết lại nhỏ gọn hơn, chỉ dùng những cái thật cần thiết (dùng quá nhiều thứ dễ xung đột với các script khác có sẵn trong trang web). --Jcisio 02:37, ngày 19 tháng 10 năm 2007 (PDT)

Nếu hiện vắn tắt định nghĩa từ ngay trong trang chứa thuật ngữ, thì ta giải quyết khả năng 2 thuật ngữ có cùng viết tắt như thế nào? Có thể là hiện lên cả 2, cái nằm trên cái nằm dưới. --Minhdang 17:28, ngày 25 tháng 10 năm 2007 (PDT)

Nó sẽ hiện lên trang định hướng, thí dụ từ IP. Mục đích của cái script đơn giản là thay vì link đến trang đầy đủ của TDCN trong 1 cửa sổ mới, nó link đến trang thu gọn của TDCN trong một iframe. Thí dụ một trang như vậy là trang Bản để in (link ở góc dưới bên trái trang web này). Tác dụng: tra cứu nhanh hơn, gọn hơn, khi cần vẫn có thể link đến trang đầy đủ. --Jcisio 02:33, ngày 26 tháng 10 năm 2007 (PDT)

Tạo liên kết trong 1 lần xuất hiện đầu tiên

Sau một thời gian thấy cái này cũng chưa hợp lí lắm, nhiều khi lúc nó xuất hiện lần đầu mình lại không để ý. Một giải pháp khác: tạo tất cả, nhưng không làm thay đổi cách trình bày, khi trỏ chuột lên mới thay đổi mà thôi. --Jcisio 17:05, ngày 21 tháng 4 năm 2008 (UTC)

Nếu không ai có ý kiến gì, thì từ 1/6 mặc định sẽ làm theo cách trên. Nếu cộng đồng nào muốn giữ lại cách cũ thì phải đặt tham số, thí dụ autolink.js?newwindow=1&maxrepeats=3&styling=0 (mở link cửa số mới, 1 từ đặt link 3 lần, không định dạng lại style cho link). Xem demo của cách trình bày mặc định mới tại [1] --Jcisio 19:24, ngày 8 tháng 5 năm 2008 (UTC)
Có cách chỉnh tham số thì tiện cho các trang web sử dụng rồi. Tuy nhiên, chế độ mặc định vẫn nên giữ là đặt link ở lần đầu tiên xuất hiện & đổi style. Bởi vì sách vở, báo chí đều theo quy ước đó. Mình đọc một bài báo nào tự nhiên thấy từ viết tắt lạ thì cũng quay lại ban đầu để tìm kiếm định nghĩa của nó thôi. Có lẽ số trang web muốn làm như quy ước sách báo sẽ chiếm đa số, TDCN nên làm mặc định theo số đông đó. --Minhdang 14:45, ngày 9 tháng 5 năm 2008 (UTC)