<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Góc nhìn on Trobz</title>
		<link>https://trobz.com/vi/insights/</link>
		<description>Recent content in Góc nhìn on Trobz</description>
		<generator>Hugo</generator>
		<language>vi-VN</language>
		
		
		
		
			<atom:link href="https://trobz.com/vi/insights/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>AI trong Odoo: nền tảng về vector, embedding &amp; module field_vector</title>
				<link>https://trobz.com/vi/insights/ai-vectors-embeddings-field-vector-odoo/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trobz.com/vi/insights/ai-vectors-embeddings-field-vector-odoo/</guid>
				<description>&lt;h2 id=&#34;nền-tảng-vector-và-embedding&#34;&gt;Nền tảng: vector và embedding&lt;/h2&gt;&#xA;&lt;h3 id=&#34;vector-là-gì&#34;&gt;Vector là gì?&lt;/h3&gt;&#xA;&lt;p&gt;Trong khoa học máy tính và xử lý dữ liệu, vector là một danh sách số có thứ tự, ví dụ &lt;code&gt;[1.2, -0.5, 0.8]&lt;/code&gt;. Trong toán học và vật lý, vector biểu diễn độ lớn và hướng. Trong AI, vector được dùng để biểu diễn các đặc trưng hoặc tọa độ trong không gian nhiều chiều.&lt;/p&gt;&#xA;&lt;h3 id=&#34;embedding-là-gì&#34;&gt;Embedding là gì?&lt;/h3&gt;&#xA;&lt;p&gt;&lt;strong&gt;Embedding&lt;/strong&gt; là một vector biểu diễn đối tượng trong thế giới thực, như một đoạn văn bản, hình ảnh, người dùng hay sản phẩm, dưới dạng máy có thể xử lý và so sánh.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chi phí thực sự của việc trì hoãn nâng cấp Odoo và cách kiểm soát</title>
				<link>https://trobz.com/vi/insights/real-cost-delaying-odoo-upgrade/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trobz.com/vi/insights/real-cost-delaying-odoo-upgrade/</guid>
				<description>&lt;p&gt;Hầu hết doanh nghiệp trì hoãn nâng cấp Odoo không phải vì đã cân nhắc kỹ về tài chính. Họ đang né một sự xáo trộn chưa tính hết được chi phí, để giữ một hiện trạng có vẻ vẫn kiểm soát được. Hệ thống vẫn chạy. Đội ngũ đã quen. Phòng tài chính chưa lên tiếng đủ mạnh.&lt;/p&gt;&#xA;&lt;p&gt;Phép tính đó thường sai, và sai số có xu hướng lớn dần theo thời gian.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Design pattern trong Odoo: Chain of Responsibility</title>
				<link>https://trobz.com/vi/insights/design-patterns-odoo-chain-of-responsibility/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trobz.com/vi/insights/design-patterns-odoo-chain-of-responsibility/</guid>
				<description>&lt;p&gt;Hãy hình dung việc xây dựng một quy trình kiểm tra chất lượng cho nhà máy, nơi mỗi sản phẩm phải đi qua một chuỗi bước kiểm tra. Ban đầu, các bước này được viết cứng trong một khối code tuyến tính. Theo thời gian, bước kiểm tra mới được thêm vào, một số bước cần đổi thứ tự và các trường hợp đặc biệt xuất hiện. Khối &lt;code&gt;if/else&lt;/code&gt; lớn hay hàm nguyên khối trở nên khó sửa, và việc thêm hoặc đổi thứ tự các bước kiểm tra trở thành thao tác rủi ro.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Design pattern trong Odoo: Facade</title>
				<link>https://trobz.com/vi/insights/design-patterns-odoo-facade/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trobz.com/vi/insights/design-patterns-odoo-facade/</guid>
				<description>&lt;p&gt;Khi phát triển cho Odoo, đặc biệt với các module lớn, lập trình viên thường phải dùng thư viện bên ngoài để mở rộng chức năng. Những thư viện này có thể phức tạp và hiếm khi khớp tự nhiên với framework Odoo, dễ dẫn đến code phụ thuộc chặt chẽ và khó bảo trì.&lt;/p&gt;&#xA;&lt;p&gt;Mẫu thiết kế Facade giúp giải quyết vấn đề này bằng cách bọc thư viện đó sau một interface đơn giản, phù hợp với Odoo. Bài viết này giới thiệu cách mẫu thiết kế vận hành và cách Odoo áp dụng nó khi tích hợp với bên ngoài.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Design pattern trong Odoo: Proxy</title>
				<link>https://trobz.com/vi/insights/design-patterns-odoo-proxy/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trobz.com/vi/insights/design-patterns-odoo-proxy/</guid>
				<description>&lt;p&gt;Khi làm việc với code JavaScript trong Odoo, lập trình viên có thể gặp &lt;code&gt;Proxy&lt;/code&gt;. Proxy là một mẫu thiết kế cấu trúc (structural design pattern), cung cấp một đối tượng thay thế cho một đối tượng khác. Proxy kiểm soát việc truy cập vào đối tượng gốc và có thể chạy thêm logic trước hoặc sau khi yêu cầu đến được đối tượng đó. Có thể hình dung proxy như nhân viên bảo vệ ở cửa tòa nhà, kiểm tra giấy tờ trước khi cho người vào.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Design pattern trong Odoo: Template Method</title>
				<link>https://trobz.com/vi/insights/design-patterns-odoo-template-method/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trobz.com/vi/insights/design-patterns-odoo-template-method/</guid>
				<description>&lt;p&gt;Hãy thử hình dung việc quản lý vận chuyển trong Odoo khi logic của mọi đơn vị vận chuyển bị dồn vào một chỗ. Với mỗi thao tác (lấy giá cước, gửi hàng hay theo dõi đơn), code sẽ là một khối &lt;code&gt;if/elif/else&lt;/code&gt; rất dài, và mỗi lần thêm đơn vị vận chuyển mới là phải sửa đoạn code đó, kèm nguy cơ làm hỏng các tích hợp đang chạy. Cách làm này khó mở rộng, dễ lỗi và khó bảo trì.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Đóng góp cho OCA nói lên điều gì về một đối tác Odoo</title>
				<link>https://trobz.com/vi/insights/oca-contribution-odoo-partner/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trobz.com/vi/insights/oca-contribution-odoo-partner/</guid>
				<description>&lt;p&gt;Lựa chọn đối tác ERP không chỉ là một quyết định công nghệ. Đối tác được chọn sẽ ảnh hưởng đến mức độ phù hợp của hệ thống với hoạt động doanh nghiệp, mức rủi ro của dự án và khả năng phát triển của hệ thống trong những năm tiếp theo.&lt;/p&gt;&#xA;&lt;p&gt;Khi so sánh các đơn vị triển khai, doanh nghiệp có cấu trúc phức tạp thường tìm bằng chứng cụ thể thay vì chỉ dựa vào lời chào hàng. Một căn cứ đáng xem là vai trò của đối tác trong &lt;strong&gt;Odoo Community Association (OCA)&lt;/strong&gt;, tổ chức phi lợi nhuận hỗ trợ việc cùng phát triển các module Odoo mã nguồn mở.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Giới thiệu odoo-addons-path: công cụ giúp lập trình viên quản lý addons path trong Odoo</title>
				<link>https://trobz.com/vi/insights/introducing-odoo-addons-path/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trobz.com/vi/insights/introducing-odoo-addons-path/</guid>
				<description>&lt;p&gt;Thiết lập &lt;a href=&#34;https://www.odoo.com/documentation/19.0/developer/reference/cli.html#cmdoption-odoo-bin-addons-path&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;addons_path&lt;/code&gt;&lt;/a&gt;&#xA; trong dự án Odoo trông có vẻ đơn giản, cho đến khi phải quản lý nhiều repository, submodule và nhiều thứ khác. Mỗi cấu trúc dự án sắp xếp addon theo cách riêng, và thứ tự các thư mục rất quan trọng: chỉ một thư mục đặt sai vị trí cũng có thể âm thầm ghi đè module hoặc nạp nhầm module tùy chỉnh.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/trobz/odoo-addons-path&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;odoo-addons-path&lt;/a&gt;&#xA; giúp gỡ bỏ gánh nặng đó. Công cụ tự nhận diện cấu trúc dự án và tạo &lt;code&gt;addons_path&lt;/code&gt; cuối cùng theo đúng thứ tự, để lập trình viên không phải thiết lập thủ công và dễ mắc lỗi.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Giới thiệu odoo-venv</title>
				<link>https://trobz.com/vi/insights/introducing-odoo-venv/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trobz.com/vi/insights/introducing-odoo-venv/</guid>
				<description>&lt;p&gt;Cài đặt và chạy Odoo như thế nào? Câu hỏi nghe có vẻ đơn giản, nhưng số câu trả lời hợp lệ có thể nhiều hơn nhiều người nghĩ, tùy vào người được hỏi.&lt;/p&gt;&#xA;&lt;p&gt;Dưới đây là tổng quan chưa đầy đủ về các cách hiện có:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Odoo SA&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Duy trì &lt;a href=&#34;https://nightly.odoo.com&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;các gói DEB và RPM&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Duy trì &lt;a href=&#34;https://github.com/odoo/docker/tree/master&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;image Odoo chính thức trên Docker Hub&lt;/a&gt;&#xA;, xây dựng trên image Ubuntu và gói DEB của chính Odoo&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;OCA (Odoo Community Association)&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Cung cấp image Docker để chạy test: &lt;a href=&#34;https://github.com/oca/oca-ci&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;oca-ci&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Đưa các addon OCA lên một pip wheelhouse, nhờ đó có thể cài đặt hoàn toàn bằng pip&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Các đơn vị tích hợp Odoo&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Dùng các giải pháp dựa trên Docker, chẳng hạn:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tecnativa/doodba&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Doodba&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/camptocamp/docker-odoo-project&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;docker-odoo-project&lt;/a&gt;&#xA; của Camptocamp&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Mỗi cách đều có ưu điểm riêng. Nhưng một thiết lập càng dựa vào nhiều lớp trừu tượng thì việc phát triển trên máy cục bộ càng phức tạp và khó khăn.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
