Friday, October 20, 2006

Học cách sử dụng SMBClient

- Phải tốn cả đống thời gian lên mạng tìm tutorial.
+ The first time, I try to read English tutorial, but I don't understand anything..
+ Nên đành đọc Tiếng Việt (may ra hiểu được một chút). Trang tham khảo http://www.danangpt.vnn.vn/htkh/thamkhao/hdh/hedh10.htm
Cấu hình
-# pico|vim /etc/samba/emb.conf

-Phần 1: Global setting:
-Phần 2: Sharing Setting

Chia sẻ file như thế nào:

Sau khi cấu hình phần global setting, chúng ta có thể tự tạo ra một thư mục chia sẻ và giới hạn truy cập theo nhóm hoặc người dùng có trên hệ thống.

Ví dụ: Để tạo thư mục chia sẻ hungpv trên máy Linux, chúng ta làm như sau :

Thêm vào vùng Sharing Setting những dòng dưới đây: .

[hungpv]
Comment: thu.muc cua hungpv
path=/home/hungpv
valid users =hungpv
browseable=yes
public=no
writeable=yes

Như vậy Samba sẽ tạo ra một thư mục chia sẻ hungpv trên máy chủ, do tham số browseable - yes nên thư mục này sẽ được nhìn thấy khi người dùng mở Windows Explorer, tuy nhiên do public = no và validusers = hungpv nên chỉ có User hungpv có thể đăng nhập. Ngoài việc phân cấp theo user, Samba cũng có thể thăng quyền truy cập cho cả nhóm người dùng, với nhóm chúng ta sử dụng dấu @ trước tên nhóm.


Kiểm tra cấu hình vừa thiết lập:

Sau khi thiết lập file cấu hình chúng ta nên kiểm tra lại, Samba cung cấp 2 công cụ là testparm và smbstatus. Để kiểm tra chính xác bạn phải đảm bảo máy trạm và máy chủ phải nối được với nhau (Kiểm tra bằng lệnh ping) .

1 Kiểm tra bằng công cụ Testparm:

Testparm là chương trình cho phép kiểm tra giá trị của thông số trong file cấu hình.

Cấu trúc của câu lệnh này là:

Testparm configfile [hobtnclmehostIP]

Configfile là đường dẫn và tên file cấu hình, mặc định nó lấy file smb.conf cất trong thư mục /etc/samba/smb.conf (từ redhat 7.0) và /etc/smb.conf (cho các phiên bản trước đó).

Hostname và HostIP là hai thông số không nhất thiết phải có, nó hướng dẫn Samba kiểm tra cả các dịch vụ đã liệt kê trong file smb.conf trên máy xác định bởi Hosmame và hostIP.

Ví dụ:

[root@mail /root] # teetparm /
etc/samba/smb.conf
imail.vitti.edu.vn
172.16.200.2000
Load smb config file from /etc/Samba/smb.conf
Procebsing section " [homes ] "
Proceeeing section " [printersl "
Loaded services file OK.
Allow counection from
imail.vitti.edu.vn
(172.16.200.2000) to homes
Allow connection from
imail.vitti.edu.vn
(172.16.200.2000) to printers

2. Kiểm tra bằng công cụ smbstatus:

Smbtatus là chương trình thông báo các kết nối hiện tại, cấu trúc của câu lệnh này như sau:

smbbtatus [-d] [-p] [-s configfile]

Tham số configfile mặc định được gán là /etc/samba/smb.conf. Tham số "-d" cho ra kết quả đầy đủ.

Chạy Samba server:

Sambaserver có hai tiến trình là smbd và nmbd.Tiến trình smbd cung cấp dịch vụ chia sẽ file và dữ liệu, tiến trình nmbd cung cấp khả năng hỗ trợ NETBIOS name. Cũng như các dịch vu khác, trên mạng Samba có 3 câu lệnh điều khiển là stop, start, restart. Cú pháp của chúng là :

/etc/init.d/smb start l stop l
restart

