[SQLite] Command Line Shell For SQLite

프로그래밍/DB 2010. 5. 24. 17:48 Posted by galad
http://www.sqlite.org/sqlite.html


The SQLite library includes a simple command-line utility named sqlite3 (or sqlite3.exe on windows) that allows the user to manually enter and execute SQL commands against an SQLite database. This document provides a brief introduction on how to use the sqlite3 program.

Getting Started

To start the sqlite3 program, just type "sqlite3" followed by the name the file that holds the SQLite database. If the file does not exist, a new one is created automatically. The sqlite3 program will then prompt you to enter SQL. Type in SQL statements (terminated by a semicolon), press "Enter" and the SQL will be executed.

For example, to create a new SQLite database named "ex1" with a single table named "tbl1", you might do this:

$ sqlite3 ex1
SQLite version 3.6.11
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table tbl1(one varchar(10), two smallint);
sqlite> insert into tbl1 values('hello!',10);
sqlite> insert into tbl1 values('goodbye', 20);
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite>

You can terminate the sqlite3 program by typing your systems End-Of-File character (usually a Control-D). Use the interrupt character (usually a Control-C) to stop a long-running SQL statement.

Make sure you type a semicolon at the end of each SQL command! The sqlite3 program looks for a semicolon to know when your SQL command is complete. If you omit the semicolon, sqlite3 will give you a continuation prompt and wait for you to enter more text to be added to the current SQL command. This feature allows you to enter SQL commands that span multiple lines. For example:

sqlite> CREATE TABLE tbl2 (
   ...>   f1 varchar(30) primary key,
   ...>   f2 text,
   ...>   f3 real
   ...> );
sqlite>

Aside: Querying the SQLITE_MASTER table

The database schema in an SQLite database is stored in a special table named "sqlite_master". You can execute "SELECT" statements against the special sqlite_master table just like any other table in an SQLite database. For example:

$ sqlite3 ex1
SQLite vresion 3.6.11
Enter ".help" for instructions
sqlite> select * from sqlite_master;
    type = table
    name = tbl1
tbl_name = tbl1
rootpage = 3
     sql = create table tbl1(one varchar(10), two smallint)
sqlite>

But you cannot execute DROP TABLE, UPDATE, INSERT or DELETE against the sqlite_master table. The sqlite_master table is updated automatically as you create or drop tables and indices from the database. You can not make manual changes to the sqlite_master table.

The schema for TEMPORARY tables is not stored in the "sqlite_master" table since TEMPORARY tables are not visible to applications other than the application that created the table. The schema for TEMPORARY tables is stored in another special table named "sqlite_temp_master". The "sqlite_temp_master" table is temporary itself.

Special commands to sqlite3

Most of the time, sqlite3 just reads lines of input and passes them on to the SQLite library for execution. But if an input line begins with a dot ("."), then that line is intercepted and interpreted by the sqlite3 program itself. These "dot commands" are typically used to change the output format of queries, or to execute certain prepackaged query statements.

For a listing of the available dot commands, you can enter ".help" at any time. For example:

sqlite> .help
.backup ?DB? FILE      Backup DB (default "main") to FILE
.bail ON|OFF           Stop after hitting an error.  Default OFF
.databases             List names and files of attached databases
.dump ?TABLE? ...      Dump the database in an SQL text format
.echo ON|OFF           Turn command echo on or off
.exit                  Exit this program
.explain ON|OFF        Turn output mode suitable for EXPLAIN on or off.
.genfkey ?OPTIONS?     Options are:
                         --no-drop: Do not drop old fkey triggers.
                         --ignore-errors: Ignore tables with fkey errors
                         --exec: Execute generated SQL immediately
                       See file tool/genfkey.README in the source 
                       distribution for further information.
.header(s) ON|OFF      Turn display of headers on or off
.help                  Show this message
.import FILE TABLE     Import data from FILE into TABLE
.indices TABLE         Show names of all indices on TABLE
.iotrace FILE          Enable I/O diagnostic logging to FILE
.load FILE ?ENTRY?     Load an extension library
.mode MODE ?TABLE?     Set output mode where MODE is one of:
                         csv      Comma-separated values
                         column   Left-aligned columns.  (See .width)
                         html     HTML <table> code
                         insert   SQL insert statements for TABLE
                         line     One value per line
                         list     Values delimited by .separator string
                         tabs     Tab-separated values
                         tcl      TCL list elements
.nullvalue STRING      Print STRING in place of NULL values
.output FILENAME       Send output to FILENAME
.output stdout         Send output to the screen
.prompt MAIN CONTINUE  Replace the standard prompts
.quit                  Exit this program
.read FILENAME         Execute SQL in FILENAME
.restore ?DB? FILE     Restore content of DB (default "main") from FILE
.schema ?TABLE?        Show the CREATE statements
.separator STRING      Change separator used by output mode and .import
.show                  Show the current values for various settings
.tables ?PATTERN?      List names of tables matching a LIKE pattern
.timeout MS            Try opening locked tables for MS milliseconds
.timer ON|OFF          Turn the CPU timer measurement on or off
.width NUM NUM ...     Set column widths for "column" mode
sqlite>

Changing Output Formats

The sqlite3 program is able to show the results of a query in eight different formats: "csv", "column", "html", "insert", "line", "list", "tabs", and "tcl". You can use the ".mode" dot command to switch between these output formats.

The default output mode is "list". In list mode, each record of a query result is written on one line of output and each column within that record is separated by a specific separator string. The default separator is a pipe symbol ("|"). List mode is especially useful when you are going to send the output of a query to another program (such as AWK) for additional processing.

sqlite> .mode list
sqlite> select * from tbl1;
hello|10
goodbye|20
sqlite>

You can use the ".separator" dot command to change the separator for list mode. For example, to change the separator to a comma and a space, you could do this:

sqlite> .separator ", "
sqlite> select * from tbl1;
hello, 10
goodbye, 20
sqlite>

In "line" mode, each column in a row of the database is shown on a line by itself. Each line consists of the column name, an equal sign and the column data. Successive records are separated by a blank line. Here is an example of line mode output:

sqlite> .mode line
sqlite> select * from tbl1;
one = hello
two = 10

one = goodbye
two = 20
sqlite>

In column mode, each record is shown on a separate line with the data aligned in columns. For example:

sqlite> .mode column
sqlite> select * from tbl1;
one         two       
----------  ----------
hello       10        
goodbye     20        
sqlite>

By default, each column is at least 10 characters wide. Data that is too wide to fit in a column is truncated. You can adjust the column widths using the ".width" command. Like this:

sqlite> .width 12 6
sqlite> select * from tbl1;
one           two   
------------  ------
hello         10    
goodbye       20    
sqlite>

