


Bài viết được sự cho phép của tác giả Duy Phan Thông tin được định nghĩa dưới dạng dữ liệu, kiến thức về thông tin, và trí tuệ về tri thức. Data, trong ngữ cảnh nhất định, sẽ trở thành Information. Information với context cụ thể sẽ trở thành Knowledge. Knowledge với những hiểu biết được đưa ra, sẽ trở thành Wisdom. Kim tự tháp dữ liệu là một khái niệm hình dung hệ thống phân cấp Dữ liệu - Thông tin - Tri thức - Trí tuệ. Information là một tập hợp các Data được xử lý từ nhiều nguồn khác nhau. Data được tổng hợp liên tục và không hữu ích cho đến khi nó đã được xử lý và được trình bày ở dạng có thể sử dụng được. Data bao gồm các dữ liệu thô hoặc các quan sát. Khi dữ liệu được sắp xếp, thông tin có thể được đưa ra. Các câu hỏi tại sao, ai, cái gì, ở đâu và bằng cách nào cho phép chúng ta sử dụng dữ liệu [...]
Read more →
Bài viết được sự cho phép của tác giả Thanh Lê Tại sao nên đọc bài này? Tìm hiểu xem Force Layout, reflow là gì? Cách khắc phục, work around Force layout Force layout/reflow là mỗi point ảnh hưởng cực lớn tới performance của website (Đặc biệt là mấy trang web phức tạp), mà nguyên nhân tạo ra nó mình thấy khá là… chí mạng. Vài dòng code cơ bản thôi mà lại khiến hậu quả lớn đến vậy!? Như ví dụ trên hình trên là kết quả Performance check của CoinMarketCap, thời gian Hydrate là 1.03s, và trong đó, task force layout/reflow đã chiếm đâu đó khoảng 0.2s rồi (Tức là 20%) Sau khi tìm hiểu rồi debug các kiểu thì mình nhận ra là issue này xuất phát từ một dòng lệch cực kì xàm if (window.innerWidth < MOBILE_SIZE) { Vậy cụ thể lỗi trên là như nào? Những lỗi trên gọi là Layout Thrashing Layout Thrashing means: Forcing the browser to calculate a layout that is never rendered to the screen. Hiểu cơ bản [...]
Read more →
Bài viết được sự cho phép của vntesters.com Trong ví dụ này mình sẽ có input là một tấm ảnh chụp từ màn hình mobile, kết quả output mong muốn sẽ là nội dung chữ trên bức ảnh đó và kiểm tra lại để đảm bảo trên ảnh có chứa những nội dung chữ mình mong muốn. [irp posts="5987" name="Trải nghiệm công nghệ nhận diện gương mặt ngay tại Vietnam Mobile Day 2018, bạn đã thử chưa !"] [irp posts="3146" name=" Muốn đi nhanh phải dựa vào dev, muốn đi nhanh hơn nữa phải dựa vào khách hàng""] Optical character recognition (also optical character reader, OCR) is the mechanical or electronic conversion of images of typed, handwritten or printed text into machine-encoded text, whether from a scanned document, a photo of a document, a scene-photo (for example the text on signs and billboards in a landscape photo) or from subtitle text superimposed on an image. OCR Input (PNG file): Screenshot_2017-03-15-14-57-02.png OCR Output (text): The text “Logs saved to sdcard/SysLog/2017-03-15_14.56.59” Các bước thực hiện: 1. Bạn có thể tạo một project mới hoặc tải project mẫu mình đã [...]
Read more →
Bài viết được sự cho phép của tác giả Lương Văn Phúc Chào hỏi xã giao Chào các bạn, cho phép mình giật dòng tít câu view tí nhé. Ngày 28 tháng 8 vừa rồi, Chrome 85 đã chính thức hỗ trợ ảnh AVIF. Bạn thử search nhanh trên Google là sẽ thấy ngay cộng đồng developer háo hức và kì vọng vào nó như thế nào (mình không nói điêu đâu). Vậy AVIF là định dạng ảnh gì và nó có gì đặc biệt so với các định dạng ảnh lâu đời như JPEG hay PNG? Hãy cùng mình tìm hiểu nhé. Bối cảnh lịch sử Hiện tại bạn vẫn còn sử dụng ảnh JPEG và PNG chứ? Không phải chỉ mình bạn đâu, mà cả thế giới này vẫn đang sử dụng chúng. Từ các trang web, cho đến các phần mềm, và cả các thiết bị như điện thoại, máy tính bảng... đều mặc định sử dụng định dạng ảnh này. JPEG ra đời năm 1992, PNG ra đờ [...]
Read more →
Bài viết dành cho những người nghiện tốc độ, nghiện cách viết ES6, cùng điểm qua 3 lỗi thường gặp dẫn đến ảnh hửởng performance trong Javascript. 1. loop qua một array Chúng ta thử xem thời gian tiêu tốn cho việc loop qua 10k item trong array for: ~10 microseconds while: ~11 microseconds forEach: ~77 microseconds for-of: ~110 microseconds reduce: ~113 microseconds Nếu muốn tính tổng của một array thì sử dụng reduce là rõ ràng, tuy nhiên cái giá phải trả quá lớn. Vòng lặp mới nhất từ ES6 for-of cũng về áp chót. Như vậy cứ xài vòng for kinh điển, tuy cũ mà nhanh gấp 10 lần cái for-of Tuyển dụng Javascript đãi ngộ tốt trên TopDev 2. Duplicate một array Khi thế giới đang tồn thờ tư tưởng immutable function ( không sửa cái input khi cho ra output ), việc duplicate một input array là chuyện thường ngày ở huyện. Chúng ta hãy xem kết quả tất cả các cách chúng ta có thể dùng để duplicate một array [].concat(arr): ~366 microseconds arr.slice(): ~367 microseconds arr.map(x => x): ~469 microseconds [...arr]: ~512 microseconds Array. [...]
Read more →
Đối với các bạn mới bắt đầu làm quen React Native thì việc tối ưu performance là điều không cần thiết. Các bạn nên dành thời gian để tìm hiểu xem props/state là gì, tạo style thế nào, tạo component ra sao, blabla... Nhưng khi đã thành thạo những kiến thức cơ bản và bắt đầu làm 1 sản phẩm hoàn chỉnh thì việc quan tâm đến performance là điều cực kỳ quan trọng, đặc biệt trong những view phức tạp hoặc có dữ liệu lớn. Nguyên tắc chung khi lập trình giao diện là: render càng nhiều, performance càng thấp (app càng lag). Vậy nên để cải thiện performance, việc đầu tiên chúng ta phải xem xét là có xử lý nào gây ra những render không cần thiết hay không? Tuy nhiên, có những thói quen lập trình tưởng chửng rất đơn giản nhưng lại là nguyên nhân của những render không mong muốn. Cùng thử xem các lý [...]
Read more →
Lập trình viên có cần thiết kế không? Thiết kế là một kỹ năng rất cần thiết cho bất cứ ngành nghề nào, đặc biệt là lập trình. Biết một chút thiết kế sẽ giúp bạn đi xa hơn trên con đường phát triển sự nghiệp. Cũng chính vì vậy, hôm nay TopDev xin giới thiệu một số tài nguyên thiết kế web và hình ảnh mà rất nhiều lập trình viên thích sử dụng. [irp posts="11183" name="Thiết kế hệ thống URL Shortening giống Bit.ly chịu tải 6 tỷ click 1 tháng"] Các tài nguyên thiết kế web và hình ảnh Tạo và Chỉnh sửa hình ảnh Nếu bạn muốn tự sáng tạo hình ảnh hay chỉnh sửa các hình ảnh hiện có, bạn có thể dùng Figma và Pixelmator. Còn có ứng dụng khác là Gravit Designer, là một ứng dụng thay thế tuyệt vời cho các ứng dụng thiết kế vector như Adobe Illustrator và Sketch. Nói về ứng dụng Figma, [...]
Read more →
Yeah, quay lại series Javascript World đầy hào hứng thật ra thất nghiệp ở nhà viết bậy bạ chơi. Nay mình giới thiệu cho các bạn 1 library thao tác trên Canvas – FabricJS. Rồi sử dụng thư viện này làm tool chế ảnh đơn giản như Haivl ngày xưa! Bài viết này không có nhận được xu nào từ FabricJS, Nếu ai đó làm ở FabricJS đọc được tiếng Việt thì có thể liên hệ tui quảng cáo nhé. Lên kế hoạch thao tác Fabric Javascript Các nhân vật xuất hiện Bootstrap – Hậu cần xây dựng hậu trường, bối cảnh FabricJS – Nhân vật chính Google & Stackoverflow – Đạo diễn Tìm hiểu nhân vật chính Trang chủ : http://fabricjs.com/ Trước khi đọc dòng này thì chắc chắn rằng bạn đã vào trang chủ của nhân vật chính để hiểu sơ sơ về nhân vật chính tham gia bộ tool chế ảnh này nhé. Hehe Lên kịch bản Sản phẩm cuối cùng giống giống cái tool chế ảnh [...]
Read more →
Hoạt ảnh giao diện người dùng tốt có thể cải thiện đáng kể trải nghiệm người dùng của ứng dụng dành cho thiết bị di động nếu nó được thực hiện đúng. Nó thường là một trong những yếu tố phân biệt một ứng dụng tốt và chưa tốt . Thiết kế một hình ảnh động có ý nghĩa và hơi rất khó. Đặc biệt, để chuyển đổi hoạt ảnh hoặc chế độ xem thì hơi phức tạp, và khó khăn cho các nhà phát triển iOS thêm nó vào ứng dụng. Tuyển dụng ios không yêu cầu cao, đi làm ngay Giả sử bạn không phải là nhà phát triển độc lập, có thể bạn đang làm việc trong một nhóm các nhà phát triển và nhà thiết kế UI / UX. Đã bao nhiêu lần bạn gặp tình huống này? Nhà thiết kế của bạn cho bạn thấy một hoạt hình đẹp và thú vị và yêu cầu bạn kết hợp nó trong ứng [...]
Read more →
Sử dụng thư viện Pillow (PIL Fork) để tiến hành các thao tác xử lý hình ảnh đơn giản như resize, crop, rotate… 6.1. Cài đặt PIL Vào trang web sau để download / cài đặt package PIL cho python của bạn http://pillow.readthedocs.org/en/latest/installation.html Sau khi cài đặt thì có thể sử dụng các module trong package IPL from PIL import Image 6.2. Mở file from PIL import Image im = Image.open("photo.jpg") Sau khi mở file hình thành công thì có thể thao tác trên đối tượng im . Tuyển dụng python từ các công ty hot 6.3. Ghi file Từ đối tượng Image có thể lưu file xuống máy tính bằng phương thức save(path, type) . Ví dụ: im.save('photo_new.jpg', 'JPEG') 6.4. Tạo thumbnail Sử dụng phương thức thumbnail như sau: from PIL import Image im = Image.open('photo.jpg') im.thumbnail((100, 100)) im.save('photo_thumbnail.jpg', 'JPEG') thumbnail không trả về image mới mà thực hiện trên object image đang gọi. 6.5. Các thao tác xử lý hình ảnh Tham khảo thêm thư viện PIL tại: http://pillow.readthedocs.org/en/latest/index.html << Phần 5: thao tác trên tập [...]
Read more →
Bạn có kế hoạch Netflix & Chill cuối tuần này? Thực chất phim bạn chọn sẽ bị ảnh hưởng nhiều bởi thuật toán tinh vi của Netflix. Tương tự, các quyết định nơi bạn chọn đi ăn tối hay những quần áo sẽ mặc đang ngày càng bị ảnh hưởng bởi các công nghệ tiên đoán dựa vào deep learning. Dưới đây là 5 cách mà các công ty công nghệ phổ biến Netflix, Yelp, Yahoo, Stitch Fix, Google cải thiện trải nghiệm online của bạn với trí tuệ nhân tạo (AI). Netflix tự động cá nhân hoá Layouts và Movie Thumbnails Trong lịch sử, xem truyền hình là một kênh truyền thông uni-directional. Bạn xem được nôi dung, nhưng nó không phản hồi lại bất kỳ thông tin gì với nhà sản xuất. Với kĩ thuật số trực tuyến, history của bạn, click chuột và các cụm tự tìm kiếm đều được Netflix ghi nhận để tìm hiểu các lựa chọn của bạ [...]
Read more →
Ngày nay, các loại biểu đồ lớn dùng để liệt kê chi tiết nhiều loại công nghệ khác nhau thường được sử dụng bởi các web developer trên các Interweb. Bức hình phía trên chính là một trong số các loại biểu đồ đó (chủ yếu dành cho các backend developer). Tôi dám cá rằng nó sẽ là nguồn tư liệu tuyệt vời cho cả dân nghiệp dư và dân chuyên nghiệp. Tác giả của biểu đồ trên đã chỉ ra rõ ràng những công nghệ mà ta cần phải biết nếu muốn trở thành một frontend web developer, hay backend web developer, hoặc một system administrator. Nhưng mà dù sao đi nữa thì tôi chắc chắn nó rất có ích đối với những ai mới bắt đầu học viết những đoạn code đầu tiên. Vì sao tôi nói như vậy? Bởi vì tôi đã làm một developer suốt hơn 15 năm (bắt dầu với việc tập tành về QBASIC game vào năm 8 tuổi). Tôi [...]
Read more →