Sau khi cấu hình file smb.conf bạn phải khởi động dịch vụ Samba để máy linux đăng nhập vào workgroup, câu lệnh khởi động là:

#/etc/init.d/smb start

Sau khi khởi động dịch vụ máy Windows có thể truy cập đến máy Linux thông qua networkNeighborhood hoặc windows Explorer, máy Linux có thể dùng 2 câu lệnh smbclient smbmount để truy cập đến máy Windows và trên cả máy Linux khác có cài Samba.

Riêng đối với cái máy của tui thì lại khác(Slackware 10.0.2) thì phải mở file rc.samba rùi xem nó start gì thì start cái đó.

1. Sử dung câu lênh smbclient:

Smbclient cung cấp giao diện dòng lệnh gần giống như giao diện của FTP để truyền file qua mạng. Chi tiết về câu lệnh smbclient ban có thể tham khảo nhờ câu lệnh:

#man smbclient

Để liệt kê các thư mục chia sẻ có trên máy 172.16.200.203 bạn dùng smbclient với tham số -L:

#smbclient -L 172.16.200.203

Kết quả sẽ cho ra một số thư mục có trên máy 172.16.200.203, để vào một trong các thư mục trên bạn dùng lệnh smbclient với tham số -U tên user (tên user có quyền truy cập vào thư mục tương ứng) .

#Smbclient //172.16.200.203/
tên_thư_ mục -U tên_user

Sau khi gõ vào mật khẩu bạn sẽ nhận được dấu nhắc :

smh:\>

Tại dấu nhắc này bạn có thể dùng các câu lệnh như sau :

Ví dụ : Dùng smbclient nối đến máy Windows có địa chỉ IP là 172.16.4.53, để lấy file trên máy này ta phải làm lần lượt các bước sau:

Xác định các thư mục được chia sẻ trên máy 172.16.4.53: .

#smbchent -L 172.16.4.53 -U
tienna
added interface
ip=172.16.200.200
bcast=172.16.255.255
nmask=255.55.0.0
session request to 172.16.4.53
failed (Called name not present)
session request to 172 failed
(Called name not prebent)
Pabsword:
Domain=[STAFF.VITTI]
OS= [Windows 5.0 ]
Server= [Windows 2000 LAN Manager]

Sau khi nhập mật khẩu của tài khoản tienna (trên Windows) ta nhận được danh sách các thư mục share trên máy 172.16.4.53. Sau khi biết được các thư mục trên máy bạn phải dùng câu lệnh:

[root@backup /root)# smbchent /
/172.16.4.53/tienna -U tienna
Can't find include file /etc/Samba /smb.conf
.
added interface
ip 172.16.200.200
bcabt=172.16.255
.255
nmask:255.255.0.0
session request to 172.16.4.53
failed (Called name not present)
session request to 172 failed
(Called name not present)
Password :
Domain=[STAFF.VITTI ]
OS = [Windows 5.0 ]
Server=[Windows 2000 LAN Manager]
smb: \>

Tại dấu nhắc này bạn có thể xem các file bên trong thư mục tienna bằng lệnh Is, lấy nó về máy Linux bằng lệnh get hoặc mget:

smb: \> ls
.D 0 Fri Aug 24 00:02:24 2001
..D 0 Fri Aug 24 00:02:24 2001
ethereal-setup- 0.8.17.exe
A 6153372 Thu Apr 19 18:54:42
2001
gozilla39.exe A 1869172 Thu Jun 7 12:05:50 2001
smb:\> mget eth*
Get file ethereal-setup-
0 8.17.exe? y
getting file ethereal-setup-
0.8.17
.exe of
size 6153372 as ethereal-setup- 0.8.17.exe
(925.624 kb/s) (average 925.624 kb/s)
smb: \> ''

Sharename Type Comment
---------------- ------
E$ Disk
IPC$ IPC Remote
D$ Disk Default
tienna Disk
F$ Disk
ADMIN$ Disk Remote Admin
C$ Disk Deault share

Server Comment
--------- -------------

Workgroup Master
--------- -------------

Friday, October 13, 2006