The ".width" command in the example above sets the width of the first column to 12 and the width of the second column to 6. All other column widths were unaltered. You can gives as many arguments to ".width" as necessary to specify the widths of as many columns as are in your query results.

If you specify a column a width of 0, then the column width is automatically adjusted to be the maximum of three numbers: 10, the width of the header, and the width of the first row of data. This makes the column width self-adjusting. The default width setting for every column is this auto-adjusting 0 value.

The column labels that appear on the first two lines of output can be turned on and off using the ".header" dot command. In the examples above, the column labels are on. To turn them off you could do this:

sqlite> .header off
sqlite> select * from tbl1;
hello         10    
goodbye       20    
sqlite>

Another useful output mode is "insert". In insert mode, the output is formatted to look like SQL INSERT statements. You can use insert mode to generate text that can later be used to input data into a different database.

When specifying insert mode, you have to give an extra argument which is the name of the table to be inserted into. For example:

sqlite> .mode insert new_table
sqlite> select * from tbl1;
INSERT INTO 'new_table' VALUES('hello',10);
INSERT INTO 'new_table' VALUES('goodbye',20);
sqlite>

The last output mode is "html". In this mode, sqlite3 writes the results of the query as an XHTML table. The beginning <TABLE> and the ending </TABLE> are not written, but all of the intervening <TR>s, <TH>s, and <TD>s are. The html output mode is envisioned as being useful for CGI.

Writing results to a file

By default, sqlite3 sends query results to standard output. You can change this using the ".output" command. Just put the name of an output file as an argument to the .output command and all subsequent query results will be written to that file. Use ".output stdout" to begin writing to standard output again. For example:

sqlite> .mode list
sqlite> .separator |
sqlite> .output test_file_1.txt
sqlite> select * from tbl1;
sqlite> .exit
$ cat test_file_1.txt
hello|10
goodbye|20
$

Querying the database schema

The sqlite3 program provides several convenience commands that are useful for looking at the schema of the database. There is nothing that these commands do that cannot be done by some other means. These commands are provided purely as a shortcut.

For example, to see a list of the tables in the database, you can enter ".tables".

sqlite> .tables
tbl1
tbl2
sqlite>

The ".tables" command is similar to setting list mode then executing the following query:

SELECT name FROM sqlite_master 
WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%'
UNION ALL 
SELECT name FROM sqlite_temp_master 
WHERE type IN ('table','view') 
ORDER BY 1

In fact, if you look at the source code to the sqlite3 program (found in the source tree in the file src/shell.c) you'll find exactly the above query.

The ".indices" command works in a similar way to list all of the indices for a particular table. The ".indices" command takes a single argument which is the name of the table for which the indices are desired. Last, but not least, is the ".schema" command. With no arguments, the ".schema" command shows the original CREATE TABLE and CREATE INDEX statements that were used to build the current database. If you give the name of a table to ".schema", it shows the original CREATE statement used to make that table and all if its indices. We have:

sqlite> .schema
create table tbl1(one varchar(10), two smallint)
CREATE TABLE tbl2 (
  f1 varchar(30) primary key,
  f2 text,
  f3 real
)
sqlite> .schema tbl2
CREATE TABLE tbl2 (
  f1 varchar(30) primary key,
  f2 text,
  f3 real
)
sqlite>

The ".schema" command accomplishes the same thing as setting list mode, then entering the following query:

SELECT sql FROM 
   (SELECT * FROM sqlite_master UNION ALL
    SELECT * FROM sqlite_temp_master)
WHERE type!='meta'
ORDER BY tbl_name, type DESC, name

Or, if you give an argument to ".schema" because you only want the schema for a single table, the query looks like this:

SELECT sql FROM
   (SELECT * FROM sqlite_master UNION ALL
    SELECT * FROM sqlite_temp_master)
WHERE type!='meta' AND sql NOT NULL AND name NOT LIKE 'sqlite_%'
ORDER BY substr(type,2,1), name

You can supply an argument to the .schema command. If you do, the query looks like this:

SELECT sql FROM
   (SELECT * FROM sqlite_master UNION ALL
    SELECT * FROM sqlite_temp_master)
WHERE tbl_name LIKE '%s'
  AND type!='meta' AND sql NOT NULL AND name NOT LIKE 'sqlite_%'
ORDER BY substr(type,2,1), name

The "%s" in the query is replace by your argument. This allows you to view the schema for some subset of the database.

sqlite> .schema %abc%

Along these same lines, the ".table" command also accepts a pattern as its first argument. If you give an argument to the .table command, a "%" is both appended and prepended and a LIKE clause is added to the query. This allows you to list only those tables that match a particular pattern.

The ".databases" command shows a list of all databases open in the current connection. There will always be at least 2. The first one is "main", the original database opened. The second is "temp", the database used for temporary tables. There may be additional databases listed for databases attached using the ATTACH statement. The first output column is the name the database is attached with, and the second column is the filename of the external file.

sqlite> .databases

Converting An Entire Database To An ASCII Text File

Use the ".dump" command to convert the entire contents of a database into a single ASCII text file. This file can be converted back into a database by piping it back into sqlite3.

A good way to make an archival copy of a database is this:

$ echo '.dump' | sqlite3 ex1 | gzip -c >ex1.dump.gz

This generates a file named ex1.dump.gz that contains everything you need to reconstruct the database at a later time, or on another machine. To reconstruct the database, just type:

$ zcat ex1.dump.gz | sqlite3 ex2

The text format is pure SQL so you can also use the .dump command to export an SQLite database into other popular SQL database engines. Like this:

$ createdb ex2
$ sqlite3 ex1 .dump | psql ex2

Other Dot Commands

The ".explain" dot command can be used to set the output mode to "column" and to set the column widths to values that are reasonable for looking at the output of an EXPLAIN command. The EXPLAIN command is an SQLite-specific SQL extension that is useful for debugging. If any regular SQL is prefaced by EXPLAIN, then the SQL command is parsed and analyzed but is not executed. Instead, the sequence of virtual machine instructions that would have been used to execute the SQL command are returned like a query result. For example:

sqlite> .explain
sqlite> explain delete from tbl1 where two<20;
addr  opcode        p1     p2     p3          
----  ------------  -----  -----  -------------------------------------   
0     ListOpen      0      0                  
1     Open          0      1      tbl1        
2     Next          0      9                  
3     Field         0      1                  
4     Integer       20     0                  
5     Ge            0      2                  
6     Key           0      0                  
7     ListWrite     0      0                  
8     Goto          0      2                  
9     Noop          0      0                  
10    ListRewind    0      0                  
11    ListRead      0      14                 
12    Delete        0      0                  
13    Goto          0      11                 
14    ListClose     0      0

