Vithon Forum http://forum.vithon.org/ RSS feed from Vithon Forum Vithon Forum Thu, 24 Aug 2017 04:42:12 GMT Python 3.2 wsgi web trên window xp dành cho người mới bắt đầu. http://forum.vithon.org/Thread/show/98/Python_3_2_wsgi_web_tren_window_xp_danh_cho_nguoi_moi_bat_dau_.html?post_id=728#post728 [b][url=http://www.vienphauthuat.com/nang-mui-s-line-3d-khong-phau-thuat.html]nâng mũi s line 3d[/url][/b] | [b][url=http://www.vienphauthuat.com/nang-mui-boc-sun.html]nâng mũi bọc sụn[/url][/b] | [b][url=http://www.vienphauthuat.com/phau-thuat-cuon-canh-mui.html]phẫu thuật cuốn cánh mũi[/url][/b] | [b][url=http://www.vienphauthuat.com/phau-thuat-nang-nguc-noi-soi.html]phẫu thuật nâng ngực nội soi[/url][/b] | [b][url=http://www.vienphauthuat.com/phau-thuat-thu-nho-quang-nguc.html]phẫu thuật thu nhỏ quầng ngực[/url][/b] Tue, 26 Apr 2016 07:34:01 GMT Ứng dụng mạng/web Coward 461 http://forum.vithon.org/Thread/show/98/Python_3_2_wsgi_web_tren_window_xp_danh_cho_nguoi_moi_bat_dau_.html?post_id=728#post728 Cho mình hỏi về UDP Socket http://forum.vithon.org/Thread/show/132/Cho_minh_hoi_ve_UDP_Socket.html?post_id=726#post726 [b][url=http://www.vienphauthuat.com/nang-nguc-tu-nhien.html]nâng ngực tự nhiên[/url][/b] | [b][url=http://www.vienphauthuat.com/nang-nguc-co-an-toan-khong.html]nâng ngực có an toàn không[/url][/b] | [b][url=http://www.vienphauthuat.com/nang-nguc-uy-tin-o-sai-gon.html]nang nguc uy tin[/url][/b] | [b][url=http://www.vienphauthuat.com/nang-mui-o-dau-dep-an-toan.html]nang mui o dau dep an toan[/url][/b] | [b][url=http://www.vienphauthuat.com/nang-mui-cho-nam-gioi.html]nâng mũi cho nam giới[/url][/b] Tue, 26 Apr 2016 07:33:07 GMT Ứng dụng mạng/web Coward 461 http://forum.vithon.org/Thread/show/132/Cho_minh_hoi_ve_UDP_Socket.html?post_id=726#post726 lập trình web bằng python bắt đầu như thế nào http://forum.vithon.org/Thread/show/213/lap_trinh_web_bang_python_bat_dau_nhu_the_nao.html?post_id=718#post718 [b][url=http://www.vienphauthuat.com/cang-da-mat-cho-nam-gioi.html]căng da mặt cho nam giới[/url][/b] | [b][url=http://www.vienphauthuat.com/cang-da-mat-gia-re.html]cang da mat gia re[/url][/b] | [b][url=http://www.vienphauthuat.com/cang-da-mat-o-dau-an-toan-nhat.html]cang da mat o dau an toan nhat[/url][/b] | [b][url=http://www.vienphauthuat.com/cang-da-mat-noi-soi.html]căng da mặt nội soi[/url][/b] | [b][url=http://www.vienphauthuat.com/cang-da-mat-noi-soi-o-dau.html]căng da mặt nội soi ở đâu[/url][/b] Tue, 26 Apr 2016 07:17:29 GMT Ứng dụng mạng/web Coward 461 http://forum.vithon.org/Thread/show/213/lap_trinh_web_bang_python_bat_dau_nhu_the_nao.html?post_id=718#post718 Dùng django với postgres schema http://forum.vithon.org/Thread/show/167/Dung_django_voi_postgres_schema.html?post_id=704#post704 [b][url=http://www.vienphauthuat.com/nang-mui-boc-sun.html]nâng mũi bọc sụn[/url][/b] | [b][url=http://www.vienphauthuat.com/nang-mui-sua-tuong.html]nâng mũi sửa tướng[/url][/b] | [b][url=http://www.vienphauthuat.com/nang-mui-an-toan-nhat-o-dau.html]nâng mũi an toàn[/url][/b] | [b][url=http://www.vienphauthuat.com/nang-mui-an-toan-nhat-o-dau.html]nang mui an toan o dau[/url][/b] | [b][url=http://www.vienphauthuat.com/nang-mui-uy-tin-chat-luong-tai-tphcm.html]nâng mũi uy tín[/url][/b] Tue, 26 Apr 2016 07:03:59 GMT Ứng dụng mạng/web Coward 461 http://forum.vithon.org/Thread/show/167/Dung_django_voi_postgres_schema.html?post_id=704#post704 Hỏi về Fabric http://forum.vithon.org/Thread/show/187/Hoi_ve_Fabric.html?post_id=703#post703 [b][url=http://www.vienphauthuat.com/dia-chi-nang-mui-dep-an-toan.html]dia chi nang mui an toan[/url][/b] | [b][url=http://www.vienphauthuat.com/phau-thuat-thu-nho-quang-nguc.html]phẫu thuật thu nhỏ quầng ngực[/url][/b] | [b][url=http://www.vienphauthuat.com/phau-thuat-cuon-canh-mui.html]phẫu thuật cuốn cánh mũi[/url][/b] | [b][url=http://www.vienphauthuat.com/phau-thuat-nang-nguc-noi-soi.html]phẫu thuật nâng ngực nội soi[/url][/b] | [b][url=http://www.vienphauthuat.com/nang-mui-s-line-3d-khong-phau-thuat.html]nâng mũi s line 3d[/url][/b] Tue, 26 Apr 2016 07:03:27 GMT Ứng dụng mạng/web Coward 461 http://forum.vithon.org/Thread/show/187/Hoi_ve_Fabric.html?post_id=703#post703 Công cụ dán nội dung 1 tập tin lên pastebin.com http://forum.vithon.org/Thread/show/53/Cong_cu_dan_noi_dung_1_tap_tin_len_pastebin_com.html?post_id=701#post701 [b][url=http://www.vienphauthuat.com/dia-chi-nang-mui-dang-tin-cay.html]dia chi nang mui tin cay[/url][/b] | [b][url=http://www.vienphauthuat.com/dia-chi-nang-mui-dang-tin-cay.html]dia chi nang mui dang tin cay[/url][/b] | [b][url=http://www.vienphauthuat.com/dia-chi-nang-mui-cua-sao-viet.html]dia chi nang mui cua sao[/url][/b] | [b][url=http://www.vienphauthuat.com/dia-chi-nang-mui-cua-sao-viet.html]dia chi nang mui cua sao viet[/url][/b] | [b][url=http://www.vienphauthuat.com/dia-chi-nang-mui-tai-can-tho.html]dia chi nang mui o can tho[/url][/b] Tue, 26 Apr 2016 06:58:19 GMT Ứng dụng mạng/web Coward 461 http://forum.vithon.org/Thread/show/53/Cong_cu_dan_noi_dung_1_tap_tin_len_pastebin_com.html?post_id=701#post701 Cai dat mod_wsgi 4.4.11 python3.4.3 apache24 trên freebsd http://forum.vithon.org/Thread/show/249/Cai_dat_mod_wsgi_4_4_11_python3_4_3_apache24_tren_freebsd.html?post_id=694#post694 chi tiết hơn một chút: có mod_write có thể bỏ đuôi .py đi khi gõ trên address. có ssl site định dạng https: [code]LoadModule wsgi_module /usr/local/lib/python3.4/site-packages/mod_wsgi/server/mod_wsgi-py34.so #SSLEngine on #SSLCertificateFile /usr/local/etc/apache24/ssl/domain_name.crt #SSLCertificateKeyFile /usr/local/etc/apache24/ssl/server.key #<VirtualHost *:443> #ServerName domain_name.com #ServerAdmin webmaster@domain_name.com #DocumentRoot /usr/local/www/apache24/data #SSLEngine on #SSLCertificateFile /usr/local/etc/apache24/ssl/domain_name.crt #SSLCertificateKeyFile /usr/local/etc/apache24/ssl/server.key #</VirtualHost> # be liberal in general Include etc/apache24/extra/httpd-ssl.conf # WSGIDaemonProcess localhost processes=2 threads=15 display-name=%{GROUP} # WSGIProcessGroup localhost WSGIScriptAlias /wsgi/ /usr/local/www/apache24/wsgi-scripts/ Alias /wsgi/ /usr/local/www/apache24/wsgi-scripts/ <Directory /usr/local/www/apache24/wsgi-scripts/> Options ExecCGI MultiViews FollowSymLinks MultiviewsMatch Handlers #Vì mình muốn thêm trong folder chạy được cả wsgi và cgi nên mình để nhÆ° thế này AddHandler cgi-script .cgi .py AddHandler wsgi-script .wsgi .py AddDefaultCharset utf-8 Order allow,deny Allow from all AllowOverride all #Options +FollowSymLinks RewriteEngine on RewriteBase /wsgi/ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.py -f RewriteRule ^(.*)$ $1.py [L] </Directory> [/code] Sat, 06 Jun 2015 19:43:18 GMT Ứng dụng mạng/web Coward 455 http://forum.vithon.org/Thread/show/249/Cai_dat_mod_wsgi_4_4_11_python3_4_3_apache24_tren_freebsd.html?post_id=694#post694 Tổng kết cài đặt mod_wsgi 4.4.12 với python3.4.3 trên window server 2008 sp1 http://forum.vithon.org/Thread/show/251/Tong_ket_cai_dat_mod_wsgi_4_4_12_voi_python3_4_3_tren_window_server_2008_sp1.html?post_id=693#post693 Mod_wsgi phiên bản mới nhất tại thời điểm hiện tại mod_wsgi 4.4.12 và python là 3.4.3 Một điều quan trọng có lẽ là luôn luôn đọc kỹ hướng dẫn truớc khi cài đặt. Nếu không sẽ rất mất thời gian. Trên win thì khác trên linux. bạn sẽ phải cài bằng pip install mod_wsgi... tên hơi dài có đuôil là whl. Đừng thay đổi tên file, vì sẽ không cài đuợc, mặc dù nó hơi dài nhưng mặc kệ nó. http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi upgrade phiên bản mới nhất pip,setuptools trong freebsd sẽ là : python3.4 m pip install pip --upgrade trong win thì mình lại quên mất. có lẽ là pip install pip --upgrade Sau khi install xong . file mod_wsgi sẽ nằm trong thư mục c:/python34/mod_wsgi.so Vào apache httpd.conf thêm dòng LoadModule wsgi_module c:/python34/mod_wsgi.so tiếp theo bạn đọc thêm configure ở các topip cài đặt mod_wsgi cũ. ở đây mình chỉ đưa ra sự khác biệt nho nhỏ khi cài bản mới này. Sat, 06 Jun 2015 18:26:40 GMT Ứng dụng mạng/web Coward 455 http://forum.vithon.org/Thread/show/251/Tong_ket_cai_dat_mod_wsgi_4_4_12_voi_python3_4_3_tren_window_server_2008_sp1.html?post_id=693#post693 WSGI căn bản (wsgi webob login form đơn giản có set cookie) http://forum.vithon.org/Thread/show/240/WSGI_can_ban_wsgi_webob_login_form_don_gian_co_set_cookie_.html?post_id=680#post680 Trong bài trước chúng ta đã cùng làm quen với việc tạo môt login form đơn giản. Trong topic hôm nay chúng ta cùng đi sâu hơn một chút . Đó là việc kết nối với cơ sở dữ liệu Postgreql. Trước tiên chúng ta cùng xem qua code, rồi cùng phân tích: [code] #-*-coding:utf8 -*- def application(environ, start_response): import postgresql.driver as pg_driver import time,hashlib from http.cookies import SimpleCookie cookie = SimpleCookie() from webob import Request, Response #form = cgi.FieldStorage(fp=environ['wsgi.input'], environ=environ) request = Request(environ) post = request.POST username = post["username"] password = post["password"] #username = form.getvalue("username") #password = form.getvalue("password") try: db = pg_driver.connect(host='localhost',user='postgres',password='12345678',database='Google',port=5432) except: page = """Can not access database""" login_form = """<!doctype html> <html> <head> <title> Login </title> <script src="js/jquery-2.1.0.min.js"></script> <script src="bootstrap/js/bootstrap.js"></script> <script type="text/javascript" src="js/jquery.bootpag.js"></script> <link href="bootstrap/css/bootstrap.css" rel="stylesheet"> </head> <body> <h1>Google QC Report</h1> <p>Ban chua dang nhap dung username hoac password. Ban can phai dang nhap lai</p> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title">Login</h4> </div> <div class="modal-body"> <form class="form-horizontal" role="form" action = 'login.py' method='post'> <div class="form-group"> <label for="inputEmail1" class="col-lg-4 control-label">User name</label> <div class="col-lg-5"> <input type="text" class="form-control" id="inputuser1" name='username' placeholder="user name"> </div> </div> <div class="form-group"> <label for="inputPassword1" class="col-lg-4 control-label">Password</label> <div class="col-lg-5"> <input type="password" class="form-control" id="inputPassword1" name='password' placeholder="Password"> </div> </div> <div class="form-group"> <div class="col-lg-offset-4 col-lg-5"> <div class="checkbox"> <label> <input type="checkbox"> Remember me </label> </div> </div> </div> <div class="form-group"> <div class="col-lg-offset-4 col-lg-5"> <button type="submit" class="btn btn-default">Sign in</button> </div> </div> </form> </div> <div class="modal-footer"> </div> </div><!-- /.modal-content --> </div><!-- /.modal-dialog --> </body> </html>""" if not username: page = login_form elif not password: page = login_form else: ps = db.prepare("""Select username,account_password,account_level from account where username= '%s' and account_password = '%s' """%(username.replace("'","''"),hashlib.sha512(password.encode('utf-8')).hexdigest())) if len(ps()) == 0: page= login_form else: cookie['lastvisit'] = str(time.time()) cookie['lastvisit']['expires'] = 360*24*60*60 cookie['lastvisit']['max-age'] = 360*24*60*60 cookie['lastvisit']['path'] = '../googleQ/' cookie['username'] = username cookie['username']['expires'] = 360*24*60*60 cookie['username']['max-age'] = 360*24*60*60 cookie['username']['path'] = '../googleQ/' cookie['password'] = hashlib.sha512(password.encode('utf-8')).hexdigest() cookie['password']['expires'] = 360*24*60*60 cookie['password']['max-age'] = 360*24*60*60 cookie['password']['path'] = '../googleQ/' cookieheaders = ("Set-Cookie", cookie['username'].OutputString()) cookieheaders2 = ("Set-Cookie", cookie['password'].OutputString()) cookieheaders3 = ("Set-Cookie", cookie['lastvisit'].OutputString()) page = """<!doctype html> <html> <head> <meta charset='utf-8'> <script src="js/jquery-2.1.0.min.js"></script> <script src="bootstrap/js/bootstrap.js"></script> <script type="text/javascript" src="js/jquery.bootpag.min.js"></script> <link href="bootstrap/css/bootstrap.css" rel="stylesheet"> <style> #draggable { width: 150px; height: 150px; padding: 0.5em; } </style> <script> $(function() { $( ".draggable" ).draggable(); }); </script> <title>Login </title> </head> <body> """ page += """<nav class="navbar navbar-default navbar-fixed-top" role="navigation"> <div class="container"> <div class="navbar-collapse collapse"> <ul class="nav navbar-nav">""" if int(ps()[0][2]) == 2: ps_admin_menu1 = db.prepare("""Select id,menu1,link from admin_first_menu order by id""") ps_admin_menu2 = db.prepare("""Select menu2,link from admin_second_menu where first_menu_id = $1 order by id """) ps_menu1 = db.prepare("""Select id,menu1,link from first_menu order by id""") ps_menu2 = db.prepare("""Select menu2,link from second_menu where first_menu_id = $1 order by id """) for row_admin1 in ps_admin_menu1(): if len(ps_admin_menu2(row_admin1[0]))>0: page +="""<li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href='%s'>%s<b class="caret"></b></a>"""%(row_admin1[2],row_admin1[1]) page +="""<ul class="dropdown-menu">""" for row_admin2 in ps_admin_menu2(row_admin1[0]): page +="""<li><a href='%s'>%s</a></li>"""%(row_admin2[1],row_admin2[0]) page +="""</ul></li>""" else: page +="""<li><a href='%s'>%s</a></li>"""%(row_admin1[2],row_admin1[1]) for row1 in ps_menu1(): if len(ps_menu2(row1[0]))>0: page +="""<li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href='%s'>%s<b class="caret"></b></a>"""%(row1[2],row1[1]) page +="""<ul class="dropdown-menu">""" for row2 in ps_menu2(row1[0]): page +="""<li><a href='%s'>%s</a></li>"""%(row2[1],row2[0]) page +="""</ul></li>""" else: page +="""<li><a href='%s'>%s</a></li>"""%(row1[2],row1[1]) else: ps_menu1 = db.prepare("""Select id,menu1,link from first_menu order by id""") ps_menu2 = db.prepare("""Select menu2,link from second_menu where first_menu_id = $1 order by id """) for row1 in ps_menu1(): if len(ps_menu2(row1[0]))>0: page +="""<li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href='%s'>%s<b class="caret"></b></a>"""%(row1[2],row1[1]) page +="""<ul class="dropdown-menu">""" for row2 in ps_menu2(row1[0]): page +="""<li><a href='%s'>%s</a></li>"""%(row2[1],row2[0]) page +="""</ul></li>""" else: page +="""<li><a href='%s'>%s</a></li>"""%(row1[2],row1[1]) page +="""</ul> </nav> <br /> <br /> <br />""" #ip = cgi.escape(os.environ["REMOTE_ADDR"]).replace("'","''") page +="""<h3> Dang nhap thanh cong ! %s </h3>"""%request.cookies #for param in os.environ.keys(): # print("<b>%20s</b>: %s<\br>"% (param, os.environ[param])) #f = open('c:/nothing.py','r') #f.read() #print(f.read()) page +="""</body></html>""" ############################# status = "200 OK" response_headers = [cookieheaders3,cookieheaders2,cookieheaders,('Content-type', 'text/html;charset=utf8'), ('Content-Length', str(len(page)))] start_response(status, response_headers) return [page.encode('utf8')] [/code] Trong script này có hiển thị được font unicode. Có một menu 2 cấp kết nối với cơ sở dữ liệu . ( Có lẽ menu 2 cấp chúng ta sẽ đi sâu hơn vào một chủ đề sắp tới. Và kết nối với bảng account trong Postgresql tạm thời là như vậy. Nguồn tham khảo google và http://pythonpaste.org/waitforit/waitforit/middleware.py.html bạn để ý trong đường link tham khảo này có một cách set cookie khá là hay đó là họ để luôn vào trong start_response . Mình chưa thử, nhưng hôm trước thực sự là rất là chật vật để tìm cách set cookie , và mình cũng hướng tư duy theo cách này , có lẽ đơn giản hơn là sử dụng simples cookie [code] start_response('200 OK', [('Content-Type', 'text/html; charset=utf8'), ('Content-Length', str(len(page))), ('Set-Cookie', 'waitforit_id=%s' % id), ]) return [page] [/code] ngoài lề một chút: diễn đàn hình như đang lỗi ,hoặc mạng nhà mình có vấn đề, rút kinh nghiệm trước khi kích vào nút create post , mình đã kịp thời copy tất cả, đề phòng trường hơp post bài bị lỗi. post lần thứ 3 rồi , không biết lần này có được không đây. Sun, 08 Jun 2014 16:55:32 GMT Ứng dụng mạng/web Coward 438 http://forum.vithon.org/Thread/show/240/WSGI_can_ban_wsgi_webob_login_form_don_gian_co_set_cookie_.html?post_id=680#post680 Python 3.1.2 cgi web dành cho người mới bắt đầu http://forum.vithon.org/Thread/show/15/Python_3_1_2_cgi_web_danh_cho_nguoi_moi_bat_dau.html?post_id=649#post649 Đôi khi có thể xảy ra tình trạng , trong terminal cua centos thi connect được với,với Postgresql, nhưng trên cgi thì lại không connect đuợc , bạn cần phải nghĩ ngay đến trường hợp firewall của centos và seslinux , bạn cần phải cấu hình lại hoặc tắt firewall hoặc selinux la nhanh nhất. Wed, 26 Jun 2013 10:47:37 GMT Ứng dụng mạng/web Coward 399 http://forum.vithon.org/Thread/show/15/Python_3_1_2_cgi_web_danh_cho_nguoi_moi_bat_dau.html?post_id=649#post649