Regular Expression in Javascript

Pattern Description
Escaping
\ Escapes special characters to literal and literal characters to special.

E.g: /\(s\)/ matches '(s)' while /(\s)/ matches any whitespace and captures the match.
Quantifiers
{n}, {n,}, {n,m}, *, +, ? Quantifiers match the preceding subpattern a certain number of characters. The subpattern can be a single character, an escape sequence, a pattern enclosed by parentheses or a character set.

{n} matches exactly n times.
{n,} matches n or more times.
{n,m} matches n to m times.
* is short for {0,}. Matches zero or more times.
+ is short for {1,}. Matches one or more times.
? is short for {0,1}. Matches zero or one time.

E.g: /o{1,3}/ matches 'oo' in "tooth" and 'o' in "nose".
Pattern delimiters
(pattern), (?:pattern) Matches entire contained pattern.

(pattern) captures match.
(?:pattern) doesn't capture match

E.g: /(d).\1/ matches and captures 'dad' in "abcdadef" while /(?:.d){2}/ matches but doesn't capture 'cdad'.

Note: (?:pattern) is very badly supported in older browsers.
Lookaheads
(?=pattern), (?!pattern) A lookahead matches only if the preceeding subexpression is followed by the pattern, but the pattern is not part of the match. The subexpression is the part of the regular expression which will be matched.

(?=pattern) matches only if there is a following pattern in input.
(?!pattern) matches only if there is not a following pattern in input.

E.g: /Win(?=98)/ matches 'Win' only if 'Win' is followed by '98'.

Note: Support for lookaheads is lacking in most but the newest browsers.
Alternation
| Alternation matches content on either side of the alternation character.

E.g: /(a|b)a/ matches 'aa' in "dseaas" and 'ba' in "acbab".
Character sets
[characters], [^characters] Matches any of the contained characters. A range of characters may be defined by using a hyphen.

[characters] matches any of the contained characters.
[^characters] negates the character set and matches all but the contained characters

E.g: /[abcd]/ matches any of the characters 'a', 'b', 'c', 'd' and may be abbreviated to /[a-d]/. Ranges must be in ascending order, otherwise they will throw an error. (E.g: /[d-a]/ will throw an error.)
/[^0-9]/ matches all characters but digits.

Note: Most special characters are automatically escaped to their literal meaning in character sets.
Special characters
^, $, ., ? and all the highlighted characters above in the table. Special characters mean characters that match something else than what they appear as.

^ matches beginning of input (or new line with m flag).
$ matches end of input (or end of line with m flag).
. matches any character except a newline.
? directly following a quantifier makes the quantifier non-greedy (makes it match minimum instead of maximum of the interval defined).

E.g: /(.)*?/ matches nothing or '' in all strings.

Note: Non-greedy matches are not supported in older browsers such as Netscape Navigator 4 or Microsoft Internet Explorer 5.0.
Literal characters
All characters except those with special meaning. Mapped directly to the corresponding character.

E.g: /a/ matches 'a' in "Any ancestor".
Backreferences
\n Backreferences are references to the same thing as a previously captured match. n is a positive nonzero integer telling the browser which captured match to reference to.

/(\S)\1(\1)+/g matches all occurrences of three equal non-whitespace characters following each other.
/<(\S+).*>(.*)<\/\1>/ matches any tag.

E.g: /<(\S+).*>(.*)<\/\1>/ matches '
text
' in "text
text
text".
Character Escapes
\f, \r, \n, \t, \v, \0, [\b], \s, \S, \w, \W, \d, \D, \b, \B, \cX, \xhh, \uhhhh \f matches form-feed.
\r matches carrriage return.
\n matches linefeed.
\t matches horizontal tab.
\v matches vertical tab.
\0 matches NUL character.
[\b] matches backspace.
\s matches whitespace (short for [\f\n\r\t\v\u00A0\u2028\u2029]).
\S matches anything but a whitespace (short for [^\f\n\r\t\v\u00A0\u2028\u2029]).
\w matches any alphanumerical character (word characters) including underscore (short for [a-zA-Z0-9_]).
\W matches any non-word characters (short for [^a-zA-Z0-9_]).
\d matches any digit (short for [0-9]).
\D matches any non-digit (short for [^0-9]).
\b matches a word boundary (the position between a word and a space).
\B matches a non-word boundary (short for [^\b]).
\cX matches a control character. E.g: \cm matches control-M.
\xhh matches the character with two characters of hexadecimal code hh.
\uhhhh matches the Unicode character with four characters of hexadecimal code hhhh.