The ".timeout" command sets the amount of time that the sqlite3 program will wait for locks to clear on files it is trying to access before returning an error. The default value of the timeout is zero so that an error is returned immediately if any needed database table or index is locked.

And finally, we mention the ".exit" command which causes the sqlite3 program to exit.

Using sqlite3 in a shell script

One way to use sqlite3 in a shell script is to use "echo" or "cat" to generate a sequence of commands in a file, then invoke sqlite3 while redirecting input from the generated command file. This works fine and is appropriate in many circumstances. But as an added convenience, sqlite3 allows a single SQL command to be entered on the command line as a second argument after the database name. When the sqlite3 program is launched with two arguments, the second argument is passed to the SQLite library for processing, the query results are printed on standard output in list mode, and the program exits. This mechanism is designed to make sqlite3 easy to use in conjunction with programs like "awk". For example:

$ sqlite3 ex1 'select * from tbl1' |
>  awk '{printf "<tr><td>%s<td>%s\n",$1,$2 }'
<tr><td>hello<td>10
<tr><td>goodbye<td>20
$

Ending shell commands

SQLite commands are normally terminated by a semicolon. In the shell you can also use the word "GO" (case-insensitive) or a slash character "/" on a line by itself to end a command. These are used by SQL Server and Oracle, respectively. These won't work in sqlite3_exec(), because the shell translates these into a semicolon before passing them to that function.

Compiling the sqlite3 program from sources

