Đây là lần đầu tiên mình thực hiện dự án convert VB6.0 một trong nhưng language mà mình chưa bao giờ thích. Lần đầu viết là khi thực hiện cái môn học CNPM hay QLĐAPM gì đó. Kể từ đó số project dùng VB6.0 chắc ko quá 3 ngón tay.
Vừa thoát nạn đi Nhật thì bị giao cái dự án này với nhân sự chẳng ai biết gì về khái niệm convert. Đau đầu thiệt. Một tương lai không sáng sủa. Nhưng không sao cứ gặm từ từ chắc là được. Mấy bữa này ngồi search và search lên schedule đuối ghê mà lại chết cái là tối mới cảm thấy tỉnh táo. Sáng mai lại có một cái máy chạy bằng cafe. Cố lên.
2009-02-12
2009-01-23
2006-11-02
Cô gái ra đi từ hôm kia .......
Cô gái ra đi từ hôm kia .......
Hôm trước mình vô tình tìm thấy lại cuốn "Cô gái đến từ hôm qua". Phải nói là rất lâu rồi mình chẳng hề đọc một cuốn truyện nào. Ít có thời gian để đọc một cuốn truyện ... không nói chính xác là không có suy nghĩ sẽ đọc một cuốn truyện. Vậy đó không hề giống hồi xưa một chút nào. Hồi xưa mình rất hay đọc truyện và tha hồ có thời gian đọc truyện.
Và bây giờ đọc cùng một cuốn truyện như vậy, mình cũng có suy nghĩ khác hồi xưa. Hồi đó mình đọc và chỉ nghĩ rằng sao nó chuối thế, chẳng lẽ 1 chút xíu mà cũng ko đoán ra 2 con bé đó là một. Và mình đã ngồi kéo hết cuốn truyện thật nhanh để biết làm sao có thể quên một người chỉ trong vòng mấy năm...
Và bây cũng thì cũng khác, có thể hình dung làm sao thằng nhỏ đó có thể quên như vậy. Một lần đi tàu mình cũng đã từng không nhận ra mấy đứa bạn học chung lớp 9, dù ngồi rất gần :D. Mà đó là mấy năm trước rồi, chắc giờ còn quên nhiều hơn nữa. Hic đọc lại mới thấy có nhiều cái để nghĩ hơn. Lúc đọc cuốn truyện này lần đầu là thời gian suốt ngày ngồi một mình trong góc quán và chơi PS. Và lúc đó mình cũng không thể nào hiểu viết một bức thư là sao ... ặc ặc.
Mình cũng từng quen một người , chẳng biết có tương tự và được gọi là 'Tiểu Ly' không nữa.
Dù sao thì cái tên Tiểu Ly cũng hay, tất nhiên không phải theo cái nghĩa 'tiểu vào cái ly' ...
nếu nghĩ như vậy thì bó hand.
Tiểu Ly trong truyện là một cô bé nhỏ xíu.
Còn 'Tiểu Ly' mà mình quen là một cô bé đã vào ĐH. Trong truyện thằng nhóc thích con bé Tiểu Ly
còn mình thì không dành tình cảm cho 'Tiểu Ly' kiểu như vậy. Vậy có lẽ là không đúng rồi?? Nhưng có một chút cảm giác rất giống theo một cách khác. Mình có cảm giác bình yên, rất gần, cảm giác được đi học và dù gì có người bên cạnh trong 1 đám người xa lạ trên trường.
Rất là con nít nhưng chí ít cũng đã từng có cái gì đó rất đáng để nhớ. Và cũng giống như trong truyện cũng cảm như vừa đánh mất một điều gì đó vô cùng quý giá khi 'Tiểu Ly' ra đi và không bao giờ tìm lại được. Dẫu sao cũng tạm biệt 'Cô gái đã ra đi từ hôm kia ...', tạm biệt 'Tiểu Ly'.
Có lẽ mọi chuyện giống một câu trong bài hát 'Cô gái đến từ hôm qua'. 'Dường như là vẫn thế em không trở lại và mãi là như thế anh không trẻ lại'. Dù bài hát và cuống truyện chẳng có quan hệ gì với nhau nhưng vẫn thấy 1 chút gì liên quan. Lại là một chút thời gian để nhớ về một thời đi học, nhớ về tình đầu haizzz không nên nhớ nhiều mới phải hic hic ...Và một điều mình nhận ra là khi nghe những bài nhạc mình cảm thấy nó hay hơn, ý nghĩa hơn so với khi nghe cách đây 5 năm trước.
Để một chiều thứ 7 không làm gì, ngồi nhà ngắm trời và nghe nhạc cho thật thỏa thích. Cảm ơn tất cả nhưng gì đã qua....
Cô gái đến từ hôm qua
Sáng tác: Trần Lê Quỳnh
Và rồi ta hứa sẽ quay trở lại,
vào một ngày mai như hai người bạn
Một ngày đã quên tất cả lại nhớ về nhau
cùng năm tháng còn ấu thơ
Và ngày hôm nay anh như đứa trẻ
của ngày hôm qua xa xôi tìm về
Lời thề tựa như ánh lửa sưởi ấm lòng anh
như chính em, cô gái đến từ hôm qua
Tình yêu đầu trôi xa dư âm để lại
và nếu thuộc về nhau em sẽ trở lại
Và anh được thấy hoa rơi như cơn
mưa tươi thắm những con đường
Dường như là vẫn thế em không trở lại
và mãi là như thế anh không trẻ lại
Dòng thời gian trôi như ánh sao băng
trong khoảng khắc qua chúng ta
Nhiều năm xa hạnh phúc anh muốn bên em
Cuộc đời này dù ngắn, nỗi nhớ quá dài
Và cũng đã đủ lớn để mong bé lại
như ngày hôm qua.
2004-12-23
Introduction to ACL (authentication, authorization and security)
Giới
thiệu ACL (Access Control Lists)
ACL là tính năng quan trọng và hay được
thảo luận nhất. Không chỉ bởi đây là tính năng được mong đợi mà còn bởi
vì nó là tính năng gây nhiều thắc mắc và khó hiểu nhất (the most confusing).
Như chúng ta được nghe đến trong nhiều tài liệu online, ACL là cách thức để quản lý ứng dụng thuận tiện, khoa học, chi tiết và dễ
dàng maintance. ACL quản lý 2 phần của một vấn đề: một bên cần sử dụng và một
bên là thứ cần sử dụng. Trong ngôn ngữ của ACL, bên cần sử dụng (thông thường
là users) được gọi là Access Request Objects tức đối tượng yêu cầu truy cập viết tắt là AROs. Và những
thứ trong hệ thống đang được yêu cầu sử dụng gọi là Access Control Objects đối tượng cần quản lý truy cập
viết tắt là ACOs. Các thực thể trên (entities) được gọi là objects bởi đôi khi
requesting objects không phải là person- đôi khi chúng ta muốn limit access tới
một controllers cụ thể nào đó có nhiệm vụ khởi động logic trong một vài phần
khác.
Trong CakePHP thì nó như sau:
Trong CakePHP thì nó như sau:
The
entities are called 'objects' because sometimes the requesting object isn't a
person - sometimes you might want to limit the access certain Cake
controllers have to initiate logic in other parts of your application.
|
ACOs có thể là những thứ chúng ta muốn
control, từ controller action tới web service ...
Review
ACO - Access Control Object - Something that is
wanted
|
ARO - Access Request Object - Something that
wants something
|
Khi đó ACL sẽ dùng để quyết định ARO nào
có thể access ACO nào.
Nên nhớ rằng ACL không giống
authenticate. ACL có thể xảy ra sau khi user đã authenticated. Mặc dù ACL thường
dùng chung với authentication nhưng quan trọng chúng ta cần phân biệt rõ 2 vấn
đề ai (authentication) và người đó được làm cái gì (ACL). Tức là sau khi tiếp
cận được (authenticated) thì mới đến bước cấp quyền (authority). Ví dụ được
vào nhà nhưng không được làm gì khác với không được phép vào nhà.
|
Theo truyền thống, hệ thống sẽ quản lý sử
dụng một matrix, matrix này bao gồm danh sách các users và permissions liên
quan tới các object. Thông tin như vậy chúng ta sẽ thực hiện lưu trữ trong một
table (table cũng là một dạng matrix).
Nhìn thoáng qua thì system theo dạng này
có vẻ work well: nhìn rất fine-grained (mịn, chi tiết) và dễ đọc.
Chúng
ta sẽ đi thẳng vào ví dụ cụ thể như sau: giả sử có một site về game. Chúng ta
có các class trong game (dựa theo game Granado Espada đang chơi) như sau: fighter
chiến binh, musketeer ngự lâm, scout trinh sát, elementalist phù thủy, wizard pháp sư.
Các
vũ khí có được bao gồm sword kiếm, dagger dao găm, pistol súng ngắn, rifle
súng trường, staff gậy phép và
bracelet vòng tay phép (chỉ
trích ra 1 số vũ khí).
Tất
nhiên wizard pháp sư sử dụng gậy
phép, elementalist phù thủy sử dụng vòng tay phép, scout trinh sát sử dụng dao găm, musketeer
ngự lâm dùng súng các loại. Fighter rắc rối nhất có thể dùng kiếm, dao găm, và
súng ngắn. Và tất nhiên là tay không tất cả đều sử dụng được.
Theo
bảng matrix thông thường chúng ta sẽ hình dung như sau:
Sword
|
Dagger
|
Pistol
|
Rifle
|
Staff
|
Bracelet
|
|
Fighter
|
Allow
|
Allow
|
Allow
|
|||
Musketeer
|
Allow
|
Allow
|
||||
Scout
|
Allow
|
|||||
Elementalist
|
Allow
|
|||||
Wizard
|
Allow
|
Tuy nhiên mỗi loại vũ khí lại có thể chia thành từng loại nhỏ riêng biệt
và có khả năng việc chia nhỏ này sẽ thực hiện trong tương lai. Trong trương
lai có thể có cả những trường hợp cá biệt.
|
Vấn
đề đặt ra là với hệ thống nhỏ matrix có thể dễ dàng setup và work nhưng khi hệ
thống phát triển, số AROs và ACOs tăng lên thì table phình rất nhanh (theo cấp
số nhân với mỗi chiều và còn hơn như vậy nếu cả 2 chiều cùng tăng). Hãy tưởng
tượng nếu phải quản lý cả hàng trăm đối tượng theo từng unit. Điều này càng khó
khăn khi thực hiện grouping permissions cho một group sections of user.
Giả
sử một wizard sử dụng được tất cả các bracelet nhưng nếu chia nhỏ
bracelet ra làm fire lửa, wind gió, ice băng, lightning
sét thì bẳng matrix này không còn đáp ứng được. Khi đó chúng ta phải chia nhỏ
thành 4 loại bracelet giống như đã chia gun thành pistol và rifle.
Nếu
tổ chức group và decide permissions cho một group thì việc phải giải quyết
individual permissions cho user. Giả sử một fighter đặc biệt vì một lý
do nào đó không thể sử dụng pistol chúng ta sẽ đáp ứng bằng cách nào
trong khi vẫn đảm bảo không có gì đặc biệt thì fighter vẫn sử dụng được
súng.
Tất
cả những điều này làm cho việc dùng ACL dạng matrix là không hợp lý vì không thể
hiện rõ những lợi điểm của group của cả AROs và ACOs.
Với các tiếp cận ACL chúng ta thấy
ACL hầu hết được implemented theo cấu
trúc cây. Thông tường sẽ có một cây cho AROs và một cây cho ACOs.
Với cấu trúc này có thể quản lý invidual hay group như một node.
Giả
sử chúng ta có hệ thống các characters (các character của tui) theo dạng tree
như sau:
Tuy
nhiên có một điểm đặc biệt fighter Carol không sử dụng được pistol
(bé Carol này không thích súng ). Tuy nhiên trường hợp đặc biệt như Nil
thì khác, có thêm khả năng đặc biệt là dùng được rifle súng trường chẳng
hạn.
Trong
khi đó khi tổ chức một site về các weapons bằng một tree of ACOs sẽ như sau:
Áp dụng mô tả trên permissions trên ta có:
Với cách áp dụng này chúng ta có khả năng
thay đổi wide-reaching permissions tuy nhiên có thể điều chỉnh một
cách rất mịn fine-grained.
Với trường hợp thông thường như April với staff chúng ta
có bảng ACL như sau:
ARO node
|
Permission info
|
Result
|
All characters
|
Deny all
|
Denying access to staff
|
Elementalist
|
Allow staff
|
Allowing access to staff
|
April
|
--
|
Still allowing staff
|
Như chúng ta thấy với một trường hợp đặc biệt như Carol dễ
dàng nhận ra tất cả mọi fighter đều sử dụng được pistol trừ Carol. Để kiểm tra
Carol với pistol ta thực hiện kiểm tra access theo path: All characters ->
Fighter -> Carol, theo cách từ trên xuống như vậy thì thông tin permission
liên quan tới pistol như sau:
ARO node
|
Permission info
|
Result
|
All characters
|
Deny all
|
Denying access to pistol
|
Fighter
|
Allow pistol
|
Allowing access to pistol
|
Carol
|
Deny pistol
|
Denying pistol
|
Labels:
access control,
access control list,
ACL,
CakePHP,
PHP
Subscribe to:
Comments (Atom)


