Bỏ qua, tới nội dung chính
Cà Phê & Code Cà Phê & Code
  • Trang chủ
  • Bài viết
    • Chuyên mục
    • Backend
    • Bảo mật
    • Bảo mật ứng dụng web
    • Công cụ
    • Cơ sở dữ liệu
    • DevOps
    • Docker
    • Giải thuật
    • Go
    • Hệ điều hành
    • Hệ thống
    • Java
    • Kiến trúc hệ thống
    • Lập trình
    • Lập trình Go
    • Linux
    • Mang
    • Mạng
    • Message Queue
    • Odoo
    • RabbitMQ
    • Spring
    • Trình biên dịch
    • Vert.x
    • Web

    • Xem tất cả
    • Chuyên mục
    • Sê-ri
    • Thẻ
  • Luyện thi
  • Ghi chú
  • Thiết kế CSDL
  • Thông tin
    • Giới thiệu
    • Liên hệ
Đăng nhập

Lưu trữ — Tháng 9/2026

1676 bài viết
Odoo 18/09/2026 4 phút

EXPLAIN ANALYZE nói thật: cùng một câu WHERE, thêm một dòng index=True biến Seq Scan cost 85 thành Index Scan cost 8

Index là B-tree giúp PostgreSQL nhảy thẳng tới dòng cần thay vì quét cả bảng. Odoo tự index gì, khi nào bạn phải thêm index=True, và cái giá của index — với plan EXPLAIN ANALYZE thật trên 3000 bản ghi.

#developer#hieu-nang#odoo-19#odoo#lap-trinh#index
24
Odoo 18/09/2026 4 phút

Trang /my/the với bảng thẻ, nút sắp xếp và phân trang 1-2-3: dựng bằng portal_pager và t-call portal.portal_table

Sau ô đếm ở /my, đây là trang danh sách đầy đủ của portal: liệt kê bản ghi của chính khách, phân trang bằng portal_pager, sắp xếp bằng searchbar_sortings. Dựng thật route /my/the và chụp bảng + pager trên Odoo 19.

#developer#odoo-19#odoo#qweb#controller#portal#lap-trinh
18
Odoo 18/09/2026 5 phút

Trả một file cho khách tải về mà tên 'danh-sách-thẻ.csv' không bị vỡ dấu: bí mật ở content_disposition

Controller trả file để tải xuống: make_response với Content-Type và Content-Disposition đúng, content_disposition cho tên tiếng Việt có dấu, và Stream cho file lớn. Demo thật một route xuất CSV rồi curl xem header trên Odoo 19.

#http#download#developer#odoo-19#odoo#controller#lap-trinh
19
Odoo 18/09/2026 4 phút

Cùng một route POST, thêm token thì 200, thiếu token thì 400: mổ xẻ tấm khiên CSRF của Odoo

CSRF bảo vệ form POST khỏi giả mạo request. Cách Odoo sinh và kiểm token (HMAC + database.secret, consteq), khi nào csrf=False là đúng, và vì sao jsonrpc không cần — kiểm chứng bằng ba lần POST thật trên Odoo 19.

#developer#bao-mat#odoo-19#odoo#controller#csrf#lap-trinh
14
Odoo 18/09/2026 5 phút

File khách gửi lên không nằm trong request.params — nó ở httprequest.files, và đây là cách đọc rồi lưu an toàn

Nhận file upload trong controller Odoo: đọc từ request.httprequest.files, kiểm loại và kích thước, lưu thành ir.attachment. Demo thật một form tải ảnh, upload một PNG và xác nhận attachment trên Odoo 19.

#upload#attachment#developer#odoo-19#odoo#controller#lap-trinh
26
Odoo 18/09/2026 4 phút

so_lan_vao: 1, 2, 3 — controller không có bộ nhớ, nhưng session thì có: mổ xẻ request.env và request.session