Usage

Now, knowing how a RegExp is written is only half the game. To gain anything from them you have to know how to use them too. There are a number of ways to implement a RegExp, some through methods belonging to the String object, some through methods belonging to the RegExp object. Whether the regular expression is declared through an object constructor or a literal makes no difference as to the usage.

Description Example
RegExp.exec(string)
Applies the RegExp to the given string, and returns the match information. var match = /s(amp)le/i.exec("Sample text")

match then contains ["Sample","amp"]
RegExp.test(string)
Tests if the given string matches the Regexp, and returns true if matching, false if not. var match = /sample/.test("Sample text")

match then contains false
String.match(pattern)
Matches given string with the RegExp. With g flag returns an array containing the matches, without g flag returns just the first match or if no match is found returns null. var str = "Watch out for the rock!".match(/r?or?/g)

str then contains ["o","or","ro"]
String.search(pattern)
Matches RegExp with string and returns the index of the beginning of the match if found, -1 if not. var ndx = "Watch out for the rock!".search(/for/)

ndx then contains 10
String.replace(pattern,string)
Replaces matches with the given string, and returns the edited string. var str = "Liorean said: My name is Liorean!".replace(/Liorean/g,'Big Fat Dork')

str then contains "Big Fat Dork said: My name is Big Fat Dork!"
String.split(pattern)
Cuts a string into an array, making cuts at matches. var str = "I am confused".split(/\s/g)

str then contains ["I","am","confused"]
Liorean is a twenty one years old medical student and hobbyist web designer mostly working with JavaScript and CSS, DOM and the newest html standards available. His personal dwelling on the net can be found at liorean@web-graphics.com.

JavaScript String Replace All

The JavaScript function for String Replace replaces the first occurrence in the string. The function is similar to the php function str_replace and takes two simple parameters. The first parameter is the pattern to find and the second parameter is the string to replace the pattern with when found. The javascript function does not Replace All...

JavaScript:
  1. str = str.replace(”find”,”replace”)

To ReplaceAll you have to do it a little differently. To replace all occurrences in the string, use the g modifier like this:

JavaScript: str = str.replace(/find/g,”replace”)

Thursday, October 12, 2006

Đôi khi nhìn lại chính mình

  1. Đôi khi, bạn cần phải chạy thật xa và bạn có thể thấy ai sẽ chạy theo bạn...
  2. Đôi khi, bạn cần phải nói nhỏ hơn để thấy được ai đang nghe mình...
  3. Đôi khi bân cần có một quyết định sai lầm chỉ để thấy được ai sẽ ở đó để giúp bạn sữa chữa nó...
  4. Đôi khi bạn cần để người bạn yêu đi khỏi để thấy được họ có đủ yêu bạn để trở về bên bạn...

Tuesday, October 10, 2006

Sưu tập (Cách xin việc)

Tập dượt để phỏng vấn thành công

Một thực tế là hầu hết các ứng viên không có thói quen thực hành kỹ năng phỏng vấn trước khi lên "đấu trường". Hệ quả là họ sẽ chịu những thất bại cay đắng một cách lãng nhách chỉ vì không chịu thực hành trước các kỹ năng

Vì thế, theo lời khuyên của các chuyên gia, trước khi tham dự phỏng vấn, hãy dành một chút thời gian chuẩn bị trước những điều cần nói bằng một cuộc phỏng vấn giả. Bạn có thể tập trả lời một số câu hỏi của những cuộc phỏng vấn thông thường đại loại như là "Tại sao bạn lại chọn công việc này?", hay "điểm yếu của bạn là gì?". Khi đã thành thạo, nhuần nhuyễn bạn sẽ có đủ tự tin để bước vào cuộc phỏng vấn thật với những suy nghĩ liền mạch, thông suốt.

