Sunday, March 15, 2015
Tài nguyên miễn phí làm game
một kho tài nguyên miễn phí cho các bạn học làm game
Friday, March 13, 2015
Cấu hình gmail và sử dụng c# để gửi thư trong asp.net
Trong hướng dẫn này chúng ta cùng cấu hình mail server (sử dụng mail miễn phí Gmail) trên website asp.net.
Bước 1: Cấu hình mail server qua web.config. Bổ sung mã nguồn sau và giữa thẻ configuration
[sourcecode language="xml"]
<system.net>
<mailSettings>
<smtp from="ngotuongdan@gmail.com">
<network host="smtp.gmail.com" password="mật khẩu" port="587"
userName="tài khoản" />
</smtp>
</mailSettings>
</system.net>
[/sourcecode]
Bước 2: Sử dụng thư viện smtp để gởi thư
[sourcecode language="csharp"]
public Mailer(string Email, string MatKhau, string TaiKhoan)
{
try
{
var smtpSection = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");
string strHost = smtpSection.Network.Host;
int port = smtpSection.Network.Port;
string strUserName = smtpSection.Network.UserName;
string strFromPass = smtpSection.Network.Password;
SmtpClient smtp = new SmtpClient(strHost, port);
NetworkCredential cert = new NetworkCredential(strUserName, strFromPass);
smtp.Credentials = cert;
smtp.EnableSsl = true;
MailMessage msg = new MailMessage(smtpSection.From, Email);
msg.Subject = "Thông tin đăng ký !";
msg.IsBodyHtml = true;
msg.Body += "<h1>Trung tâm quản lý người dùng.</h1>";
msg.Body += "<h3> http://" + WebConfigurationManager.AppSettings["domain"].ToString() + "</h3>";
msg.Body += "Bạn vừa đăng ký sử dụng hệ thống web GIS.<br/>";
msg.Body += "<br/>Tên đăng nhập của bạn là: <b>" + TaiKhoan + "</b>";
msg.Body += "<br/><br/>Mật khẩu của bạn là: <b>" + MatKhau + "</b><br/>";
msg.Body += "<hr/>Bạn nên đổi mật khẩu.";
smtp.Send(msg);
HttpContext.Current.Response.Write("<script>alert('Gởi thư thành công.');</script>");
}catch(Exception ex)
{
HttpContext.Current.Response.Write("<script>alert('Không gởi mail được');</script>");
}
}
[/sourcecode]
Như vậy là chúng ta có thể gởi được một email tới địa chỉ của người nhận.
Google code đóng cửa
Họ cũng cung cấp công cụ để chúng ta export sang các hệ thông khác
https://code.google.com/export-to-github/
Thật tiếc cho một dịch vụ mang tính cộng đồng.
Wednesday, February 18, 2015
Chuyển dữ liệu từ SQL server 2008 về 2005
Thông thường chúng ta hay upgrade database sql server từ thấp lên phiên bản cao hơn (2005 lên 2008) nhưng một số tình huống chúng ta phải làm ngược lại downgrade từ 2008 về 2005 (không thể backup 2008 và restored lại vào 2005 được). Có một số giải pháp cho vấn đề này.
1. Export dữ liệu trực tiếp từ 2008 về 2005 thông qua công cụ import/export của sqlserver managemnet studio.
2. Generate Script của sqlserver managemnet studio cách này đơn giản và hiệu quả
Trong bài này chúng ta cùng tìm hiểu cách tạo script để chuyển dữ liệu từ 2008 về 2005.
- Nhấn chuột phải lên dữ liệu cần chuyển và chọn như hình
- Chọn các tùy chon như hình sau
- Chọn tất cả hoặc chọn các đối tượng muốn tại script, Nhấn Next để tiếp tục
- Chọn nút Advanced để chỉ định phiên bản sql và dữ liệu sẽ mang theo
- Script for Server Version
- Types of data to script
Nhấn OK để xác nhận tùy chọn
- Nhấn 03 lần Next để phát sinh Script
- Nhấn Finish để hoàn thành.
Vậy là xong rồi.
Wednesday, December 17, 2014
Responsive web design (RWD) - Thiết kế giao diện web thích ứng với kích thước màn hình thiết bị
[caption id="attachment_1542" align="aligncenter" width="660"]
Giao diện thích ứng với kích thước màn hình[/caption]Demo môn học PHP tại CUSC
Responsive web design (RWD) hiểu một cách đơn giản là chúng ta sẽ bố trí lại nội dung của trang web tùy theo kích thước màn hình của thiết bị (hình trên). Nói là bố trí lại vì Responsive web design (RWD) chỉ đơn thuần là ẩn/hiện hay sắp xếp trật tự của nội dung trên trang mà thôi.
Với sự hỗ trợ của CSS3 (Media Queries năm 2012) và HTML5 thì phương pháp thiết kế này trở nên rất dễ thực hiện.
Ví dụ:
[sourcecode language="css"]
@media screen and (min-width:500px) { ... }
[/sourcecode]
Giúp xác định kích thước của màn hình thiết bị và ràng buộc nếu nhỏ hơn 500px thì nội dung ở giữa sẽ được thực hiện. Như vậy chúng ta chỉ việc đặt tên cho các phần tử nội dung (html element) trên trang và xử lý chúng là được.
<html xmlns="http://www.0w3.org/1999/xhtml">
<head>
<!--viewport xac dinh kich thuot dung theo man hinh-->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="icon" type="image/ico" href="images/favorite.ico">
<title>Salomon shop</title>
<link href="css.css" rel="stylesheet" type="text/css" />
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="main">
<div id="header">
<h1>SALOMON</h1>
</div>
<div id="Skin_Menu_Ngang">
<ul id="nav">
<li><a href="?home">TRANG CHỦ</a></li>
<li style="border-right: 0px"><a href="?function=dk">ĐĂNG KÝ</a></li>
</ul>
</div>
<div id="noidung">
<div id="cotPhai"> Cot phai </div>
<div id="cotTrai"> cot trai </div>
</div>
<div id="footer"> Footer </div>
</div>
</body>
</html>
Chúng ta có giao diện như sau:

Lưu ý dòng
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
Giúp xác định tỉ lệ scale và qui đổi điểm ảnh của màn hình thiết bị về px.
Ví dụ code css cho Demo môn học PHP tại CUSC như sau:
[sourcecode language="css"]
@media screen and (max-width: 800px) {
#main {
width:100%;
}
#header {
width: 100%;
background-image:none;
text-align:center;
vertical-align:middle;
height:70px;
}
#header h1{
visibility:visible;
display:inline-block;
font-family:Arial, Helvetica, sans-serif;
font-size:xx-large;
color:#FFF;
}
#trinhdon {
width: 100%;
}
#footer {
width: 100%;
}
#noidung {
width: 100%;
}
#cotTrai {
width: 100%;
}
#cotPhai {
width: 100%;
}
}
@media screen and (max-width: 600px) {
#main {
width: 100%;
}
#nav
{
display:none;
}
#header {
width: 100%;
background-image:none;
text-align:center;
vertical-align:middle;
height:70px;
}
#header h1{
display:inline-block;
font-family:Arial, Helvetica, sans-serif;
font-size:xx-large;
color:#FFF;
}
#trinhdon {
width: 100%;
}
#footer {
width: 100%;
}
#noidung {
width: 100%;
}
#cotTrai {
width: 100%;
}
#cotPhai {
width: 100%;
}
}
@media screen and (max-width:480px) {
#nav
{
display:none;
}
#main {
width: 100%;
}
#header {
width: 100%;
background-image:none;
text-align:center;
vertical-align:middle;
height:70px;
}
#header h1{
display:inline-block;
font-family:Arial, Helvetica, sans-serif;
font-size:xx-large;
color:#FFF;
}
#trinhdon {
width: 100%;
}
#footer {
width: 100%;
}
#noidung {
width: 100%;
}
#cotTrai {
width: 100%;
}
#cotPhai {
text-align:center;
width: 100%;
display:inline;
}
}
[/sourcecode]
Ở đây tôi qui định nếu màn hình kích thướt lớn hơn 800px thì chúng ta có giao diện web trên máy tính với header và nội dung bố trí mặc định. Nếu lớn hơn 600px và nhỏ hơn 800px thì bố trí lại 02 phần trái phải theo chiều dọc, ...
Gần đây Chrome hỗ trợ chức năng test giao diện trên các thiết bị động.
1. Nhấn F12 để vào chế độ developer
2. Chọn vào hình điện thoại ở của sổ code
3. Thay đôi kích thước màn hình bằng thướt đo hay chọn thiết bị.
Hi vọng là bài viết này có ích cho các bạn sinh viên tìm hiểu một cách căn bản nhất.
Tuesday, December 16, 2014
Sử dụng css đinh dạng trang in + php tạo nội dung (in hóa đơn)
[caption id="attachment_1533" align="aligncenter" width="596"]
Giỏ hàng[/caption]Khi nhấn vào IN HÓA ĐƠN sẽ cho phép in với mẫu như sau
[caption id="attachment_1534" align="aligncenter" width="660"]
Biên lai thanh toán[/caption]Với mẫu code CSS sau sẽ giúp chúng ta định dạng mẫu giấy in theo mẫu A4.
[sourcecode language="css"]
body {
margin: 0;
padding: 0;
background-color: #FAFAFA;
font: 12pt "Tohoma";
}
* {
box-sizing: border-box;
-moz-box-sizing: border-box;
}
.page {
width: 21cm;
overflow:hidden;
min-height:297mm;
padding: 2.5cm;
margin-left:auto;
margin-right:auto;
background: white;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
}
.subpage {
padding: 1cm;
border: 5px red solid;
height: 237mm;
outline: 2cm #FFEAEA solid;
}
@page {
size: A4;
margin: 0;
}
button {
width:100px;
height: 24px;
}
.header {
overflow:hidden;
}
.logo {
background-color:#FFFFFF;
text-align:left;
float:left;
}
.company {
padding-top:24px;
text-transform:uppercase;
background-color:#FFFFFF;
text-align:right;
float:right;
font-size:16px;
}
.title {
text-align:center;
position:relative;
color:#0000FF;
font-size: 24px;
top:1px;
}
.footer-left {
text-align:center;
text-transform:uppercase;
padding-top:24px;
position:relative;
height: 150px;
width:50%;
color:#000;
float:left;
font-size: 12px;
bottom:1px;
}
.footer-right {
text-align:center;
text-transform:uppercase;
padding-top:24px;
position:relative;
height: 150px;
width:50%;
color:#000;
font-size: 12px;
float:right;
bottom:1px;
}
.TableData {
background:#ffffff;
font: 11px;
width:100%;
border-collapse:collapse;
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size:12px;
border:thin solid #d3d3d3;
}
.TableData TH {
background: rgba(0,0,255,0.1);
text-align: center;
font-weight: bold;
color: #000;
border: solid 1px #ccc;
height: 24px;
}
.TableData TR {
height: 24px;
border:thin solid #d3d3d3;
}
.TableData TR TD {
padding-right: 2px;
padding-left: 2px;
border:thin solid #d3d3d3;
}
.TableData TR:hover {
background: rgba(0,0,0,0.05);
}
.TableData .cotSTT {
text-align:center;
width: 10%;
}
.TableData .cotTenSanPham {
text-align:left;
width: 40%;
}
.TableData .cotHangSanXuat {
text-align:left;
width: 20%;
}
.TableData .cotGia {
text-align:right;
width: 120px;
}
.TableData .cotSoLuong {
text-align: center;
width: 50px;
}
.TableData .cotSo {
text-align: right;
width: 120px;
}
.TableData .tong {
text-align: right;
font-weight:bold;
text-transform:uppercase;
padding-right: 4px;
}
.TableData .cotSoLuong input {
text-align: center;
}
@media print {
@page {
margin: 0;
border: initial;
border-radius: initial;
width: initial;
min-height: initial;
box-shadow: initial;
background: initial;
page-break-after: always;
}
}
[/sourcecode]
Và để có thể có được nội dung in chúng ta sẽ sử dụng PHP để phát sinh nội dung như sau:
[sourcecode language="php"]
<body onload="window.print();">
<div id="page" class="page">
<div class="header">
<div class="logo"><img src="../images/logo.jpg"/></div>
<div class="company">C.Ty TNHH Salomon</div>
</div>
<br/>
<div class="title">
HÓA ĐƠN THANH TOÁN
<br/>
-------oOo-------
</div>
<br/>
<br/>
<table class="TableData">
<tr>
<th>STT</th>
<th>Tên</th>
<th>Đơn giá</th>
<th>Số</th>
<th>Thành tiền</th>
</tr>
<?php
session_start();
$tongsotien = 0;
if(isset($_SESSION['giohang'])){
$pos = 1;
$tongsotien = 0;
foreach($_SESSION['giohang'] as $i => $row)
{
$tongsotien += $row['sp_soluong']*$row['sp_dongia'];
echo "<tr>";
echo "<td class=\"cotSTT\">".$pos++."</td>";
echo "<td class=\"cotTenSanPham\">".$row['sp_ten']."</td>";
echo "<td class=\"cotGia\"><div id='giasp".$row['sp_id']."' name='giasp".$row['sp_id']."' value='".$row['sp_dongia']."'>".number_format($row['sp_dongia'],0,",",".")."</div></td>";
echo "<td class=\"cotSoLuong\" align='center'>".$row['sp_soluong']."</td>";
echo "<td class=\"cotSo\">".number_format(($row['sp_soluong']*$row['sp_dongia']),0,",",".")."</td>";
echo "</tr>";
}
}
?>
<tr>
<td colspan="4" class="tong">Tổng cộng</td>
<td class="cotSo"><?php echo number_format(($tongsotien),0,",",".")?></td>
</tr>
</table>
<div class="footer-left"> Cần thơ, ngày 16 tháng 12 năm 2014<br/>
Khách hàng </div>
<div class="footer-right"> Cần thơ, ngày 16 tháng 12 năm 2014<br/>
Nhân viên </div>
</div>
</body>
[/sourcecode]
Chạy thử trang web chúng ta sẽ có hình như bên trên.
Xác định mật độ điểm ảnh trên Android
[sourcecode language="java"]
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
switch (metrics.densityDpi) {
case DisplayMetrics.DENSITY_LOW:
pxSize = 38;
break;
case DisplayMetrics.DENSITY_MEDIUM:
pxSize = 50;
break;
case DisplayMetrics.DENSITY_HIGH:
pxSize = 75;
break;
case DisplayMetrics.DENSITY_XHIGH:
pxSize = 100;
break;
case DisplayMetrics.DENSITY_XXHIGH:
pxSize = 150;
break;
case DisplayMetrics.DENSITY_XXXHIGH:
pxSize = 200;
break;
}
[/sourcecode]
Với sự hỗ trợ của thư viện này chúng ta xác định được tỉ lệ giữa độ đo DP và PX khá đơn giản.