request.env là cửa vào ORM (dựng theo auth), request.session giữ trạng thái giữa các request. Cách chúng hoạt động, khác nhau ra sao, và cách dùng đúng — kiểm chứng bằng một bộ đếm session thật tăng qua từng lần gọi trên Odoo 19.

#session#developer#orm#odoo-19#odoo#controller#lap-trinh
18
  • 1
  • …
  • 101
  • 102
  • 103
  • 104
  • 105
  • …
  • 280

Trang 103 / 280 — tổng 1676 bài viết

Tìm kiếm
Admin

Nhấp một ngụm cà phê, viết thêm một dòng code

Xem thêm
Chuyên mục
  • Odoo 400
  • Giải thuật 270
  • Cơ sở dữ liệu 237
  • Lập trình 227
  • Lập trình Go 133
  • DevOps 114
  • Java 100
  • Hệ điều hành 90
  • Docker 68
  • Spring 60
  • Go 60
  • Bảo mật 57
  • Linux 54
  • Vert.x 50
  • Mạng 45
  • Trình biên dịch 45
  • RabbitMQ 40
  • Backend 40
  • Message Queue 40
  • Công cụ 30
  • Web 18
  • Hệ thống 12
  • Kiến trúc hệ thống 12
  • Bảo mật ứng dụng web 1