The source code to the sqlite3 command line interface is in a single file named "shell.c" which you can download from the SQLite website. Compile this file (together with the sqlite3 library source code to generate the executable. For example:

gcc -o sqlite3 shell.c sqlite3.c -ldl -lpthread

'프로그래밍 > DB' 카테고리의 다른 글

[oracle] SELECT 를 사용한 UPDATE 3  (0) 2010.09.14
[oracle] select 문을 이용한 update 2  (0) 2010.08.16
[SQLite] Quick Start  (1) 2010.05.24
[oracle] 쿼리 결과를 파일로 출력하기  (0) 2010.05.20
[oracle] ' 포함한 쿼리  (0) 2010.04.09

[SQLite] Quick Start

프로그래밍/DB 2010. 5. 24. 16:41 Posted by galad

http://www.sqlite.org/quickstart.html

Here is what you do to start experimenting with SQLite without having to do a lot of tedious reading and configuration:

Download The Code
Get a copy of the prebuilt binaries for your machine, or get a copy of the sources and compile them yourself. Visit the download page for more information.

Create A New Database
At a shell or DOS prompt, enter: "sqlite3 test.db". This will create a new database named "test.db". (You can use a different name if you like.)
Enter SQL commands at the prompt to create and populate the new database.
Additional documentation is available here

Write Programs That Use SQLite
Below is a simple TCL program that demonstrates how to use the TCL interface to SQLite. The program executes the SQL statements given as the second argument on the database defined by the first argument. The commands to watch for are the sqlite3 command on line 7 which opens an SQLite database and creates a new TCL command named "db" to access that database, the invocation of the db command on line 8 to execute SQL commands against the database, and the closing of the database connection on the last line of the script.

#!/usr/bin/tclsh
if {$argc!=2} {
  puts stderr "Usage: %s DATABASE SQL-STATEMENT"
  exit 1
}
load /usr/lib/tclsqlite3.so Sqlite3
sqlite3 db [lindex $argv 0]
db eval [lindex $argv 1] x {
  foreach v $x(*) {
    puts "$v = $x($v)"
  }
  puts ""
}
db close

Below is a simple C program that demonstrates how to use the C/C++ interface to SQLite. The name of a database is given by the first argument and the second argument is one or more SQL statements to execute against the database. The function calls to pay attention to here are the call to sqlite3_open() on line 22 which opens the database, sqlite3_exec() on line 27 that executes SQL commands against the database, and sqlite3_close() on line 31 that closes the database connection.

See also the Introduction To The SQLite C/C++ Interface for an introductory overview and roadmap to the dozens of SQLite interface functions.

#include <stdio.h>
#include <sqlite3.h>

static int callback(void *NotUsed, int argc, char **argv, char **azColName){
  int i;
  for(i=0; i<argc; i++){
    printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
  }
  printf("\n");
  return 0;
}

int main(int argc, char **argv){
  sqlite3 *db;
  char *zErrMsg = 0;
  int rc;

  if( argc!=3 ){
    fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
    exit(1);
  }
  rc = sqlite3_open(argv[1], &db);
  if( rc ){
    fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
    sqlite3_close(db);
    exit(1);
  }
  rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
  if( rc!=SQLITE_OK ){
    fprintf(stderr, "SQL error: %s\n", zErrMsg);
    sqlite3_free(zErrMsg);
  }
  sqlite3_close(db);
  return 0;
}



[script] 정규식

프로그래밍/Web 2010. 5. 20. 16:48 Posted by galad
http://kio.zc.bz/Lecture/regexp.html#chap03


1. 정규식이란?

String의 검색,치환,추출을 위한 패턴.
언어별 사용법은 대동소이함.
패턴예>전화번호 형식, 이메일 형식 등.
2. 정규식 만들기

Javascript
var regexp = /pattern/[flags] ;
var test = regexp.test(to be checked)
var regexp = new RegExp("pattern"[, "flags"]);
var test = regexp.test(to be checked)
flags for javascript
g : global match, 일반적으로 패턴이 1번만 발견되면 찾기를 종료하지만, g flag가 있으면, 문자열 내에서 모든 패턴을 찾는다.
i : ignore case, 대소문자를 고려하지 않고 체크한다.[a-z]와 [A-Z]는 같은 표현이 된다.
m : match over multiple lines, 여러 줄에 걸쳐 체크를 한다.
Java
java.util.regex package
Pattern p = Pattern.compile("pattern");
Matcher m = p.matcher("string to be checked");
boolean b = m.matches();
boolean b = Pattern.matches("pattern", "string to be checked");
3. 정규식 표현법

*ⓥ는 valid, ⓘ는 invalid
*두꺼운 글씨체는 매칭되는 부분.
*예제는 javascript 기준이며, 언어에 따라 다소 차이가 발생할 수 있다.
문자    용도    예제
\   
특수문자를 의미
특수문자의 사용을 제외(특수문자 앞에서)
b는 b라는 글자를 의미 하지만 \b는 단어 경계를 의미
*은 0번이상 반복이라는 의미이지만, \*는 *이라는 글자를 의미.
^    문자열의 시작. []안에서는 not의 의미
* ^A는 "A로 시작"이라기 보다는 "시작 직후에 A가 나온다"는 의미로 해석하는 것이 좋다. 즉, 시작과 끝과 같은 빈 공간을 하나의 문자로 간주하는 것이 좋다.    /^A/g
A stringⓥ
an Aⓘ
/[^A]/g
A stringⓥ
an Aⓘ
$    문자열의 마지막
/t$/
eatⓥ
GREATⓘ
*    0번 이상 반복    /ab*d/g
adⓥ
abdⓥ
abdcdeabbbbdedbⓥ
abⓘ
axdⓘ
+    1번 이상 반복 ( = {1,} )    /ab+d/g
adⓘ
abdⓥ
abdcdeabbbbdedbⓥ
abⓘ
axdⓘ
?    0번 이나 1번    /e?le?/g
angelⓥ
angleⓥ
elementⓥ
/abc\-?d/g
abc-dⓥ
abcdⓥ
.    new line 을 제외한 모든 글자    /.n/g
nay, an apple is on the treeⓥ
nayⓘ
(x)    x를 체크하고 체크한 값을 변수로 저장    /(f..) (b..)/
foo barⓥ
1th :foo
2th :bar
(?:x)    x를 체크하고 체크한 값을 변수로 저장하지 않음    /(?:f..) (b..)/
foo barⓥ
1th :bar
bar fooⓘ
x|y    x 또는 y    /green|red/
green appleⓥ
red appleⓥ
yellow appleⓘ
x(?=y)    x후에 y가 나오고, x부분만 매칭되는 부분으로 간주    /blah(?=soft|hard)/
blahsoftⓥ
blahhardⓥ
blah softⓘ
/blah(?=soft).*/
blahsoftⓥ
blahhardⓘ
blah softⓘ
x(?!y)    x가 나오고 그 뒤에 y가 있으면 안 됨    /blah(?!hard)/
blahsoftⓥ
blahhardⓘ
blah softⓥ
{n}    앞에 지정한 것이 n개    /.{3}/
abⓘ
abcⓥ
abcdⓥ
홍길동ⓥ
{n,}    앞에 지정한 것이 n개 이상    /.{3,}/
abⓘ
abcⓥ
abcdⓥ
{n,m}    앞에 지정한 것이 n~m개    /.{3,5}/
abⓘ
abcⓥ
abcdⓥ
홍길동ⓥ
[xyz]    x나 y나 z. []안에는 얼마든지 쓸 수 있다.    /[abc]{2}/
abⓥ
abcⓥ
adbdⓘ
[x-z]    x에서 z까지    /[a-z]{4,}/g
She sells sea shells by the sea shore는 Very 어렵다!ⓥ
[^xyz]    x,y,z를 제외한 나머지 모든 것    /[^a-z]{2,}/g
I'm a good manⓥ
I am A good Manⓥ
[\b]    백스페이스. \b와 혼동하지 말것.    /[\b]/g
abcdⓥ
일반적인 String에서는 \b가 백스페이스를 의미한다.
\b    단어의 경계.[\b]와 혼동하지 말것.    /\bn[a-z]/g
I am not a boyⓥ
onlineⓘ
nopeⓥ
\B    \b 를 제외한 전부    /\Bn[a-z]/g
noondayⓥ
onlineⓥ
nopeⓘ
\cX    컨트롤X와 매칭. \cM은 컨트롤M과 매칭   
\d    숫자.[0-9]와 같음    /\d/g
7 eight 9ⓥ
123ⓘ
/^0[0-9]{2}/g
0120ⓥ
12011ⓘ
\D    \d 를 제외한 전부    /\D/g
7 eight 9ⓥ
12?3ⓘ
\f    form-feed   
\n    new line   
\r    carriage return   
\s    white space
ex>탭, 띄어쓰기, \n, \r    /k\s/g
koreaⓘ
blank isⓥ
blankⓘ
\S    \s 를 제외한 전부    /k\S/g
koreaⓥ
blank isⓘ
\t    탭   
\v    vertical tab   
\w    알파벳+숫자+_. [A-Za-z0-9_]와 동일    /\w/g
!@#$%^&*()+_-[]{}\|"':;,.<>?/ⓥ
        _가 <b>를 먹여도 별로 티가 안 난다.
\W    \w 빼고 전부    /\W/g
!@#$%^&*()+_-[]{}\|"':;,.<>?/ⓥ
\n    \n이 자연수일때, ()로 지정한 n번째 정규식    /(.{2})e tru\1 is out \1ere/
the truth is out there ...ⓥ
1th :th
(th)가 \1로 지정된다.
\xhh    hh는 hexacode,    /[\x21-\x40]/g
!@#$%^&*()poⓥ
Code table 보기
\uhhhh    hhhh는 hexacode,    /[\u3131-\u3163\uac00-\ud7a3]/g
나는 blah 직원입니다.ㅋㅋⓥ
코드 번호> 3131:ㄱ 3163:ㅣ ac00:가 d7a3:힣 (javascript, java)

4. 정규식 사용 예제

/^[0-9]/
09없다ⓥ
100점ⓥ
집이 10평ⓘ
/^\w+$/
blahsoftⓥ
blah(co)ⓘ
blah softⓘ
/^[a-zA-Z][\w\-]{4,11}$/
blah2010ⓥ
blah-2010!ⓘ
2010blahⓘ
ILikegoooooooooooooooooogleⓘ
/^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}/
02-6288-2114ⓥ
031-779-7114ⓥ
12-1234-5678ⓥ
02-6288-2114545ⓥ
02-0288-2114ⓥ
/^0\d{1,2}-[1-9]\d{2,3}-\d{4}$/
02-6288-2114ⓥ
031-779-7114ⓥ
12-1234-5678ⓘ
02-2123-12314545ⓘ
02-0288-2114ⓘ
/^[\.a-zA-Z0-9\-]+\.[a-zA-Z]{2,}/
r-d.blah.co.krⓥ
r-d.blah.co.kr입니다.ⓥ
blah..co.krⓥ
a.comⓥ
/^(?:[\w\-]{2,}\.)+[a-zA-Z]{2,}$/
r-d.blah.co.krⓥ
r-d.blah.co.kr입니다.ⓘ
blah..co.krⓘ
a.comⓘ
/^[_a-zA-Z0-9\-]+@[\._a-zA-Z0-9\-]+\.[a-zA-Z]{2,}/
abc@haha.co.krⓥ
abc@haha..co.krⓥ
hwang@a.comⓥ
/^[\w\-]+@(?:(?:[\w\-]{2,}\.)+[a-zA-Z]{2,})$/
abc@haha.co.krⓥ
abc@haha..co.krⓘ
hwang@a.comⓘ
/^([a-z]+):\/\/((?:[a-z\d\-]{2,}\.)+[a-z]{2,})(:\d{1,5})?(\/[^\?]*)?(\?.+)?$/i
http://www.blah.co.kr/main/index.jsp?var=valueⓥ
1th :http
2th :www.blah.co.kr
3th :undefined
4th :/main/index.jsp
5th :?var=value
http://www.blah.co.kr/main/index.jspⓥ
1th :http
2th :www.blah.co.kr
3th :undefined
4th :/main/index.jsp
5th :undefined
http://blah.co.kr/ⓥ
1th :http
2th :blah.co.kr
3th :undefined
4th :/
5th :undefined
http://blah.co.krⓥ
1th :http
2th :blah.co.kr
3th :undefined
4th :undefined
5th :undefined
http://blah.co.kr:8088/main/ⓥ
1th :http
2th :blah.co.kr
3th ::8088
4th :/main/
5th :undefined
/^[ㄱ-ㅣ가-힣]+$/
티맥스소프트ⓥ
ㅜㅜⓥ
ㅎㅎⓥ

