Để vinh danh Tháng nguồn mở , tôi muốn viết về ShlinkedIn . ShlinkedIn là một bản sao của một trang web rất phổ biến (tôi sẽ để người đọc tự đoán), và theo nhà phát triển chính của nó, nó có hàng nghìn người dùng. Khoảng một năm trước, nó đã trở thành trang số 1 của HackerNews . Lần đầu tiên tôi nghe nói về họ trên một podcast của Anh có tên là Tech Team Weekly .
Để hoàn toàn rõ ràng, tôi không phải là người xây dựng nó… mặc dù tôi đã thực hiện một vài đóng góp nhỏ có thể được coi là cái cớ để viết bài đăng trên blog này. Một người đọc bình thường có thể chỉ nghĩ rằng trang web này là một dự án phụ bình thường của một kỹ sư phần mềm - và họ sẽ đúng - nhưng đây là một số lý do tôi nghĩ rằng ShlinkedIn còn nhiều điều hơn cả những gì bạn nhìn thấy:
Ngăn xếp công nghệ, mà bạn có thể tìm thấy trên GitHub của họ tại đây, thực sự khá thú vị. Nó sử dụng Phoenix LiveView tương đối mới, vì Holtz muốn thực hành xây dựng thứ gì đó với nó. Hạt nhân của ShlinkedIn là video này
Đây là một minh chứng cho thấy mạng xã hội có thể là gì. Không có quảng cáo. Không có thu thập dữ liệu. Thay vào đó, nó kiếm tiền với cấp trả phí tùy chọn
Nó chỉ trích LinkedIn và văn hóa hối hả mà LinkedIn đôi khi dường như đại diện. Nó cũng phát triển theo nền tảng: Ở phía bên phải là các tiêu đề tin tức mà bất kỳ ai cũng có thể tạo ra, trên mỗi bài đăng là các nút phản ứng hoàn toàn vô nghĩa (như “sữa” và “nước sốt”) và trên toàn bộ trang web đã hết- các tính năng nâng cao hàng đầu như tạo NFT, hoạt ảnh trang hồ sơ và tích hợp Spotify. Họ thậm chí còn có một tính năng AI, và tôi đã hỏi họ bất hòa xem họ đang sử dụng thư viện nào. Họ nói rằng họ đang sử dụng "mad libs" và tôi phải mất một lúc để nhận ra rằng họ đang nói đùa
Nhiều ưu điểm của mã nguồn mở là rõ ràng: Nó miễn phí và “mọi người hãy cùng chơi”, theo lời của Linus Torvalds (vâng, tôi cảm thấy có nghĩa vụ trong một bài đăng về mã nguồn mở phải trích dẫn Linus Torvalds. Trong bối cảnh, anh ấy đã tranh luận với ai đó về việc có nên cho phép các công ty sử dụng phần mềm nguồn mở để thu lợi nhuận hay không). Nhưng nó cũng mang lại một cơ hội học tập thực tế và phù hợp hơn nhiều so với một hướng dẫn hoặc, tôi dám nói, một câu hỏi LeetCode.
Khi bạn tạo một tài khoản và đăng nhập, bạn có khả năng đăng bài. Tôi tò mò về các nút và thử một vài chiếc. Bạn có thể thêm các biểu tượng cảm xúc không cần thiết vào một bài đăng, nhưng nó không chỉ định số lượng. Nút “hoàn tác” sẽ hữu ích vì “ctl + z” tiêu chuẩn không hoạt động ở đây.
vậy bạn sẽ làm sao? Bạn có tìm kiếm cách mọi người trong các ứng dụng khác thực hiện “hoàn tác” không? Có thể chỉ sử dụng một cấu trúc dữ liệu đơn giản, như một ngăn xếp, để theo dõi tất cả các thay đổi? Có lẽ nó đơn giản hơn nhiều… bởi vì những nút này không kết hợp bất cứ thứ gì ngẫu nhiên, tại sao không chỉ sử dụng một số bộ đếm đơn giản? Đây là những loại câu hỏi bạn sẽ phải tự hỏi bản thân để triển khai một tính năng có ý nghĩa và chúng cũng là những loại bạn thực sự sẽ làm trong lĩnh vực này (mặc dù trong một dự án lớn hơn và phức tạp hơn nhiều).
… Nhưng trong khi họ chờ đợi điều đó, tôi quyết định làm một việc hoàn toàn khác. Có một nút "Khoảng cách quá mức", nhưng nó dường như không có tác dụng gì. Tôi đã gửi vấn đề lên GitHub của họ và nhà phát triển đã giải thích rằng nó chỉ làm được bất cứ điều gì nếu có ngắt đoạn. Điều này có vẻ như là một trái cây thấp để chứng minh rằng tôi đang nghiêm túc.
Nó kết thúc không phức tạp như vậy , nhưng nó chắc chắn ít tầm thường hơn tôi đã hình dung. Có hai tệp được viết bằng JavaScript và Elixir, tương ứng, xử lý biểu mẫu này ở trên. Nhà phát triển đã làm rõ rằng Phoenix LiveView là giao diện người dùng, nhưng trên bề mặt thì dự án này dường như thách thức sự phân đôi bằng cách làm mờ giao diện người dùng và phụ trợ cùng nhau. Người tạo ra Phoenix LiveView dường như phần nào chứng thực điều này trong bài đăng trên blog của mình: Phoenix LiveView là một cái gì đó hoàn toàn khác.
LiveView loại bỏ các lớp trừu tượng, vì nó giải quyết cả máy khách và máy chủ trong một phần trừu tượng duy nhất. HTTP gần như hoàn toàn biến mất. Không còn REST nữa. Không còn JSON nữa. Không có API GraphQL, bộ điều khiển, trình tuần tự hoặc trình phân giải. Bạn chỉ cần viết các mẫu HTML và một quy trình trạng thái sẽ đồng bộ hóa nó với trình duyệt, chỉ cập nhật nó khi cần thiết. Và không có JavaScript để viết.
- Nguồn
Kể từ vài giờ trước, tôi hiện là cộng tác viên của ShlinkedIn. Lúc đầu, tôi đã thực hiện một cảnh báo, nhưng điều đó rất thô và không phù hợp với định dạng của một lỗi tương tự. Thay vào đó, tôi quyết định thêm một thẻ mới, phân biệt nó bằng id và viết một lượng nhỏ JavaScript để phát hiện ngắt đoạn và chỉ thêm khoảng trắng quá mức nếu đạt được điều kiện.
Tôi có lẽ không nên sử dụng “var”, nhưng xin đừng nói với họ.
Phoenix LiveView và Elixir hoạt động như thế nào? Tôi đã nghĩ rằng mình sẽ phải tìm hiểu thêm rất nhiều về chúng, nhưng cuối cùng điều này chỉ là JavaScript. Ngoài ra, tại sao tôi phải sử dụng JavaScript? Tại sao người tạo ra Phoenix LiveView dường như lại cho rằng JavaScript là không cần thiết ở đây?
Tôi tin rằng Phoenix LiveView làm mờ ranh giới giữa giao diện người dùng và phụ trợ có đúng không, hay điều đó không chính xác? Nhiều người trên Medium cho rằng Phoenix LiveView cực kỳ hiệu quả, nhưng có phải vậy không? Nếu vậy, làm thế nào để tôi kiểm tra điều đó?
ShlinkedIn là sáng tạo, nó là mã nguồn mở, và nó tận dụng những điều mới và ý tưởng mới. Nó cũng rất thú vị… nó thậm chí còn có phiên bản The Onion trong vũ trụ của riêng mình.
Theo dõi Sự bất hòa của họ, và bạn có thể có cái nhìn đầu tiên về quy mô của một phương tiện truyền thông xã hội. Họ cũng có một số cuộc thảo luận kém thú vị hơn, chẳng hạn như có nên kiểm duyệt bình luận phân biệt chủng tộc khi người đăng đang nhại danh một người nổi tiếng hay không. Tuyên bố của cô ấy thực sự là phân biệt chủng tộc hay cô ấy đang nhại lại một bình luận phân biệt chủng tộc?
Dự án mới và thú vị, đó là lý do tại sao tôi nghĩ nó đáng được HackerNoon chú ý.
(Nếu bạn thích những gì bạn đọc, hãy cân nhắc theo dõi tôi trên blog của tôi )