Xem nhiều nhất
Bốn mươi dòng kiểm trước khi bấm nút triển khai — mỗi dòng đến từ một lần đã hỏng 10/08/2026 · 157
900 lần chạy test không bắt được lỗi luôn nằm đó — thêm một dòng sleep, nó lộ ra 100% 05/08/2026 · 141
Cùng một jar, ảnh Docker từ 866 MB xuống 126 MB — và cái bẫy làm ảnh nhỏ nhất in tiếng Việt ra dấu hỏi 06/08/2026 · 120
Integer 127 == 127 cho true, nhưng 128 == 128 cho false — vì sao, và bẫy đó ẩn ở đâu 05/05/2026 · 107
Một dòng println nở ra sáu lệnh, dấu cộng nối chuỗi biến thành invokedynamic — mở file .class ra xem 04/05/2026 · 98
Thẻ phổ biến
#zero-to-hero#do-dac#hieu-nang#odoo#odoo-19#go#postgresql#developer#golang#devops#lap-trinh#sql#java#database#huong-dan#he-dieu-hanh#toi-uu#bao-mat#backend#100-ngay-java#docker#trinh-bien-dich#container#linux#dong-thoi#redis#csdl#docker-compose#spring#kafka#kubernetes#web#giai-thuat#message-queue#giam-sat#mang#vertx#cau-truc-du-lieu#co-so-du-lieu#kien-truc-may-tinh#performance#quan-sat#orm#rabbitmq#van-hanh#concurrency#kien-truc#view#ke-toan#owl#http#index#microservice#observability#grpc#reactive#runtime#cong-cu#kho#monitoring#networking#bo-nho#qweb#debug#git#mat-ma#version-control#security#website#gc#resilience#crm#data-structures#prometheus#protobuf#serialization#collections#compression#nhan-su#regex#search#testing#thiet-ke#ban-hang#caching#cau-hinh#context#controller#do-tin-cay#elasticsearch#gioi-thieu#interface#probabilistic#shell#algorithms#bao-cao#command-line#compiler#he-thong-lon#json#mua-hang#nen-du-lieu#regular-expression#streaming#system-design#tong-ket#unix#cache#ecommerce#jvm#openssl#owasp#report#spring-boot#stream#distributed#jpa#metrics#san-xuat#vacuum#action#bloat#gzip#io#logging#network#planner#spring-security#test#tracing#benchmark#chan-doan#checklist#du-an#explain#oop#phan-quyen#pprof#retry#tcp#architecture#encoding#event-bus#generics#goroutine#jmh#join#latency#memory#module#mrp#mvcc#scheduler#tls#ton-kho#transaction#amqp#bloom-filter#distributed-systems#email#error#exchange#heap#http2#kanban#lien-he#luong-ao#opentelemetry#phan-vung#replication#spring-amqp#statistics#thanh-toan#bat-dong-bo#binary#debugging#form#functional#go-loi#idempotency#load-balancing#map#middleware#pipeline#profiling#quality#routing#rpc#spring-mvc#sre#wizard#api#assets#atomic#backpressure#backtracking#bat-bien#build#bytecode#cardinality#channel#chatter#closure#cong-no#connection-pool#connection-pooling#consumer#cpu#deadlock#domain#histogram#hot-update#https#isolation#jwt#list#log#mutex#namespace#percentile#rate-limiting#re2#rest#san-pham#scss#sharding#slice#syscall#testcontainers#trien-khai#tu-dong-hoa#unicode#wal#websocket#widget#wire-format#zstd#aes#allocation#assembly#authentication#automation#backoff#bash#bom#cas#chat-luong#circuit-breaker#cqrs#csrf#deploy#dich-vu-khach-hang#dlx#dockerfile#do-tre#entropy#erp#error-handling#escape-analysis#event-driven#event-loop#exception#frontend#grep#group-by#hash-table#helpdesk#hmac#hoa-don#inheritance#interceptor#iterator#jackson#jaeger#javascript#jdbc#kieu-du-lieu#lambda#lock-free#lo-trinh#lua#luu-tru#mat-khau#maven#migration#multiplexing#nginx#nha-cung-cap#outbox#pagination#partition#phe-duyet#portal#quan-ly-cong-viec#queue#rang-buoc#reflect#reflection#server-action#snippet#socket#status-code#string#timeout#tim-kiem#toolchain#tuy-bien#varint#vertx-web#work-mem#xac-thuc#xpath#activity#aead#aggregate#alignment#analytics#analyze#async#auth#autovacuum#awk#bao-gia#bao-tri#barcode#batch#bat-dau#bcrypt#bien-the#big-o#brotli#button#byte#cgroup#cham-cong#chi-phi#chuan-hoa#chung-chi#cluster#codegen#collectors#commit#constant-time#constraint#consumer-group#consumer-lag#copy#cors#count-min-sketch#cron#cross-compile#crud#csp#cte#da-cong-ty#database-sql#deadline#default#delete#delivery-semantics#delve#dependency-inversion#devirtualization#dich-thuat#dictionary#dinh-gia-ton-kho#distributed-lock#dns#do-ben#dynamic-programming#ecdsa#embed#event-sourcing#fanout#field-widget#fillfactor#full-text-search#future#giao-dich#giao-dien#giao-hang#goroutine-leak#graph#greedy#ha#hash#hashing#health-check#he-thong#hikaricp#hoat-dong#hooks#hop-dong#hyperloglog#i18n#inlining#inverted-index#ir-cron#itab#java-time#jdk#jfr#jit#jsonb#junit#keep-alive#ke-thua#ket-noi#khoa#lead#lock#lru#luong#many2one#memory-leak#menu#merge#metadata#model#nap-du-lieu#ngan-hang#nghi-phep#nhap-du-lieu#optimization#optional#ordering#padding#parallel#partitioning#pattern-matching#pbkdf2#pgbouncer#phan-tich#phan-trang#plan9#port#prefetch#prepared-statement#proc#pubsub#python#quorum-queue#rate-limit#realtime#rebase#record#recordset#recovery#registry#replica#retention#sampling#sap-xep#scaling#schema#schema-evolution#sealed#secrets#sed#seo#service-discovery#session#signal#singleflight#skip-locked#sliding-window#slog#sort#stack#strace#struct#tai-nguyen#theme#thread#throughput#thue#tich-hop#tieng-viet#time#timezone#timing-attack#toast#token#transientmodel#trigram#ttl#tuyen-dung#type-parameter#unsafe#upload#window-function#worker-pool#xay-dung-web#xml#x-sync#xz#zigzag#2fa#abstract-model#access-control#ack#active-ids#actuator#addons#aggregation#alerting#alertmanager#allocator#amazon#analytic#analyzer#anchor#an-toan#aof#api-design#api-key#append#approvals#argon2#assert#at-least-once#attachment#attendances#audit#authorization#autoboxing#autocomplete#automated-action#avro#backlog#backreference#backup#bandwidth#bang-dieu-khien#bang-gia#ban-hang-online#bao-cao-tai-chinh#barrier#batch-insert#bce#bearer-token#benchmem#benchstat#bfs#bidirectional#bigdecimal#bigkey#bigtable#binary-search#binding#bind-mount#bisect#blockingqueue#blog#bm25#bool-query#bounds-check#boxing#branch#brin#brute-force#bst#bucket#budget#buffer#build-context#build-tags#bulk#bulkhead#bulk-load#but-toan#bzip2#cache-hit-ratio#cache-line#calendar#cam-bay#cancellation#ca-nhan-hoa#canh-bao#capture-group#cassandra#cay-can-bang#cbc#cbor#cgo#chacha20#cham-gio#character-class#chart-of-accounts#chat#checkpoint#cherry-pick#chmod#chu-ky-so#chunked#c-interop#classloader#classpath#clean-architecture#client-action#cloudflare#codec#code-generation#collision#command#command-injection#comparator#comparison#compatibility#compile-time#completablefuture#component#compose#composite#computed#concurrenthashmap#conditional-compilation#config#configuration#conflict#cong-doan#cong-tac#consensus#consistent-hashing#constructor#con-tro#con-tro-ham#cookie#core-dump#coredump#coroutine#cost#cost-model#cot-moc#coverage#criteria#cross-origin#csprng#css#cuckoo-filter#curl#cut#dag#da-hinh#da-ngon-ngu#danh-gia#danh-so#dashboard#data-processing#datetime#dce#ddd#ddl#dead-code#dead-letter-queue#decoder#deduplication#default-method#deflate#delegation#delta#demo-data#dependencies#dependency-injection#deployment#deque#detached-head#developer-mode#dev-mode#devtools#dfa#dfs#dia-chi#dialog#dieu-chuyen#dieu-khien#dieu-kien#diffie-hellman#dijkstra#dinh-kem#directive#discord#discuss#disk#display-name#distinct#distributed-transaction#dlv#dockerignore#doi-chieu#doi-sales#doi-soat#do-luong#domain-driven-design#don-hang#don-mua#don-vi-tinh#do-phuc-tap#download#dto#dual-write#du-bao#du-lieu#durability#dynamo#ecb#ecdh#editor#effective-cache-size#effective-io-concurrency#elliptic-curve#email-marketing#embed-fs#employees#encapsulation#entity#enum#env#envelope-encryption#ep-kieu#epoll#equals#errgroup#error-boundary#etag#etcd#evacuation#event#eviction#exactly-once#executor#exists#exit-code#expvar#fail-fast#fallback#false-sharing#federation#feed#fetch#ffi#field#file-descriptor#filestore#filter#finalizer#find#flaky#flatbuffers#flatmap#flyway#forkjoin#form-view#for-update#fsck#full-page-writes#full-text#functional-options#fuzzing#fuzzy#garbage-collector#gcm#gctrace#geohash#geospatial#getter#get-view#gia#giay-bao-co#gin#gist#gitignore#gitops#gob#godebug#gogc#go-generate#golangci-lint#golden-file#gomaxprocs#gomemlimit#gomock#go-modules#google#goos#gop-du-lieu#go-redis#gorilla#gossafunc#go-vet#govulncheck#go-work#graalvm#graceful-degradation#graceful-shutdown#gradle#group#groups#grpcurl#gtgt#h3#hàm-bậc-cao#handle#hang-doi#happens-before#haproxy#hashcode#hashicorp#hashmap#hazelcast#header#headers#heavy-hitters#helm#help#hexagonal#hibernate#hmap#hoa-don-dien-tu#hoan-tien#hook#hoot#hsts#html#http3#huffman#huge-pages#idempotence#id-generation#idor#iface#image#image-size#indexing#index-only-scan#inherit#inherits#init#inner-class#instagram#integration-test#internals#invoicing#iot#ir-attachment#ir-sequence#isolation-level#isr#iter-pull#iter-seq#jaccard#javac#javap#jitter#jlink#jmm#job-queue#journal#jsonrpc#jstack#kek-dek#key-rotation#keyset#khach-hang#khau-hao#khoa-chinh#khoa-cong-khai#khoa-ngoai#khoa-so#khuyen-mai#kiem-ke#kiem-soat#kien-hang#kiosk#knowledge#ky-dien-tu#ky-nang#ky-online#lag#lap-lich#lateral#layer#lazy#lazy-load#lazy-queue#leak#level#like#linear-search#linker#linkname#linter#list-view#livelock#load-average#load-shedding#locality#lock-date#log-compaction#logical#logs#lookahead#lookaround#lookbehind#lo-serial#lost-update#lucene#lz4#lz77#ma-hoa#mail#mail-activity#mail-mail#mail-template#mail-thread#maintenance#maintenance-work-mem#management#many2many#mapping#mapstructure#match#materialize#mau-bao-gia#mau-email#ma-vach#max-connections#media#memcached#memoization#memory-hard#memory-mapped-file#memory-model#merge-join#mergesort#message#messagepack#message-post#messaging#metaprogramming#method#microbenchmark#microservices#minhash#mixin#mmap#mockgen#mocking#mockito#moi-truong#monetary#monorepo#mo-rong#mount#mtls#multiline#multi-stage#nagle#name-search#nang-cap#native-image#nen-file#net-http#netpoller#nfa#ngan-sach#nguoi-dung#nhan-hang#nhap-kho#nhat-ky#nhieu-buoc#nio#no-co#noinline#non-root#notification#n-plus-1#numeric#oauth2#oca#offset#oidc#onchange#on-conflict#one2many#or#order#overlayfs#p99#pacing#package#packfile#panic#paperformat#partition-management#partition-pruning#partition-wise-join#password#password-hashing#patch#path-traversal#patterns#payment#pdb#pdf#pecs#perf#persistence#pgbadger#pgbench#pg-locks#pgo#pg-repack#pg-stat-statements#pgstattuple#pg-trgm#phan-bo#phan-tan#phoi-hop#phong-ban#phu-thuoc#pid#pipe#pivot#plan-cache#plugin#poison-message#poly1305#ports-adapters#post-mortem#preemption#preflight#priority-queue#process#producer#production#projection#promise#promql#properties#property-based-testing#props#ps#publisher-confirms#push#pylint#qos#qrcode#quan-he#quantifier#quantile#query-dsl#quic#quicksort#quoting#quyen#quy-trinh#race#raft#random#random-page-cost#range-over-func#range-request#rdb#read-model#rebalance#recruitment#recursive#red#redelivery#redirect#red-method#redos#ref#reference#reflog#reindex#related#relevance#remote-debug#repository#requests#res-company#resource#rest-api#restclient#resume#reverse-proxy#rfq#ripgrep#rle#rootfs#ro-ri-bo-nho#round-robin#route#router#routes-rules#rsa#rss#run-length-encoding#runqueue#safe-eval#saga#sao-ke#sao-luu#sargable#saturation#scaffold#scale#schedtrace#scheduled#scheduled-action#script#scylladb#sdkman#search-after#secure-coding#security-header#select#selection#semaphore#sendfile#separator#serializable#servlet#set#set-e#sha256#shannon#shard#shared-buffers#shellcheck#shortest-path#shovel#side-channel#sign#simd#sitemap#size-class#sketch#sla#slf4j#slice-header#slices#slots#smart-button#snapshot#snapshot-testing#so-cai#sockjs#so-do-to-chuc#solid#sorting#source-code#span#spring-data#sqlc#sql-injection#ssa#ssd#sse#stackoverflow#stack-trace#staging#stampede#starvation#stash#static-analysis#staticcheck#status#statusbar#stenciling#stop-the-world#storage#streams#stringer#stripe#struct-tag#structured-concurrency#studio#stw#submodule#subquery#substitution#sudo#su-kien#switch#sync#sync-cond#synchronized#sync-map#sync-pool#syscall-js#sysmon#systray#tagged#tai-dat-hang#tai-khoan#tai-san#tang-truong#tar#t-call#t-digest#template#testing-quick#text#text-keyword#text-processing#t-field#t-foreach#thao-tac-hang-loat#the-phan-loai#thiet-ke-api#thiet-lap#threadlocal#thread-pool#thuc-hanh#thue-gtgt#thundering-herd#thymeleaf#tien-te#timeline#time-off#time-wait#tinh-phi#tiny-allocator#toan-tu#token-bucket#tokenizer#to-khai#top#topic#top-k#topology#totp#tour#transactioncase#transient-model#tra-truoc#tree#treemap#tricolor#tri-thuc#truncate#tuning#tuyen-duong#twitter#ty-gia#type-assertion#typed-nil#type-erasure#type-inference#type-safety#type-set#type-switch#uber#udp#uintptr#ulimit#ung-dung#union#uniq#unlink#unlogged#unsafe-pointer#update#upgrade#upsert#use#use-method#useref#useservice#usestate#utf-8#uuid#ux#vacuum-full#validation#value-object#varargs#verticle#veth#vhost#viet-nam#viettel#visibility-map#volatile#volume#vsz#vulnerability#wait-events#wal-compression#wasi#wasm#webassembly#web-client#webclient#webhook#werkzeug#wire#word-boundary#word-splitting#worker#workers#workspace#work-stealing#worktree#wraparound#write#write-barrier#write-skew#x509#xac-thuc-hai-lop#xargs#xml-id#xmlrpc#xoay-khoa#xss#x-time#xuat-du-lieu#xuat-kho#yield#zero-copy#zero-trust#zlib
Lưu trữ
  • Tháng 9/2026 1676
  • Tháng 8/2026 197
  • Tháng 7/2026 114
  • Tháng 6/2026 64
  • Tháng 5/2026 30
  • Tháng 11/2025 4
  • Tháng 10/2025 27
  • Tháng 9/2025 30
  • Tháng 8/2025 31
  • Tháng 7/2025 30