5. Javascript 정규식 함수

함수    코드예제    코드설명
Array RegExp.exec (to be checked)   

var myRe=/d(b+)(d)/ig;
var myArray = myRe.exec("cdbBdbsbz");
/d(b+)(d)/gi

cdbBdbsbzⓥ
myArray.index =1 ; (처음으로 매칭되는 위치, 컴터가 늘 그렇듯 위치는 0번째부터 센다.)
myArray.input = cdbBdbsbz; (체크할 대상)
myArray[0] = dbBd;(검사에 통과한 부분)
myArray[1] = bB;(1번째 괄호에서 체크된 부분)
myArray[2] = d;(2번째 괄호에서 체크된 부분)

myRe.lastIndex =5 ; (다음번 체크를 하기위한 위치.)
myRe.ignoreCase = true; (/i 플래그 체크)
myRe.global = true; (/g 플래그 체크)
myRe.multiline = false; (/m 플래그 체크)

RegExp.$_ = cdbBdbsbz;(입력한 스트링)
RegExp.$1 = bB;(1번째 괄호에서 체크된 부분 )
boolean RegExp.test(to be checked)   

var myRe=/d(b+)(d)/ig;
var checked = myRe.test("cdbBdbsbz");
document.write("checked = " + checked +";<br>");
/d(b+)(d)/gi

cdbBdbsbzⓥ
실행결과: checked = true;
String RegExp.toString()   

var myRe=/d(b+)(d)/ig;
var str = myRe.toString();
document.write(str);
실행 결과: /d(b+)(d)/gi
String String.replace(pattern or string, to be replaced)   

var str = "abcdefe";
document.write(str.replace("e" , "f"));
실행 결과: abcdffe

e가 2번 있지만, 첫번째 인자가 정규식이 아니라 문자열일 경우는 첫번째 것만 바꾼다.

var str = "aba";
document.write(str.replace(/^a/ , "c"));
실행 결과: cba

var re = /(\w+)\s(\w+)/;
var str = "John Smith";
newstr = str.replace(re, "$2, $1");
document.write(newstr)
실행 결과: Smith, John

re에 의해서 찾아진 문자열 들은 re에서 ()로 표현된 순서대로 $1, $2와 같이 변수로 저장된다.

var re = /\s(?:http|https):\/\/\S*(?:\s|$)/g;
var str = "url is http://iilii.egloos.com/ !!\n";
str += "blah home: http://www.blah.co.kr";
newstr = str.replace(re, function (str,p1,offset,s) {
     return "<a href='" + str + "'>" + str + "</a>";
  }
).replace(/\n/, "<br>");
document.write(newstr);
url is http://iilii.egloos.com/ !!
blah home: http://www.blah.co.kr

str: 찾은 문자열
p1: ()에서 검색된 1번째 문자열. 마찬가지로 p2,p3 등도 가능
offset: str을 찾은 위치
s : 원본 문자열.
Array String.match(regular expression   

var str = "ABCdEFgHiJKL";
var myResult = str.match(/[a-z]/g );
for(var cnt = 0 ; cnt < myResult.length; cnt++){
    document.write(cnt +":" + myResult[cnt] +"<br>");
}

document.write("비교<br>");

var str = "ABCdEFgHiJKL";
var myResult = /[a-z]/g.exec(str);
for(var cnt = 0 ; cnt < myResult.length; cnt++){
    document.write(cnt +":" + myResult[cnt] +"<br>");
}
실행 결과:
0:d
1:g
2:i
비교
0:d

String.match(RegExp) =>g flag가 있어도 다 찾아낸다.
RegExp.exec(String) =>g flag가 있으면, 한 개만 찾고 끝낸다.
Array String.split([separator[, limit]])   

var str = "ABCdEFgHiJKL";
var myResult = str.split(/[a-z]/g , 3);
for(var cnt = 0 ; cnt < myResult.length; cnt++){
    document.write(cnt +":" + myResult[cnt] +"<br>");
}
실행 결과:
0:ABC
1:EF
2:H

주어진 문자열을 separator를 기준으로 limit 만큼 자른다.
6. 정규식으로 만든 유용한 Javascript 함수

String removeTags(input)

HTML tag부분을 없애준다

function removeTags(input) {
    return input.replace(/<[^>]+>/g, "");
};
example>

var str = "<b>blah</b> <i>soft</i>";
document.write(str +"<br>");
document.write(removeTags(str));
result>
blah soft
blah soft
String String.trim()

문자열의 앞뒤 공백을 없애준다.

String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, '');
};
example>

var str = "         untrimed string            ";
document.write("========" + str+ "==============<br>");
document.write("========" + str.trim() + "==============");
result>
======== untrimed string ==============
========untrimed string==============
String String.capitalize()

단어의 첫 글자를 대문자로 바꿔준다.

String.prototype.capitalize = function() {
    return this.replace(/\b([a-z])/g, function($1){
        return $1.toUpperCase();
    }) ; 
};
example>

var str = "korea first world best";
document.write(str.capitalize());
result>
Korea First World Best
String number_format(input)

입력된 숫자를 ,를 찍은 형태로 돌려준다

function number_format(input){
    var input = String(input);
    var reg = /(\-?\d+)(\d{3})($|\.\d+)/;
    if(reg.test(input)){
        return input.replace(reg, function(str, p1,p2,p3){
                return number_format(p1) + "," + p2 + "" + p3;
            }   
        );
    }else{
        return input;
    }
}
example>

document.write(number_format(1234562.12) + "<br>");
document.write(number_format("-9876543.21987")+ "<br>");
document.write(number_format("-123456789.12")+ "<br>");
result>
1,234,562.12
-9,876,543.21987
-123,456,789.12
7. Java 정규식 함수

 Pattern p = Pattern.compile("(a*)(b)");
