Các lệnh để kiểm tra RAM trong Solaris 10
Tháng Sáu 6, 2012 Bình luận về bài viết này
1, Kiểm tra tổng số RAM được cài trong máy:
#prtconf | grep “Memory”
2, Kiểm tra các ứng dụng đang chạy chiếm bao nhiêu RAM:
#prstat -Z
Goodluck
Tháng Sáu 6, 2012 Bình luận về bài viết này
1, Kiểm tra tổng số RAM được cài trong máy:
#prtconf | grep “Memory”
2, Kiểm tra các ứng dụng đang chạy chiếm bao nhiêu RAM:
#prstat -Z
Goodluck
Tháng Sáu 5, 2012 Bình luận về bài viết này
JBoss 4.0.4 throws the following exception while using generics in JSP even if java version is 1.5 or greater
Syntax error, parameterized types are only available if source level is 5.0
Syntax error, ‘for each’ statements are only available if source level is 5.0
The workaround for this issue is to add the following XML configuration to
${jboss.home}/server/default/deploy/jbossweb-tomcat55.sar/conf/web.xml
Add
compilerSourceVM
1.5
compilerTargetVM
1.5
inside tag with jsp inside it.
(Note that there are many servlet tags in this web.xml, so be careful)
Tháng Sáu 4, 2012 Bình luận về bài viết này
Trong khi lập trình, đôi khi bạn muốn copy cả cấu trúc bảng và dữ liệu từ database này sang database khác trong MSSQL. Ví dụ: từ db1 sang db2, cú pháp như sau:
INSERT INTO db2.tblABC( *fieldlist* )
SELECT *fieldlist* FROM db1.tblABC
Nếu bạn chỉ muốn copy cấu trúc bảng, mà không muốn copy dữ liệu, bạn thêm dòng sau vào:
WHERE 1=0
Tháng Tư 26, 2012 Bình luận về bài viết này
Tuần vừa rồi, Khi máy chủ chạy Ngix bị lỗi do máy chủ của tôi hosting quá nhiều website( vài trăm site).
Nginx bị lỗi, các website không truy cập được. Khi vào xem log thì thấy thông báo sau:
2010/04/16 13:24:16 [crit] 21974#0: *3188937 open() “/usr/local/nginx/html/50x.html” failed (24: Too many open files), client: 88.x.y.z, server: example.com, request: “GET /file/images/background.jpg HTTP/1.1”, upstream: “http://10.8.4.227:81//file/images/background.jpg”, host: “example.com”
Nguyên nhân là do Ngix mở quá nhiều file khi chạy.
Trong Linxux, cần phải tăng số file giới hạn được mở cho hệ điều hành.
Bạn có thể làm như sau:
su – nginx
Để xem số softfile và hard file hệ điều hành cho phép mở, bạn gõ lệnh sau:
ulimit -Hn
ulimit -Sn
Có 2 cách sau để chỉnh sửa lỗi:
Cách 1 Tăng số file giới hạn ở mức hệ điều hành
Your operating system set limits on how many files can be opened by nginx server. You can easily fix this problem by setting or increasing system open file limits under Linux. Edit file /etc/sysctl.conf, enter:
Hệ điều hành thường thiết đặt số file được mở bởi nginx. Bạn có thể tăng con số này lên bằng cách:
# vi /etc/sysctl.conf
Thêm vào dòng sau:
fs.file-max = 70000
Lưu file lại. Sửa file /etc/security/limits.conf:
# vi /etc/security/limits.conf
Đặt lại soft và hard limt cho người dùng chạy nginx server:
nginx soft nofile 10000
nginx hard nofile 30000
Lưu file. Sau đó chạy lệnh sau để thay đổi:
# sysctl -p
Cách 2 Thay đổi tham số trong Nginx config
Nginx có tham số là worker_rlimit_nofile cho phép tự thay đổi số file cần mở trong ở mức tiến trình. Để cấu hình số lượng file tối đa được mở. Biên tập file nginx.conf:
# vi /usr/local/nginx/conf/nginx.conf
Thêm dòng sau:
# set open fd limit to 30000
worker_rlimit_nofile 30000;
Lưu file, reload lại nginx webserver
# /usr/local/nginx/sbin/nginx -t && /usr/local/nginx/sbin/nginx -s reload
# su – nginx
Kiểm tra các thông số
$ ulimit -Hn
$ ulimit -Sn
:
30000
10000
Nếu các cách trên vẫn không được. Bạn vào file khởi động: /etc/init.d/nginx
thêm vào các dòng sau:
ulimit -Hn 30000
ulimit -Sn 10000
Chúc may mắn.
Tháng Tư 18, 2012 Bình luận về bài viết này
Also known as PEP 20, the guiding principles for Python’s design.
>>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
For some examples of good Python style, see this Stack Overflow question or these slides from a Python user group.
Tháng Tư 17, 2012 Bình luận về bài viết này
Trong ngôn ngữ Python, lập trình viên có thể làm được những thứ rất hay ho với “Functions”. Thực tế, “functions” là first-class objects, có nghĩa là bạn có thể làm gì với kiểu strings, integers, … thì bạn có thể làm được như vậy với Functions. Ví dụ, bạn có thể gán một Functions với một biến:
>>> def square(n):
... return n * n
>>> square(4)
16
>>> alias = square
>>> alias(4)
16
Sức mạnh thực sự của Functions đến từ việc Function được coi như first-class object. Như vậy một Functions có thể chập nhận một function khác làm biến đầu vào, và trả ra một function. Ví dụ, một hàm có sẵn trong Python là hàm map, bạn có thể truyền vào một list
và trả ra một list mới bằng cách gọi một hàm khác tương tác với từng phần tử trong list:
>>> numbers = [1, 2, 3, 4, 5]
>>> map(square, numbers)
[1, 4, 9, 16, 25]
Khi một function được truyền vào và gọi đến một function khác được gọi là Higher-order_function.
Ta có thể dùng Higher-order_function để thay đổi hành vi của Function khác.
“Decorators” được áp dụng từ Python 2.4 dùng để đóng gói Function (Higher-order-function). Cách thông thường để áp dụng Higher-order-function trước khi sử dụng Decorators như sau:
>>> class WhatFor(object):
... def it(cls):
... print 'work with %s' % cls
... it = classmethod(it)
... def uncommon():
... print 'I could be a global function'
... uncommon = staticmethod(uncommon)
...
Cú pháp như trên sẽ trở nên khó đọc khi mã nguồn phức tạp. Vì vậy, Decorators được sử dụng giúp cú pháp trong sáng hơn:
>>> class WhatFor(object):
... @classmethod
... def it(cls):
... print 'work with %s' % cls
... @staticmethod
... def uncommon():
... print 'I could be a global function'
...
>>> this_is = WhatFor()
>>> this_is.it()
work with
>>> this_is.uncommon()
I could be a global function
(Tôi sẽ trình bày tiếp trong phần sau …)
Tham khảo:
1, PythonDecoratorLibrary
2,Understanding Python decorators
3, Class decorators vs function decorators
Tháng Ba 14, 2012 Bình luận về bài viết này
Tôi gặp file LDF trong MSSQL 2008 kích cỡ tăng lên quá lớn. Tôi muốn giảm kích thước nó đi. Sau khi google, tôi đã tìm được bằng cách chuyển mode của database từ FULL sang SIMPLE, như sau:
ALTER DATABASE myDatabase SET RECOVERY SIMPLE
DBCC SHRINKDATABASE (myDatabase , 5)
Tháng Ba 14, 2012 Bình luận về bài viết này
Các bước thực hiện như sau:
1, Download từ ftp://ftp.gwdg.de/pub/misc/mysql/Downloads/MySQLGUITools/mysql-workbench-oss-5.2.22.tar.gz
2, Giải nén
3, Chạy autogen
4, make
5, make install
Tuy nhiên, trong quá trình cài đặt, tôi gặp khá nhiều lỗi. Lên google tìm được bài viết khá đầy đủ, tuy có một số phần không đúng với phiên bản 5.2.22. Tôi dịch lại và bổ xung thêm cho đầy đủ.
Tháng Sáu 6, 2011 Bình luận về bài viết này
Khi code Jboss trên Windows, website vẫn chạy bình thường. Tuy nhiên, khi đẩy lên Solaris, tôi gặp lỗi complier jsp:
Sau một hồi tìm kiếm, tôi đã khắc phục được bằng cách thêm vào file TOMCAT_INSTALL\conf\web.xml dòng sau:
theo tài liệu này
Hi vọng nếu bạn gặp lỗi như tôi, có thể đỡ công tìm kiếm