http://www.aquafold.com/index-sqlserver.html
Aqua Data Studio is a management tool for the SQL Server relational database with administration capabilities and a database query tool. The visual administration features provide users the ability to browse and modify database structures, including schema objects and database storage, as well as maintain database security. An integrated query tool allows you to quickly create, edit and execute SQL queries and scripts. Aqua Data Studio further provides import and export tools to move data easily both in and from different data formats, as well as in and out of the SQL Server database. Integrated within these tools is a Repository Browser with full source control clients for CVS and Subversion (SVN).
Aqua Data Studio is a complete Integrated Development Environment (IDE) for database administrators, software developers and business analysts. It provides four major areas of functionality: 1) Database query and administration tools; 2) a suite of compare tools for databases, source control and file systems; 3) a complete and integrated source control client for Subversion (SVN) and CVS; and 4) a database modeler as powerful as the best standalone database diagramming tools.
RDBMS Support: (Oracle - 11g, 10g, 9i, 8i) (DB2 iSeries V5R3, V5R4, V6R1) (DB2 LUW - 9.7/9.x/8/7) (DB2 z/OS - V8/V9) (MS SQL Server - 2008/2005/2000/7/MSDE) (Sybase ASE - 15/12.x/11.x) (Sybase Anywhere - 11/10/9/8) (Sybase IQ - 12.x, 15) (Teradata 12) (Aster nCluster 4.0) (Informix IDS - 11.x/10/9.x/7.x) (PostgreSQL - 8.4/8.x/7.x) (MySQL - 5.x/4.x/3.x) (Apache Derby 10.x) (Generic JDBC Platform) (Generic ODBC)
Wednesday, December 30, 2009
EMS SQL Manager for SQL Server Freeware
EMS SQL Manager for SQL Server Freeware (EMS SQL Manager Lite for SQL Server) is a light and easy-to-use freeware graphical tool for Microsoft SQL Server database development and administration. It has the minimal required set of tools for those users who are new to SQL Server and need only its basic functionality. Being a light edition, SQL Manager Freeware has certain restrictions, for example, it can handle not more than 5 databases, and some others.
http://sqlmanager.net/products/mssql/manager
Comparison with full version :
http://sqlmanager.net/en/products/mssql/manager/matrix
http://sqlmanager.net/products/mssql/manager
Comparison with full version :
http://sqlmanager.net/en/products/mssql/manager/matrix
Key Features
- Support of SQL Server 2008
- Support of Unicode data
- Rapid database management and navigation
- Easy management of all SQL Server objects
- Advanced data manipulation tools
- Effective security management
- Excellent visual and text tools for query building
- Impressive data export and import capabilities
- Visual Database Designer to handle database structure in a few clicks
- Easy-to-use wizards performing SQL Server administrative tasks
- Powerful tools to make your work with SQL Server as easy as it can be
- Report designer with clear in use report construction wizard
- New state-of-the-art graphical user interface
Sunday, December 20, 2009
Monday, November 23, 2009
Thursday, October 29, 2009
Xataface - The fastest way to build a front-end for your MySQL database
http://xataface.com/admin.php?-action=home
Monday, September 14, 2009
Tuesday, September 8, 2009
HTML UNICODE SAMPLE
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="zh-TW" xml:lang="zh-TW" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-9" />
<title>HTML unicode</title>
<script type="text/javascript">
<!--
function convert()
{
str = document.conv.str.value;
result = "";
for(i = 0 ; i < str.length ; i++) {
c = str.charAt(i);
if((' ' <= c && c <= '~') || (c == '\r') || (c == '\n')) {
if(c == '&') {
cstr = "&";
} else if(c == '<') {
cstr = "<";
} else if(c == '>') {
cstr = ">";
} else {
cstr = c.toString();
}
} else {
cstr = "&#" + c.charCodeAt().toString() + ";";
}
result = result + cstr;
}
document.conv.result.value = result;
document.conv.result.focus();
document.conv.result.select();
return 0;
}
-->
</script>
</head>
<body>
<H1>HTML unicode</H1>
<form action="#" id="conv" name="conv">
Original: <br/>
<textarea id="str" cols="80" rows="10" onchange="convert();" onblur="convert();"></textarea><br/>
<br/>Charcode: <br/>
<textarea id="result" cols="80" rows="10" onfocus="convert();"></textarea><br/>
<input type="button" value="Convert" onclick="convert();" onkeypress="convert" />
<input type="reset" value="Clear"/><br/>
</form>
<hr />
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="zh-TW" xml:lang="zh-TW" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-9" />
<title>HTML unicode</title>
<script type="text/javascript">
<!--
function convert()
{
str = document.conv.str.value;
result = "";
for(i = 0 ; i < str.length ; i++) {
c = str.charAt(i);
if((' ' <= c && c <= '~') || (c == '\r') || (c == '\n')) {
if(c == '&') {
cstr = "&";
} else if(c == '<') {
cstr = "<";
} else if(c == '>') {
cstr = ">";
} else {
cstr = c.toString();
}
} else {
cstr = "&#" + c.charCodeAt().toString() + ";";
}
result = result + cstr;
}
document.conv.result.value = result;
document.conv.result.focus();
document.conv.result.select();
return 0;
}
-->
</script>
</head>
<body>
<H1>HTML unicode</H1>
<form action="#" id="conv" name="conv">
Original: <br/>
<textarea id="str" cols="80" rows="10" onchange="convert();" onblur="convert();"></textarea><br/>
<br/>Charcode: <br/>
<textarea id="result" cols="80" rows="10" onfocus="convert();"></textarea><br/>
<input type="button" value="Convert" onclick="convert();" onkeypress="convert" />
<input type="reset" value="Clear"/><br/>
</form>
<hr />
</body>
</html>
Cookies and Javascript
Cookies
Cookies were originally invented by Netscape to give 'memory' to web servers and browsers. The HTTP protocol, which arranges for the transfer of web pages to your browser and browser requests for pages to servers, is state-less, which means that once the server has sent a page to a browser requesting it, it doesn't remember a thing about it. So if you come to the same web page a second, third, hundredth or millionth time, the server once again considers it the very first time you ever came there.
This can be annoying in a number of ways. The server cannot remember if you identified yourself when you want to access protected pages, it cannot remember your user preferences, it cannot remember anything. As soon as personalization was invented, this became a major problem.
Cookies were invented to solve this problem. There are other ways to solve it, but cookies are easy to maintain and very versatile.
How cookies work
A cookie is nothing but a small text file that's stored in your browser. It contains some data:
As soon as you request a page from a server to which a cookie should be sent, the cookie is added to the HTTP header. Server side programs can then read out the information and decide that you have the right to view the page you requested or that you want your links to be yellow on a green background.
So every time you visit the site the cookie comes from, information about you is available. This is very nice sometimes, at other times it may somewhat endanger your privacy. Fortunately more and more browsers give you the opportunity to manage your cookies (deleting the one from the big ad site, for example).
Cookies can be read by JavaScript too. They're mostly used for storing user preferences.
name-value
Each cookie has a name-value pair that contains the actual information. The name of the cookie is for your benefit, you will search for this name when reading out the cookie information.
If you want to read out the cookie you search for the name and see what value is attached to it. Read out this value. Of course you yourself have to decide which value(s) the cookie can have and to write the scripts to deal with these value(s).
Expiry date
Each cookie has an expiry date after which it is trashed. If you don't specify the expiry date the cookie is trashed when you close the browser. This expiry date should be in UTC (Greenwich) time in the format created by the Date.toGMTString() method
Domain and path
Each cookie also has a domain and a path. The domain tells the browser to which domain the cookie should be sent. If you don't specify it, it becomes the domain of the page that sets the cookie, in the case of this page www.quirksmode.org.
Please note that the purpose of the domain is to allow cookies to cross sub-domains. My cookie will not be read by search.quirksmode.org because its domain is www.quirksmode.org . When I set the domain to quirksmode.org, the search sub-domain may also read the cookie.
I cannot set the cookie domain to a domain I'm not in, I cannot make the domain www.microsoft.com . Only quirksmode.org is allowed, in this case.
The path gives you the chance to specify a directory where the cookie is active. So if you want the cookie to be only sent to pages in the directory cgi-bin, set the path to /cgi-bin. Usually the path is set to /, which means the cookie is valid throughout the entire domain.
This script does so, so the cookies you can set on this page will be sent to any page in the www.quirksmode.org domain (though only this page has a script that searches for the cookies and does something with them).
document.cookie
Cookies can be created, read and erased by JavaScript. They are accessible through the property document.cookie. Though you can treat document.cookie as if it's a string, it isn't really, and you have only access to the name-value pairs.
If I want to set a cookie for this domain with a name-value pair 'ppkcookie1=testcookie' that expires in seven days from the moment I write this sentence, I do
document.cookie =
'ppkcookie1=testcookie; expires=Thu, 2 Aug 2001 20:47:11 UTC; path=/'
1. First the name-value pair ('ppkcookie1=testcookie')
2. then a semicolon and a space
3. then the expiry date in the correct format ('expires=Thu, 2 Aug 2001 20:47:11 UTC')
4. again a semicolon and a space
5. then the path (path=/)
This is a very strict syntax, don't change it! (Of course the script manages these dirty bits for you)
Also, even though it looks like I'm writing this whole string to the string document.cookie, as soon as I read it out again I only see the name-value pair:
ppkcookie1=testcookie
If I want to set another cookie, I again do
document.cookie =
'ppkcookie2=another test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/'
The first cookie is not overwritten, as it would when document.cookie would be a real string. Instead the second one is added to document.cookie, so if we read it out we get
ppkcookie1=testcookie; ppkcookie2=another test
If I reset a cookie
document.cookie =
'ppkcookie2=yet another test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/'
the old cookie is overwritten and document.cookie reads
ppkcookie1=testcookie; ppkcookie2=yet another test
To read out a cookie you have to treat document.cookie as a string and search for certain characters (semicolons, for instance) and for the cookie name. I'll explain how to do it below.
Finally, to remove a cookie, set it with an expiry date before today. The browser sees that the cookie has expired and removes it.
document.cookie =
'ppkcookie2=yet another test; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/'
The scripts
These are the three scripts you need.
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
Explanation
The functions are not very difficult, the hardest part is creating the correct syntax for setting a cookie.
createCookie
When calling createCookie() you have to give it three bits of information: the name and value of the cookie and the number of days it is to remain active. In this case the name-value pair should become ppkcookie=testcookie and it should be active for 7 days.
createCookie('ppkcookie','testcookie',7)
If you set the number of days to 0 the cookie is trashed when the user closes the browser. If you set the days to a negative number the cookie is trashed immediately.
The function receives the arguments and starts doing its job.
function createCookie(name,value,days) {
First of all see if there is a days value. If there isn't we don't need to do the time calculation.
if (days) {
If there is, create a new Date object containing the current date.
var date = new Date();
Now get the current Time (in milliseconds) and add the required number of days (in milliseconds). Set the Time of the date to this new value, so that it now contains the date in milliseconds that the cookie should expire.
date.setTime(date.getTime()+(days*24*60*60*1000));
Set the variable expires to this date in the UTC/GMT format required by cookies.
var expires = "; expires="+date.toGMTString();
}
If 0 is passed to the function, expires is not set and the cookie expires when the user closes his browser..
else var expires = "";
Finally write the new cookie into document.cookie in the correct syntax.
document.cookie = name+"="+value+expires+"; path=/";
}
Cookie created.
readCookie
To read out a cookie, call this function and pass the name of the cookie. Put the name in a variable. First check if this variable has a value (if the cookie does not exist the variable becomes null, which might upset the rest of your function), then do whatever is necessary.
var x = readCookie('ppkcookie1')
if (x) {
[do something with x]
}
The function receives the argument and starts.
function readCookie(name) {
We're going to search for the name of the cookie, followed by an =. So create this new string and put it in nameEQ:
var nameEQ = name + "=";
Then split document.cookie on semicolons. ca becomes an array containing all cookies that are set for this domain and path.
var ca = document.cookie.split(';');
Then we go through the array (so through all cookies):
for(var i=0;i < ca.length;i++) {
Set c to the cookie to be checked.
var c = ca[i];
If the first character is a space, remove it by using the substring() method. Continue doing this until the first character is not a space.
while (c.charAt(0)==' ') c = c.substring(1,c.length);
Now string c begins with the name of the current cookie. If this is the name of the desired cookie
if (c.indexOf(nameEQ) == 0)
we've found what we were looking for. We now only need to return the value of the cookie, which is the part of c that comes after nameEQ. By returning this value we also end the function: mission accomplished.
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
If, after having gone through all cookies, we haven't found the name we're looking for, the cookie is not present. We return null.
return null;
}
Cookie read.
eraseCookie
Erasing is extremely simple.
eraseCookie('ppkcookie')
Pass the name of the cookie to be erased
function eraseCookie(name) {
and call createCookie() to set the cookie with an expiry date of one day ago.
createCookie(name,"",-1);
}
The browser, seeing that the expiry date has passed, immediately removes the cookie.
Cookies were originally invented by Netscape to give 'memory' to web servers and browsers. The HTTP protocol, which arranges for the transfer of web pages to your browser and browser requests for pages to servers, is state-less, which means that once the server has sent a page to a browser requesting it, it doesn't remember a thing about it. So if you come to the same web page a second, third, hundredth or millionth time, the server once again considers it the very first time you ever came there.
This can be annoying in a number of ways. The server cannot remember if you identified yourself when you want to access protected pages, it cannot remember your user preferences, it cannot remember anything. As soon as personalization was invented, this became a major problem.
Cookies were invented to solve this problem. There are other ways to solve it, but cookies are easy to maintain and very versatile.
How cookies work
A cookie is nothing but a small text file that's stored in your browser. It contains some data:
- A name-value pair containing the actual data
- An expiry date after which it is no longer valid
- The domain and path of the server it should be sent to
As soon as you request a page from a server to which a cookie should be sent, the cookie is added to the HTTP header. Server side programs can then read out the information and decide that you have the right to view the page you requested or that you want your links to be yellow on a green background.
So every time you visit the site the cookie comes from, information about you is available. This is very nice sometimes, at other times it may somewhat endanger your privacy. Fortunately more and more browsers give you the opportunity to manage your cookies (deleting the one from the big ad site, for example).
Cookies can be read by JavaScript too. They're mostly used for storing user preferences.
name-value
Each cookie has a name-value pair that contains the actual information. The name of the cookie is for your benefit, you will search for this name when reading out the cookie information.
If you want to read out the cookie you search for the name and see what value is attached to it. Read out this value. Of course you yourself have to decide which value(s) the cookie can have and to write the scripts to deal with these value(s).
Expiry date
Each cookie has an expiry date after which it is trashed. If you don't specify the expiry date the cookie is trashed when you close the browser. This expiry date should be in UTC (Greenwich) time in the format created by the Date.toGMTString() method
Domain and path
Each cookie also has a domain and a path. The domain tells the browser to which domain the cookie should be sent. If you don't specify it, it becomes the domain of the page that sets the cookie, in the case of this page www.quirksmode.org.
Please note that the purpose of the domain is to allow cookies to cross sub-domains. My cookie will not be read by search.quirksmode.org because its domain is www.quirksmode.org . When I set the domain to quirksmode.org, the search sub-domain may also read the cookie.
I cannot set the cookie domain to a domain I'm not in, I cannot make the domain www.microsoft.com . Only quirksmode.org is allowed, in this case.
The path gives you the chance to specify a directory where the cookie is active. So if you want the cookie to be only sent to pages in the directory cgi-bin, set the path to /cgi-bin. Usually the path is set to /, which means the cookie is valid throughout the entire domain.
This script does so, so the cookies you can set on this page will be sent to any page in the www.quirksmode.org domain (though only this page has a script that searches for the cookies and does something with them).
document.cookie
Cookies can be created, read and erased by JavaScript. They are accessible through the property document.cookie. Though you can treat document.cookie as if it's a string, it isn't really, and you have only access to the name-value pairs.
If I want to set a cookie for this domain with a name-value pair 'ppkcookie1=testcookie' that expires in seven days from the moment I write this sentence, I do
document.cookie =
'ppkcookie1=testcookie; expires=Thu, 2 Aug 2001 20:47:11 UTC; path=/'
1. First the name-value pair ('ppkcookie1=testcookie')
2. then a semicolon and a space
3. then the expiry date in the correct format ('expires=Thu, 2 Aug 2001 20:47:11 UTC')
4. again a semicolon and a space
5. then the path (path=/)
This is a very strict syntax, don't change it! (Of course the script manages these dirty bits for you)
Also, even though it looks like I'm writing this whole string to the string document.cookie, as soon as I read it out again I only see the name-value pair:
ppkcookie1=testcookie
If I want to set another cookie, I again do
document.cookie =
'ppkcookie2=another test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/'
The first cookie is not overwritten, as it would when document.cookie would be a real string. Instead the second one is added to document.cookie, so if we read it out we get
ppkcookie1=testcookie; ppkcookie2=another test
If I reset a cookie
document.cookie =
'ppkcookie2=yet another test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/'
the old cookie is overwritten and document.cookie reads
ppkcookie1=testcookie; ppkcookie2=yet another test
To read out a cookie you have to treat document.cookie as a string and search for certain characters (semicolons, for instance) and for the cookie name. I'll explain how to do it below.
Finally, to remove a cookie, set it with an expiry date before today. The browser sees that the cookie has expired and removes it.
document.cookie =
'ppkcookie2=yet another test; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/'
The scripts
These are the three scripts you need.
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
Explanation
The functions are not very difficult, the hardest part is creating the correct syntax for setting a cookie.
createCookie
When calling createCookie() you have to give it three bits of information: the name and value of the cookie and the number of days it is to remain active. In this case the name-value pair should become ppkcookie=testcookie and it should be active for 7 days.
createCookie('ppkcookie','testcookie',7)
If you set the number of days to 0 the cookie is trashed when the user closes the browser. If you set the days to a negative number the cookie is trashed immediately.
The function receives the arguments and starts doing its job.
function createCookie(name,value,days) {
First of all see if there is a days value. If there isn't we don't need to do the time calculation.
if (days) {
If there is, create a new Date object containing the current date.
var date = new Date();
Now get the current Time (in milliseconds) and add the required number of days (in milliseconds). Set the Time of the date to this new value, so that it now contains the date in milliseconds that the cookie should expire.
date.setTime(date.getTime()+(days*24*60*60*1000));
Set the variable expires to this date in the UTC/GMT format required by cookies.
var expires = "; expires="+date.toGMTString();
}
If 0 is passed to the function, expires is not set and the cookie expires when the user closes his browser..
else var expires = "";
Finally write the new cookie into document.cookie in the correct syntax.
document.cookie = name+"="+value+expires+"; path=/";
}
Cookie created.
readCookie
To read out a cookie, call this function and pass the name of the cookie. Put the name in a variable. First check if this variable has a value (if the cookie does not exist the variable becomes null, which might upset the rest of your function), then do whatever is necessary.
var x = readCookie('ppkcookie1')
if (x) {
[do something with x]
}
The function receives the argument and starts.
function readCookie(name) {
We're going to search for the name of the cookie, followed by an =. So create this new string and put it in nameEQ:
var nameEQ = name + "=";
Then split document.cookie on semicolons. ca becomes an array containing all cookies that are set for this domain and path.
var ca = document.cookie.split(';');
Then we go through the array (so through all cookies):
for(var i=0;i < ca.length;i++) {
Set c to the cookie to be checked.
var c = ca[i];
If the first character is a space, remove it by using the substring() method. Continue doing this until the first character is not a space.
while (c.charAt(0)==' ') c = c.substring(1,c.length);
Now string c begins with the name of the current cookie. If this is the name of the desired cookie
if (c.indexOf(nameEQ) == 0)
we've found what we were looking for. We now only need to return the value of the cookie, which is the part of c that comes after nameEQ. By returning this value we also end the function: mission accomplished.
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
If, after having gone through all cookies, we haven't found the name we're looking for, the cookie is not present. We return null.
return null;
}
Cookie read.
eraseCookie
Erasing is extremely simple.
eraseCookie('ppkcookie')
Pass the name of the cookie to be erased
function eraseCookie(name) {
and call createCookie() to set the cookie with an expiry date of one day ago.
createCookie(name,"",-1);
}
The browser, seeing that the expiry date has passed, immediately removes the cookie.
Wednesday, September 2, 2009
Ajax Simple Application
<script language="javascript">
// var http = new XMLHttpRequest();
var http = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
var url = "13update_lotsize.php";
var params = "";
http.open("GET", url+"?"+params, true);
http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState == 4 && http.status == 200) {
//document.write("Update OK");
// alert(http.responseText);
}
}
http.send(null);
</script>
// var http = new XMLHttpRequest();
var http = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
var url = "13update_lotsize.php";
var params = "";
http.open("GET", url+"?"+params, true);
http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState == 4 && http.status == 200) {
//document.write("Update OK");
// alert(http.responseText);
}
}
http.send(null);
</script>
Tuesday, September 1, 2009
內嵌框架 iframe
內嵌框架 iframe
怎麼做的?
| 參數 | 說明 | 使用範例 | |
| align | 對齊,TOP(上)、BOTTOM(下)、LEFT(左)、RIGHT(右)、MIDDLE(中)。 | align="right" | |
| frameborder | 邊框 | frameborder="0" | |
| height | iframe 高 | height="50" | |
| width | iframe 寬 | width="400" | |
| marginheight | 上下邊界 | marginheight="2" | |
| marginwidth | 左右邊界 | marginwidth="2" | |
| scrolling | 捲動軸 yes, no, auto | scrolling="no" | |
| name | 為框架命名,超連結 target 使用 |
Wednesday, July 22, 2009
Live Chat Package
http://www.mediacast.nu/chatroomsoftware.html
http://userinteract.com/scrn_shots.php
http://userinteract.com/scrn_shots.php
Wednesday, May 6, 2009
Monday, April 13, 2009
JavaScript for Rich Internet Applications - Rico
http://demos.openrico.org/complex_ajax
Rico 2.0 extends the component set from the previous versions. The LiveGrid has been expanded to include filtering, column resizing, and many more features. The core of Rico 2.0 has been designed to enable custom components to be more easily built.
Animation Effects
Rico 2.0 provides responsive animation for smooth effects and transitions that that can communicate change in richer ways than traditional web applications have explored before. Unlike most effects, Rico 2.0 animation can be interrupted, paused, resumed, or have other effects applied to it to enable responsive interaction that the user does not have to wait on.
Behaviors
Take some raw HTML and sprinkle in some behaviors and what do you get? Well in Rico you can easily build an Accordion component like those found in Macromedia Flex and Laszlo.
Styling
Rico provides several cinematic effects as well as some simple visual style effects in a very simple interface.
Drag And Drop
Desktop applications have long used drag and drop in their interfaces to simplify user interaction. Rico provides one of the simplest interfaces for enabling your web application to support drag and drop. Just register any HTML element or JavaScript object as a draggable and any other HTML element or JavaScript object as a drop zone and Rico handles the rest.
AJAX Support
Rico provides a very simple interface for registering Ajax request handlers as well as HTML elements or JavaScript objects as Ajax response objects. Multiple elements and/or objects may be updated as the result of one Ajax request.
Rico 2.0 extends the component set from the previous versions. The LiveGrid has been expanded to include filtering, column resizing, and many more features. The core of Rico 2.0 has been designed to enable custom components to be more easily built.
Animation Effects
Rico 2.0 provides responsive animation for smooth effects and transitions that that can communicate change in richer ways than traditional web applications have explored before. Unlike most effects, Rico 2.0 animation can be interrupted, paused, resumed, or have other effects applied to it to enable responsive interaction that the user does not have to wait on.
Behaviors
Take some raw HTML and sprinkle in some behaviors and what do you get? Well in Rico you can easily build an Accordion component like those found in Macromedia Flex and Laszlo.
Styling
Rico provides several cinematic effects as well as some simple visual style effects in a very simple interface.
Drag And Drop
Desktop applications have long used drag and drop in their interfaces to simplify user interaction. Rico provides one of the simplest interfaces for enabling your web application to support drag and drop. Just register any HTML element or JavaScript object as a draggable and any other HTML element or JavaScript object as a drop zone and Rico handles the rest.
AJAX Support
Rico provides a very simple interface for registering Ajax request handlers as well as HTML elements or JavaScript objects as Ajax response objects. Multiple elements and/or objects may be updated as the result of one Ajax request.
10 JavaScript Effects to Boost Your Website’s Fanciness Factor
There comes a point in time where we want to improve our website’s interface or provide a captivating experience that our users will remember.
We have three main options (from hardest to easiest): write the scripts ourselves, use a JavaScript framework such as jQuery or mootools (which will make coding easier), use a pre-made script that works with existing JavaScript frameworks or that the author has developed from scratch. This article’s for the individuals who chooses to make things a bit easier and those who don’t want to re-invent the wheel.
Here’s a collection of 10 powerful – yet easy-to-implement — JavaScript effects to supplement your web page’s interface. These were picked using a “bang for your buck” methodology; meaning that these effects were chosen specifically because they provide high-impact effects with very little effort in installing and using them.
Author’s note: Title of this article, by request, was changed to reflect the content featured in this list. I apologize for the confusion this may have caused, and better quality control will be implemented in subsequent articles.
1) GreyBox http://orangoo.com/labs/GreyBox/
GreyBox allows you to launch other websites in a modal window (like a pop-up window, but it doesn’t open another browser). This is great for when you’re linking to multiple websites and don’t want the user to navigate away from your web page or to open another browser window that might be blocked by the user’s browser. Using GreyBox is easy and involves a 3-step process outlined in the web page.
Here’s some key pages regarding GreyBox: Download page, Documentation, Examples, Installation, and Advanced Usage (for the more experienced JavaScript’ers, check this page out for tips on how you can extend the library’s functionality).
2) instant.js http://www.netzgesta.de/instant/
instant.js effect dynamically adds a Polaroid-like effect to your images (it tilts it and adds a border with a drop shadow), simulating this popular image technique without having to use a digital-image editing application such as Photoshop.
This can be utilized for when you’re applying this popular visual technique on multiple images and you don’t want to manually edit the pictures yourself (you can probably batch process, but that’s really only effective for simple actions such as resizing images, cropping uniformly, etc.).
3) mooTable http://joomlicious.com/mootable/
mooTable allows you the ability to provide sorting of table data ( without a page refresh) by utilizing the DOM instead of requesting the data again, sorted another way. Implementation is simple, and configuring the sorting of tables is a breeze.
This library needs the mootools framework, which you can download here. You can also find a forum post on the mootools boards by the author of mooTable, with feedback from other mootools developers.
4) FancyForm http://lipidity.com/fancy-form/#example
FancyForm replaces boring form controls such as radio buttons and check boxes, with fancier ones. The basic implementation is a two-step process: (1) include JavaScript files on the web page, and (2) assign your form controls the class="checked" or class="unchecked" for checkboxes and class="selected" and class="unselected" for radio buttons. Very unobtrusive JavaScript.
This script needs mootools as well (and was developed for version 1.1).
5) image menu http://www.phatfusion.net/imagemenu/index.htm
image menu, developed by phatfusion, is a spiffy horizontal menu that expands when you hover over menu items (such as images).
You can use this for displaying a montage of images that are each partly hidden, but that the user can reveal fully by hovering over it.
This script needs mootools as well (and was developed for version 1.1)
6) AmberJack: Site Tour Creator http://amberjack.org/
Here’s a lightweight JavaScript library that allows you to create a scripted website tour, allowing users to visit key web pages in real-time with a small description box on each page.
This allows users to take a tour of the various sections of a website, without them having to view a static demo created in flash or some other method. Extra bonus, you can download various “skins” or even create your own, to match the look and feel of your website. Here’s the skins gallery so you may see if they have a theme that doesn’t clash with your website.
7) ImageFlow http://imageflow.finnrudolph.de/
Inspired by iPod’s “coverflow”, ImageFlow is a simple effect that displays a collection of images that the user can scroll there using a scroll bar at the bottom of the image set. Advanced developers can probably modify the slider to spruce it up a bit more.
When the user clicks on an image, it re-directs them to another web page with the image displayed, so an excellent idea would be to use this in conjunction with a modal box script to open the image instead.
Update: Just now, the author of ImageFlow emailed me announcing ImageFlow version 0.9. Check it out here (it fixes the issue of the image opening another browser window when clicked, and it works with Lightbox compatibility). Thanks for the update Finn!
8) ShadowBox.js Media viewer http://mjijackson.com/shadowbox/
ShadowBox is “a cross-browser, cross-platform, cleanly-coded and fully-documented media viewer application written entirely in JavaScript” (wow that’s a mouthful, isn’t it?).
What distinguishes shadowbox from the plethora of other modal boxes out there like Lightbox 2, is that it supports other file types besides images, such as a flash videos, embedded youtube videos, Apple.com Trailers, and web pages (a log-in page for example, that saves the user a trip to another page just to log on). Worthwhile script to test and play around with.
9) TJPzoom 3 - image magnifier http://valid.tjp.hu/tjpzoom/
TJPzoom allows you to zoom in on particular sections of a high-resolution image. Holding down the mouse button and dragging up or down, can decrease or increase the zooming of the image magnifier tool.
One way of utilizing TJPzoom is to scale high-resolution pictures down to fit a web page, and then allow the users to zoom into parts of the image using the magnifier tool.
10) mootools Tips http://demos.mootools.net/Tips
mootools Tips is part of the mootools framework that allows you to provide a highly configurable way of showing tool tips to the user; when the user hovers over a link or image, additional information about the element appears on the screen.
Some options that you can tweak are the: CSS styles (to make it look different from the default black background and white text), transition speed, style of how the tool tip appears on-screen, and how long you want the tool tip be displayed. This requires the mootools framework.
We have three main options (from hardest to easiest): write the scripts ourselves, use a JavaScript framework such as jQuery or mootools (which will make coding easier), use a pre-made script that works with existing JavaScript frameworks or that the author has developed from scratch. This article’s for the individuals who chooses to make things a bit easier and those who don’t want to re-invent the wheel.
Here’s a collection of 10 powerful – yet easy-to-implement — JavaScript effects to supplement your web page’s interface. These were picked using a “bang for your buck” methodology; meaning that these effects were chosen specifically because they provide high-impact effects with very little effort in installing and using them.
Author’s note: Title of this article, by request, was changed to reflect the content featured in this list. I apologize for the confusion this may have caused, and better quality control will be implemented in subsequent articles.
1) GreyBox http://orangoo.com/labs/GreyBox/
GreyBox allows you to launch other websites in a modal window (like a pop-up window, but it doesn’t open another browser). This is great for when you’re linking to multiple websites and don’t want the user to navigate away from your web page or to open another browser window that might be blocked by the user’s browser. Using GreyBox is easy and involves a 3-step process outlined in the web page.
Here’s some key pages regarding GreyBox: Download page, Documentation, Examples, Installation, and Advanced Usage (for the more experienced JavaScript’ers, check this page out for tips on how you can extend the library’s functionality).
2) instant.js http://www.netzgesta.de/instant/
instant.js effect dynamically adds a Polaroid-like effect to your images (it tilts it and adds a border with a drop shadow), simulating this popular image technique without having to use a digital-image editing application such as Photoshop.
This can be utilized for when you’re applying this popular visual technique on multiple images and you don’t want to manually edit the pictures yourself (you can probably batch process, but that’s really only effective for simple actions such as resizing images, cropping uniformly, etc.).
3) mooTable http://joomlicious.com/mootable/
mooTable allows you the ability to provide sorting of table data ( without a page refresh) by utilizing the DOM instead of requesting the data again, sorted another way. Implementation is simple, and configuring the sorting of tables is a breeze.
This library needs the mootools framework, which you can download here. You can also find a forum post on the mootools boards by the author of mooTable, with feedback from other mootools developers.
4) FancyForm http://lipidity.com/fancy-form/#example
FancyForm replaces boring form controls such as radio buttons and check boxes, with fancier ones. The basic implementation is a two-step process: (1) include JavaScript files on the web page, and (2) assign your form controls the class="checked" or class="unchecked" for checkboxes and class="selected" and class="unselected" for radio buttons. Very unobtrusive JavaScript.
This script needs mootools as well (and was developed for version 1.1).
5) image menu http://www.phatfusion.net/imagemenu/index.htm
image menu, developed by phatfusion, is a spiffy horizontal menu that expands when you hover over menu items (such as images).
You can use this for displaying a montage of images that are each partly hidden, but that the user can reveal fully by hovering over it.
This script needs mootools as well (and was developed for version 1.1)
6) AmberJack: Site Tour Creator http://amberjack.org/
Here’s a lightweight JavaScript library that allows you to create a scripted website tour, allowing users to visit key web pages in real-time with a small description box on each page.
This allows users to take a tour of the various sections of a website, without them having to view a static demo created in flash or some other method. Extra bonus, you can download various “skins” or even create your own, to match the look and feel of your website. Here’s the skins gallery so you may see if they have a theme that doesn’t clash with your website.
7) ImageFlow http://imageflow.finnrudolph.de/
Inspired by iPod’s “coverflow”, ImageFlow is a simple effect that displays a collection of images that the user can scroll there using a scroll bar at the bottom of the image set. Advanced developers can probably modify the slider to spruce it up a bit more.
When the user clicks on an image, it re-directs them to another web page with the image displayed, so an excellent idea would be to use this in conjunction with a modal box script to open the image instead.
Update: Just now, the author of ImageFlow emailed me announcing ImageFlow version 0.9. Check it out here (it fixes the issue of the image opening another browser window when clicked, and it works with Lightbox compatibility). Thanks for the update Finn!
8) ShadowBox.js Media viewer http://mjijackson.com/shadowbox/
ShadowBox is “a cross-browser, cross-platform, cleanly-coded and fully-documented media viewer application written entirely in JavaScript” (wow that’s a mouthful, isn’t it?).
What distinguishes shadowbox from the plethora of other modal boxes out there like Lightbox 2, is that it supports other file types besides images, such as a flash videos, embedded youtube videos, Apple.com Trailers, and web pages (a log-in page for example, that saves the user a trip to another page just to log on). Worthwhile script to test and play around with.
9) TJPzoom 3 - image magnifier http://valid.tjp.hu/tjpzoom/
TJPzoom allows you to zoom in on particular sections of a high-resolution image. Holding down the mouse button and dragging up or down, can decrease or increase the zooming of the image magnifier tool.
One way of utilizing TJPzoom is to scale high-resolution pictures down to fit a web page, and then allow the users to zoom into parts of the image using the magnifier tool.
10) mootools Tips http://demos.mootools.net/Tips
mootools Tips is part of the mootools framework that allows you to provide a highly configurable way of showing tool tips to the user; when the user hovers over a link or image, additional information about the element appears on the screen.
Some options that you can tweak are the: CSS styles (to make it look different from the default black background and white text), transition speed, style of how the tool tip appears on-screen, and how long you want the tool tip be displayed. This requires the mootools framework.
Thursday, January 15, 2009
Solve Big5 許蓋功 的問題, 直接把big5轉成utf-8 (unicode)
下載 php big5 function (用來把big5轉成unicode, big5_utf8_encode()):
http://twpug.net/modules/wfdownloads/singlefile.php?cid=27&lid=586
解釋:
「許蓋功」是指BIG5碼 設計時沒有把美國標準資訊交換碼ASCII(American Standard Code for Information Interchange)的控制碼排除在外,而ASCII是以byte為單位,又1 byte=8 bits,所以ASCII最多可以編2^8=256個字元,對於只有26個字母的英文語系國家來說已綽綽有餘,但對於有幾萬字的中文絕對不夠,因此必須用 兩個byte來代表一個中文字,如"中"字的編碼即是"A4A4"。然而,BIG5碼設計時為了避免與ASCII衝突,每個中文字的第一個byte僅使用 ASCII裡的高字元(129-255),但在第二個byte卻用到了部分低字元(1-128),這正是BIG5碼在日後應用上造成極大不便,[許蓋功] 這三個字正是這些出問題的字之一
http://twpug.net/modules/wfdownloads/singlefile.php?cid=27&lid=586
解釋:
「許蓋功」是指BIG5碼 設計時沒有把美國標準資訊交換碼ASCII(American Standard Code for Information Interchange)的控制碼排除在外,而ASCII是以byte為單位,又1 byte=8 bits,所以ASCII最多可以編2^8=256個字元,對於只有26個字母的英文語系國家來說已綽綽有餘,但對於有幾萬字的中文絕對不夠,因此必須用 兩個byte來代表一個中文字,如"中"字的編碼即是"A4A4"。然而,BIG5碼設計時為了避免與ASCII衝突,每個中文字的第一個byte僅使用 ASCII裡的高字元(129-255),但在第二個byte卻用到了部分低字元(1-128),這正是BIG5碼在日後應用上造成極大不便,[許蓋功] 這三個字正是這些出問題的字之一
Subscribe to:
Posts (Atom)