Matcher m = p.matcher("aaaaab");
if (m.matches()) {
    for (int i = 0; i < m.groupCount() + 1; i++) {
        System.out.println(i + ":" + m.group(i));
    }
} else {
    System.out.println("not match!");
}

result>
0:aaaaab
1:aaaaa
2:b
0번째는 매칭된 부분.
String a = "I love her";
System.out.println(a.replaceAll("([A-Z])", "\"$1\""));

result>
"I" love her
자바도 $1을 쓸 수 있다.
Pattern p = Pattern.compile("cat");
Matcher m = p.matcher("one cat two cats in the yard");
StringBuffer sb = new StringBuffer();
while (m.find()) {
    m.appendReplacement(sb, "dog");
    System.out.println(sb.toString());
}
m.appendTail(sb);
System.out.println(sb.toString());

result>
one dog
one dog two dog
one dog two dogs in the yard

http://zmzm.tistory.com/302


sqlplus 에서 아래와 같은 방식으로 처리한다.

set echo off
set null @
set pages 0
set colsep ','
set trimspool on
set linesize 30000
set termout off

spool 파일명.csv;

select * from tablename ;

spool off;

ps. 근데 컬럼사이즈만큼 공백 생기는 건 어떻게 처리 안되나???

'프로그래밍 > DB' 카테고리의 다른 글

[SQLite] Command Line Shell For SQLite  (0) 2010.05.24
[SQLite] Quick Start  (1) 2010.05.24
[oracle] ' 포함한 쿼리  (0) 2010.04.09
[oracle] select 문을 이용한 update  (0) 2010.03.08
[oracle] 제약조건 확인하기  (0) 2010.02.25

[script] 소수점 자리수

프로그래밍/Web 2010. 5. 20. 10:19 Posted by galad
http://www.w3schools.com/jsref/jsref_tofixed.asp

var num = new Number(13.3714);
document.write(num.toFixed()+"<br />");
document.write(num.toFixed(1)+"<br />");
document.write(num.toFixed(3)+"<br />");
document.write(num.toFixed(10));

>>
13
13.4
13.371
13.3714000000


소수점 자리수
천단위 콤마

double s = files[i].length();
s = s / 1024 / 1024;
DecimalFormat df = new DecimalFormat("###.##");
String size = df.format(s) + "MB"; // 사이즈

###.## 에서 정수부분 #의 개수는 출력에 영향을 미치지 않음.
3개만 있어도 4자리 이상도 출력됨.

public static void main(String[] args) {
    NumberFormat nf = NumberFormat.getNumberInstance();
    System.out.println(nf.format(2500000));
    System.out.println(nf.format(2500000.23));
    
    NumberFormat pf = NumberFormat.getPercentInstance();
    System.out.println(pf.format(1));
    System.out.println(pf.format(0.25));
    System.out.println(pf.format(0.2535)); 
}

>>>
2,500,000
2,500,000.23
100%
25%
25%



'프로그래밍 > Java' 카테고리의 다른 글

[java] byte 단위로 문자열 잘라내기  (1) 2010.08.06
[java] 이미지 리사이즈  (0) 2010.07.23
[java] Convert Milliseconds to Date  (0) 2010.03.15
[java] invoke  (0) 2010.03.09
[java] getClass, getMethod, invoke  (0) 2010.01.22
var m_browser;
var m_version;

function detectBrowser() { // jQuery로 브라우저 타입/버젼 확인
    if($.browser.msie) {
        m_browser = "msie";
    }
    else if($.browser.safari) {
        m_browser = "safari";
    }
    else if($.browser.opera) {
        m_browser = "opera";
    }
    else if($.browser.mozilla) {
        m_browser = "mozilla";
    }

    m_version = $.browser.version;

    //alert(m_browser + " " + m_version);
}

function setElAttribute(el, attrName, attr) {

    if(attrName == "style") {

        // this.setAttribute("style", "background-color:yellow; font-weight:bolder;");
        // IE6 DOESN'T WORK! Use this.style.setAttribute("cssText", "STYLE");
        if(m_browser.indexOf("msie") == 0 && (m_version.indexOf("6.0") == 0 || m_version.indexOf("7.0") == 0)) {
            el.style.setAttribute("cssText", attr);
        }
        else {
            el.setAttribute("style", attr);
        }
    }
    else {
        el.setAttribute(attrName, attr);
    }
}

6.0만 style.setAttribute 하면 될 줄 알았는데, 7.0도 해야하더라....

'프로그래밍 > Web' 카테고리의 다른 글

[script] 정규식  (0) 2010.05.20
[script] 소수점 자리수  (0) 2010.05.20
[html] shortcut icon 붙이기  (0) 2010.04.15
[html] X-UA-Compatible: IE=EmulateIE7  (0) 2010.04.09
[javascript] 전화번호 형식으로 바꾸기  (0) 2010.03.08

[설치] Hello, World!

프로그래밍/Android 2010. 5. 11. 16:06 Posted by galad
http://developer.android.com/sdk/installing.html

1. eclipse 받기
  3.4 이상 버젼 필요.
  Java 또는 RCP 버젼이 추천됨. 3.5 버젼인 경우엔 eclipse classic 추천.

2. Android SDK 받기
  받아서 설치하기. SDK Setup 실행해서 최신으로 업데이트함.
  환경변수 설정은 필요하면 하기.

3. ADT(Android Development Tool) plugin for eclipse 설치
  링크 참조

4. Adding Android Platforms and Other Components
  SDK Setup 실행해서 원하는 컴포넌트를 선택해서 업데이트 하기
  컴포넌트에 대한 설명은 링크 참조

5. SDK 둘러보기
  링크 참조

-> Hello World~로

'프로그래밍 > Android' 카테고리의 다른 글

[Hello,Android] 익명의 내부 클래스  (0) 2010.08.17
[Hello,Android] WebView 사용 시  (1) 2010.08.16
[Hello,Android] 기본팁  (0) 2010.06.08
[Hello,Android] Activity Lifecycle  (0) 2010.06.07
[설치] Hello, World!  (0) 2010.05.11

[unix] ftp 사용법

프로그래밍/Server 2010. 4. 21. 01:53 Posted by galad
http://user.chol.com/~wjkim43/cpjb/unixtelnetftp.htm