Theo dõi blog

Nhận email mỗi khi có bài viết mới. Không quảng cáo, huỷ bất cứ lúc nào.

Hoặc dùng RSS
Cà Phê & Code Cà Phê & Code

Cà Phê & Code là blog dành cho những người yêu công nghệ và lập trình. Nơi chia sẻ kiến thức coding, công cụ hữu ích, xu hướng công nghệ, kinh nghiệm phát triển phần mềm và những câu chuyện phía sau màn hình — tất cả được kể theo cách gần gũi, dễ hiểu, như một cuộc trò chuyện bên tách cà phê.

Liên kết
  • Trang chủ
  • Chuyên mục
  • Thẻ
  • Giới thiệu
  • Liên hệ
Chuyên mục nổi bật
Odoo (400)Giải thuật (270)Cơ sở dữ liệu (237)Lập trình (227)Lập trình Go (133)DevOps (114)Java (100)Hệ điều hành (90)Docker (68)Spring (60)Go (60)Bảo mật (57)Linux (54)Vert.x (50)Mạng (45)Trình biên dịch (45)RabbitMQ (40)Backend (40)Message Queue (40)Công cụ (30)Web (18)Hệ thống (12)Kiến trúc hệ thống (12)Bảo mật ứng dụng web (1)

© 2026 Cà Phê & Code. Bảo lưu mọi quyền.