Sai một ly đi một dặm

Giống như tất cả những ứng viên đi xin việc khác, bạn thường phải trải qua vô số thời gian nỗ lực và tập trung để tạo ấn tượng với một bức thư xin việc và một bản lý lịch hoàn hảo. Vì vậy, hãy dành thời gian chuẩn bị kỹ lưỡng đơn xin việc và bản lí lịch vì như đã nói ở trên, đây là bước quan trọng đầu tiên để các nhà tuyển dụng chú ý đến bạn. Đừng vì những lý do không đâu mà làm mất thành quả của cả một quá trình. Sai một ly đi một dặm.

Không lạm dụng hiểu biết

Mối công việc, mỗi nghề nghiệp đều có những từ chuyên ngành và liên tục thay đổi. Do đó khi viết đơn xin việc bạn không thể tuỳ tiện sủ dụng từ như thế nào cũng được. Vậy làm cách nào để có thể sử dụng đúng những từ chuyên môn của ngành nghề mà bạn đăng tuyển?

Câu trả lời rất đơn giản. Trước hết hãy tham dự vào các tổ chức chuyên ngành và đọc những cuốn sách có liên quan. Sau đó, thường xuyên lướt web. Bạn sẽ thấy các từ đó thường xuyên xuất hiện.

Tuy nhiên cũng phải cẩn thận khi sử dụng chúng. Đó là con dao hai lưỡi. Đừng lạm dụng từ chuyên ngành "bóng bẩy" quá vì mọi điều trên bản lý lịch trích ngang của bạn đều được kiểm chứng bằng những chuyên gia có kinh nghiệm!

Tập trung trước khi vào "trường đấu"

Trong hầu hết các buổi phỏng vấn, nhà tuyển dụng sẽ gọi lần lượt các ứng viên. Tuy nhiên, nhiều ứng viên lại gây mất thiện cảm với nhà tuyển dụng ngay từ giai đoạn này. Vì vậy, tốt nhất trong lúc chờ đến lượt mình, nên tránh nói chuyện, tán dóc, nghe nhạc hoặc nghe những đoạn clip hài vì nó có thể gây mất thiện cảm ngay lập tức với các nhà tuyển dụng.

Biểu lộ sự thông minh trong bản lý lịch

Khi viết đơn xin việc, đừng bao giờ viết "xem trong bản lý lịch" vào đơn. Bởi bản lý lịch trích ngang không có giá trị pháp lý. Tuy nhiên, trong rất nhiều trường hợp, đơn xin việc lại có. Do đó, thông thường nhà tuyển dụng thường yêu cầu bạn điền đầy đủ thông tin vào đơn xin việc, dù ngay trước đó họ đã nhận được lý lịch trích ngang của bạn.

Hãy tỏ ra thông minh bằng cách đọc kỹ các câu hỏi và tìm cách trả lời sao cho đầy đủ thông tin nhất và sáng tạo nhất.

Cũng cần chú ý khi viết lý lịch, hãy sử dụng các từ khoá chuyên ngành quan trọng bởi nay hầu hết các công ty đều sử dụng những phần mềm đặc biệt để đọc hồ sơ của bạn. Và biết đâu nó sẽ chỉ nhặt những từ quan trọng nhất trong lý lịch của bạn.

Tham khảo kinh nghiệm

Trước khi chấp nhận một vị trí công việc nào đó, hãy tham khảo ý kiến của những người đi trước, những người đã từng làm trong lĩnh vực tương tự. Họ sẽ là người cho bạn rất nhiều kinh nghiệm để đưa ra sự lựa chọn tốt nhất. Tuy nhiên điều này sẽ phản tác dụng nếu như bạn hỏi phải một người "láu cá", không những không có lợi mà còn có hại cho công việc của bạn sau này.