나. FTP 접속

 유닉스에서 파일을 공유하기 위한 명령어인 FTP(File Transfer Protocol)는 접속하려는 컴퓨터에 원격접속을 하여 파일을 복사한다. FTP를 사용하기 위해서는 몇 가지 필요한 것이 있다.
 접속하려는 컴퓨터의 사용권 즉 ID가 있어야 한다.
 파일을 복사하거나 복사해 넣으려는 컴퓨터의 파일시스템 IP 어드레스, 혹은 도메인명(DNS)을 알아야 한다.

 (1) FTP 실행
 FTP명령을 실행하는 것은 아주 간단하다.
 ftp[ip Address]  혹은, ftp[도메인명]
 예를 들어, ftp 203.255.208.22라고 입력하면 해당 IP 주소의 컴퓨터에 접속하게 된다. 또한  ftp sunsite.snu.ac.kr라고 입력하면 서울대학교의 SUN 사이트의 ftp 서버에 접속하게 된다.
 또한 위와 같이 IP주소와 도메인명을 적지 않고 단순히 ftp만을 실행하고 ftp프롬프트 상에서 명령어를 사용하여 접속할 수 있다.
 ftp
ftp>open sunsit.snu.ac.kr

(2) FTP 명령어
 ㉮ prompt
 mget이나 mput 명령으로 파일을 전송하고 받으려 할 때 파일마다 전송을 할 것인지를 묻고 사용자가 'y'를 입력해야만 파일을 전송하는데, prompt명령을 사용하면 이러한 과정이 없이 무조건 파일을 전송한다.

 ㉯ bye, quit
 ftp 접속을 끊고 프로그램을 종료한다.

 ㉰ close, disconnect
 ftp접속을 해제한다.

 ㉱ cd
 디렉토리를 바꾼다. 유닉스와 도스의 cd 명령과 같다.

 ㉲ ls
 파일의 리스트를 보여준다. 유닉스의 명령어인 ls 와 같다.

 ㉳ lcd
 로컬 디스크의 디렉토리를 바꾼다. 즉, 현재 사용중인 컴퓨터 내부의 하드디스크의 디렉토리를 변경한다.
 !
 쉘 프롬프트로 잠시 빠져 나간다. 대부분의 도스 응용프로그램의 기능 중 하나인 도스쉘과 같은 기능이다. 다시 FTP로 들어가려면 exit를 입력한다.

 ㉴ delete[remote file]
 리모트 접속한 컴퓨터의 파일을 삭제한다.

 ㉵ mdelete[remote file]
 리모트 접속한 컴퓨터의 파일을 한꺼번에 삭제한다.

 ㉶ bin
 ftp를 통해 전달되는 데이터의 형태는 ascii형태이다. 즉, 7비트로 데이터가 전송되는데, 일반 텍스트 이외의 파일은 대부분이 바이너리 파일로 8비트로 데이터를 전송해야 한다. 그래서 바이너리 형태의 데이터를 받으려면 bin 명령을 실행해야 한다.

 ㉷ ascii
 데이터의 전송을 바이너리에서 아스키형태로 변환한다.

 ㉸ hash on
 데이터의 전송상태를 보여준다. hash명령을 사용하지 않으면 데이터가 현재 얼마나 전송되고 있는지 알 수 없다. hash명령을 실행하고 데이터를 받거나 전송하면  # 이 증가하게 되어 전송되고 있는 상황을 보여준다.

 ㉹ get
 파일을 다운로드 받는 명령이다. get명령은 선택한 하나의 파일만을 다운 받는다.

 ㉺ mget
 파일을 여러 개를 동시에 다운 받을 때 사용하는 명령이다. get명령은 한 번에 하나의 파일만을 받을 수 있으나 m(multi)get명령은 와일드카드 즉 * 와 ~를 파일을 선택할 때 사용할 수 있어서 여러 개의 파일을 받을 수 있다.

 ㉻ put/mput
 put은 파일을 업로드하는 명령이다. 한 번에 하나의 파일만을 업로드한다. 현재 자신의 디스크의 파일을 원격 접속한 컴퓨터의 하드디스크에 파일을 복사한다. mput은 한꺼번에 여러 개의 파일을 업로드하는 명령이다. mget과 마찬가지로 와일드카드를 사용하여 파일을 업로드한다.

[json] org.json.* 사용하기

프로그래밍/ETC 2010. 4. 20. 16:05 Posted by galad
public void testJson() {
        try {
            JSONStringer test1 = new JSONStringer();
            test1
                .object()
                    .key("key")
                    .value("value")
                .endObject();
           
            System.out.println(test1.toString());
           
            JSONStringer test2 = new JSONStringer();
            test2
                .array() // array 시작 [
                    .object() // object 시작 {
                        .key("key")
                        .value("value")
                        .key("key2")
                        .value("value2")
                    .endObject() // object 끝 }
                    .object()
                        .key("2key")
                        .value("2value")
                    .endObject()
                .endArray(); // array 끝 ]
           
            System.out.println(test2.toString());
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }

결과는
{"key":"value"}
[{"key":"value","key2":"value2"},{"2key":"2value"}]


[html] shortcut icon 붙이기

프로그래밍/Web 2010. 4. 15. 14:10 Posted by galad
http://msdn.microsoft.com/en-us/library/ms537656(VS.85).aspx

<head>
<link rel="SHORTCUT ICON" href="http://www.mydomain.com/myicon.ico"/>
<title>My Title</title>
</head>

[apple] iAd...

Apple 2010. 4. 13. 12:59 Posted by galad
http://jsksoft2.tistory.com/335

애플의 진정한 강점은 에코 시스템 형성에 있는 듯.
단순히 소비자가 원하는, 소비자에게 어필할 수 있는 기기를 만드는 것만이 아닌,
하나의 새로운 시장을 형성해 내는 능력이 대단함...

사실 아이폰 앱도 이제는 어느 정도 포화상태인데(앱이 거의 20만개 ㅡ.ㅡ;;)
거기에 iAd라는 광고를 이용한 새로운 수익모델을 제시함으로서
더 많은 개발자들과 콘텐츠 제공자들을 끌어들이는게 가능해질 듯...
(나도 어여 해야지... 쩝..)

무료 어플로도 충분히 수익을 낼 수 있다는게 확실해지면
이미 많이 늦었지만 뛰어들 필요가 있을 듯...

광고 시장이라는게 상당한 파괴력이 있는 듯하다.
하긴 구글이 지금처럼 커지게 된 것이 광고 시장 덕분이지만서도
새삼스럽다...

'Apple' 카테고리의 다른 글

[Mac] spotlight와 eclipse 자동완성 충돌  (0) 2010.11.14
[Mac] home, end key  (0) 2010.11.14
[hackintosh] dell m1210 에 10.6.2 hazard 설치  (0) 2010.01.31
[Mac] 멀티부팅 - boot think  (0) 2010.01.29
영감을 불어넣는 무언가  (0) 2010.01.15

[oracle] ' 포함한 쿼리

프로그래밍/DB 2010. 4. 9. 18:05 Posted by galad
SELECT COUNT(*) FROM PRODUCT_INFO WHERE PRODUCT_NAME LIKE '%''%' AND PRODUCT_ID LIKE 'H%'

'' 으로 '을 2개 넣으면 된다..

http://www.oracleclub.com/article/32632

'프로그래밍 > DB' 카테고리의 다른 글

[SQLite] Quick Start  (1) 2010.05.24
[oracle] 쿼리 결과를 파일로 출력하기  (0) 2010.05.20
[oracle] select 문을 이용한 update  (0) 2010.03.08
[oracle] 제약조건 확인하기  (0) 2010.02.25
[Toad] tab 간격 조정하기  (0) 2010.02.02
http://msdn.microsoft.com/ko-kr/library/cc817570.aspx

작업 중에 개발서버에서는 IE8에서 style이 제대로 먹는데, 스테이징서버에서는 안되는 현상이 발생.
도저히 원인을 알 수 없어서 httpWatch로 stream을 잡아보니,

스테이징에서는 헤더가
HTTP/1.1 200 OK
Date: Fri, 09 Apr 2010 06:58:34 GMT
Server: Apache
Content-Length: 6990
X-UA-Compatible: IE=EmulateIE7
P3P: CP='ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI'
Keep-Alive: timeout=10, max=2000
Connection: Keep-Alive
Content-Type: text/html;charset=UTF-8
이렇게 오는 것을 확인.

다른 건 제쳐두고 IE=EmulateIE7으로 오는게 아무래도 이상해서 구글링해보니 역시나...(위 링크 참고)
Windows Internet Explorer 7에서 올바르게 동작하는 기존 웹 페이지를 유지 관리하고 있으며, 최소한의 수정만으로 Windows Internet Explorer 8에서 동작하도록 이 웹 페이지를 업데이트해야 하는 경우

다음 헤더를 보내도록 서버를 구성합니다.

X-UA-Compatible: IE=EmulateIE7


X-UA-Compatible: IE=EmulateIE7 은 결국, IE8에서 IE7처럼 보여주게 하겠다는 뜻.
이러니 IE8에서 제대로 안 보여지는 스타일이 생기지...

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=8"/>

메타 추가하니 잘 되더라...

원래는 서버 설정을 변경해야겠으나, 일단 디자인 깨지는 게 이 페이지 하나라서 이걸로 땜빵했음.

http://loved.pe.kr/entry/MS-%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80-%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%88%B4-Expression-Web-SuperPreview

MS 브라우저 테스트 툴이란다...

http://blogs.msdn.com/xweb/default.aspx

ps. 덴장. 깔려있는 브라우져에 대해서만 테스트 가능한 거군..


http://www.my-debugbar.com/wiki/IETester/HomePage
이건 될려나... IE8이 깔려있어야 하긴 마찬가지인듯...

'프로그래밍 > Library' 카테고리의 다른 글

[ftp] FTP/SFTP/FTPS 의 차이점  (0) 2010.10.18
[eclipse] plug-ins  (0) 2010.08.17
[program] 프로파일러  (0) 2009.12.03
[Eclipse] Aptana Studio  (0) 2009.11.30
[Eclipse] 형상관리 plug-in  (0) 2009.11.30

[java] Convert Milliseconds to Date

프로그래밍/Java 2010. 3. 15. 19:13 Posted by galad
http://www.roseindia.net/java/java-conversion/MillisecondToDate.shtml


long yourmilliseconds = 1119193190;
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm");
Date resultdate = new Date(yourmilliseconds);
System.out.println(sdf.format(resultdate));

'프로그래밍 > Java' 카테고리의 다른 글

[java] 이미지 리사이즈  (0) 2010.07.23
[java] 소수점 자리수 / 천단위 콤마  (0) 2010.05.18
[java] invoke  (0) 2010.03.09
[java] getClass, getMethod, invoke  (0) 2010.01.22
[java] Pattern / Matcher  (0) 2010.01.22

[java] invoke

프로그래밍/Java 2010. 3. 9. 11:01 Posted by galad
String metaField = ProductConstant.FIELD_NAME_FOR_HD_DRM;
Class[] cParam = new Class[]{String.class}; // 메소드 얻을 때 사용할 파라미터 타입. 메소드명, 파라미터갯수 및 종류로 해당 메소드를 찾는다
Object[] oParam = new Object[]{hdProductDrmYn}; // 실제 invoke 시 사용할 파라미터값

Class cls = pi.getClass(); // 메소드를 invoke할 클래스

// 메소드 얻기 getMethod(메소드명, 파라미터타입) : get 메소드면 파라미터 필요없음
Method cMtd = cls.getMethod("set" + metaField.substring(0, 1).toUpperCase() + metaField.substring(1), cParam);

// invoke(invoke할 객체, 파라미터)
cMtd.invoke(pi, oParam);

'프로그래밍 > Java' 카테고리의 다른 글

[java] 소수점 자리수 / 천단위 콤마  (0) 2010.05.18
[java] Convert Milliseconds to Date  (0) 2010.03.15
[java] getClass, getMethod, invoke  (0) 2010.01.22
[java] Pattern / Matcher  (0) 2010.01.22
[java] 파일 관련  (0) 2010.01.07
/**
 * 전화번호 형식으로 바꾸기
 * 예)     02282342232 -> 02-8234-2232
 *         0312437845    -> 031-124-7845
 *         01071050616    -> 010-7105-0616
 * @param num
 * @return
 */
function phone_format(num){
    return num.replace(/(^02.{0}|^01.{1}|[0-9]{3})([0-9]+)([0-9]{4})/,"$1-$2-$3");
}

'프로그래밍 > Web' 카테고리의 다른 글

[html] shortcut icon 붙이기  (0) 2010.04.15
[html] X-UA-Compatible: IE=EmulateIE7  (0) 2010.04.09
[javascript] DOM 스크립트  (0) 2010.01.15
[jstl] jstl 사용하기  (0) 2010.01.08
[jsp] jstl 설명  (0) 2010.01.08
UPDATE TBL_US_MEMBER
SET
OP_HP_NO = (SELECT REPLACE(OP_HP_NO, '-', '') FROM TBL_US_MEMBER A WHERE TBL_US_MEMBER.MBR_NO = A.MBR_NO)
WHERE MBR_CAT_CD = 'US000207'

'프로그래밍 > DB' 카테고리의 다른 글

[oracle] 쿼리 결과를 파일로 출력하기  (0) 2010.05.20
[oracle] ' 포함한 쿼리  (0) 2010.04.09
[oracle] 제약조건 확인하기  (0) 2010.02.25
[Toad] tab 간격 조정하기  (0) 2010.02.02
[ORACLE] 특수문자 입력  (0) 2009.10.21