AndroidManifest.xml 액티비티 등록

<activity android:name=".Sub1Activity">

</activity>

activity_main.xml 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="org.androidtown.a2_3.MainActivity">

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">

<EditText
android:id="@+id/id"
android:layout_width="120dp"
android:layout_height="50dp" />
<EditText
android:id="@+id/pw"
android:layout_width="120dp"
android:layout_height="50dp" />
</LinearLayout>
<Button
android:id="@+id/login"
android:layout_width="80dp"
android:layout_height="100dp"
android:onClick="login_onClick"
android:text="로그인"/>

</LinearLayout>

activity_sub.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent">

<Button
android:id="@+id/customer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="고객 관리"
android:onClick="Custom_onClick"/>

<Button
android:id="@+id/maechul"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="매출 관리"
android:onClick="Maechul_onClick"/>

<Button
android:id="@+id/goods"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="상품 관리"
android:onClick="Goods_onClick"/>

</LinearLayout>

MainActivity.java


package org.androidtown.a2_3;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

public void login_onClick(View view){
Intent intent = new Intent(getApplicationContext(), Sub1Activity.class);
startActivityForResult(intent, 100);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 100 && resultCode == RESULT_OK){
Toast.makeText(getApplicationContext(), data.getStringExtra("result"), Toast.LENGTH_LONG).show();
}
}
}

Sub1Activity.java


package org.androidtown.a2_3;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class Sub1Activity extends MainActivity{

Intent intent = new Intent();

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_sub);
}

public void Custom_onClick(View v){
intent.putExtra("result", "고객 관리 클릭함");
setResult(RESULT_OK, intent);
finish();
}

public void Maechul_onClick(View v){
intent.putExtra("result", "고객 관리 클릭함");
setResult(RESULT_OK, intent);
finish();
}

public void Goods_onClick(View v){
intent.putExtra("result", "고객 관리 클릭함");
setResult(RESULT_OK, intent);
finish();
}


}


activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="org.androidtown.a2_2.MainActivity">

<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/bytenumber"
android:layout_alignParentTop="true"
android:layout_margin="15dp"
android:background="#88000000"
android:gravity="left|top"
android:textSize="25dp" />

<TextView
android:id="@+id/bytenumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/btgroup"
android:layout_gravity="right"
android:layout_marginTop="10dp"
android:gravity="right"
android:textSize="18dp"/>

<LinearLayout
android:id="@+id/btgroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:orientation="horizontal" >

<Button
android:id="@+id/send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="전송"/>

<Button
android:id="@+id/exit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="닫기" />

</LinearLayout>
</RelativeLayout>




MainActivity.java

package org.androidtown.a2_2;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.UnsupportedEncodingException;

public class MainActivity extends AppCompatActivity {

private final int LIMIT = 80;
private EditText editText;
private TextView byteLabel;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

editText = (EditText)findViewById(R.id.editText);
byteLabel = (TextView)findViewById(R.id.bytenumber);
Button send = (Button)findViewById(R.id.send);
Button exit = (Button)findViewById(R.id.exit);

editText.addTextChangedListener(new TextWatcher(){
String beforeText;

@Override
public void beforeTextChanged(CharSequence charSequence, int start, int count, int after){
beforeText = charSequence.toString();
}

@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count){

}

@Override

public void afterTextChanged(Editable editable){
int length = showBytes();
if(length > LIMIT)
editText.setText(beforeText);
}

});

send.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
Toast.makeText(getApplicationContext(), "전송되었습니다.", Toast.LENGTH_LONG).show();
}
});

exit.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
MainActivity.this.finish();
}
});
showBytes();
}
private int showBytes(){
try{
int length = editText.getText().toString().getBytes("EUC-KR").length;
byteLabel.setText(length + " / 80 바이트");
return length;
}catch(UnsupportedEncodingException e){
e.printStackTrace();
}
return -1;
}
}


activity_main.xml


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView
android:id="@+id/topImage"
android:layout_width="match_parent"
android:layout_height="200dp"
android:src="@drawable/rock"
android:layout_alignParentTop="true"
/>
<ImageView
android:id="@+id/bottomImage"
android:layout_width="match_parent"
android:layout_height="200dp"
android:src="@drawable/paper"
android:layout_alignParentBottom="true"
/>

<Button
android:id="@+id/topButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/topImage"
android:text=""
android:onClick="topButton"
/>
<Button
android:id="@+id/bottomButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/bottomImage"
android:layout_alignParentRight="true"
android:text="아래"
android:onClick="bottomButton"
/>


</RelativeLayout>

MainActivity.java
package org.androidtown.a2_1;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

ImageView topImage;
ImageView bottomImage;
Button topButton;
Button bottomButton;
Boolean check = true;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

topImage = (ImageView) findViewById(R.id.topImage);
bottomImage = (ImageView) findViewById(R.id.bottomImage);

topButton = (Button) findViewById(R.id.topButton);
bottomButton = (Button) findViewById(R.id.bottomButton);
}

public void topButton(View v){
changeImage();
}

public void bottomButton(View v){
changeImage();
}

private void changeImage(){
if(check == true){
check = false;
topImage.setImageResource(R.drawable.paper);
bottomImage.setImageResource(R.drawable.rock);
}else{
check = true;
topImage.setImageResource(R.drawable.rock);
bottomImage.setImageResource(R.drawable.paper);
}
}
}


INSERT + UPDATE



INSERT를 실행하는데 값을 비교하여 변경사항이 있는 경우 UPDATE를 실행



INSERT into tbl (column1, column2, ...) VALUES(value1, value2, ...) ON DUPLICATE KEY UPDATE column1='value1', column2='value2', ...;



$q = "INSERT INTO $bbs(no, dept, name, grade, request, content, state, succ_date) 

VALUES ('$no', '$dept', '$name', '$grade', '$request', '$content', '$state', '$succ_date')

ON DUPLICATE KEY UPDATE 

dept='$dept', name='$name', grade='$grade', request='$request', content='$content', state='$state', succ_date='$succ_date'";


$result = $mysqli->query($q);



'Server - Linux > APM' 카테고리의 다른 글

[PHP] 엑셀 파싱 (PHPExcel.php)  (0) 2016.10.27
[MySql] 예약어  (0) 2016.10.24
[MySql] PHP MYSQLI_ASSOC / MYSQLI_NUM 차이점  (0) 2016.10.19
[MySql] 테이블 컬럼(시간) 표시 방법  (0) 2016.10.04
[APM] 설치 및 설정  (0) 2016.09.12

엑셀 파싱 (PHPExcel.php)


PHPExcel 다운로드 후 require_once로 추가 한 후 작업


<?php

require_once $_SERVER['DOCUMENT_ROOT'].'/database/preset.php';

//PHPExcel, IOFactory Import

require_once $_SERVER['DOCUMENT_ROOT'].'/board/Excel/Classes/PHPExcel.php';

require_once $_SERVER['DOCUMENT_ROOT'].'/board/Excel/Classes/PHPExcel/IOFactory.php';

?>


<?php

$objPHPExcel = new PHPExcel();

$filename = $_SERVER['DOCUMENT_ROOT'].'/data/excel/'.$filename;

try{

//업로드 된 엑셀 형식에 맞는 Reader객체를 만든다.

$objReader = PHPExcel_IOFactory::createReaderForFile($filename);

//읽기전용으로 설정

$objReader->setReadDataOnly(true);

//엑셀파일을 읽는다.

$objExcel = $objReader->load($filename);

//첫번째 시트를 선택

$objExcel->setActiveSheetIndex(0);

$objWorksheet = $objExcel->getActiveSheet();

echo "<table>";

//$rowIterator = $objWorksheet->getRowIterator();

//여기 주석은 전체 출력을 해주는 부분!! (참고)

//foreach($rowIterator as $row){ //모든 행에 대해서

//echo "<tr>";

//$cellIterator = $row->getCellIterator();

//$cellIterator->setIterateOnlyExistingCells(false);

//foreach($cellIterator as $cell){ //해당 열의 모든 셀에 대해서

//echo "<td>",iconv("UTF-8", "EUC-KR", $cell->getValue()), "</td>";

//}

//echo "</tr>";

//}

$maxRow = $objWorksheet->getHighestRow();

for($i = 2; $i <= $maxRow; $i++){ //두번째 행부터 읽는다.

echo "<tr>";

$dept = $objWorksheet->getCell('B' . $i)->getValue(); // 1번째 열

$name = $objWorksheet->getCell('C' . $i)->getValue(); // 2번째 열

$grade = $objWorksheet->getCell('D' . $i)->getValue(); // 3번째 열

$request = $objWorksheet->getCell('E' . $i)->getValue(); // 4번째 열

$content = $objWorksheet->getCell('F' . $i)->getValue(); // 5번째 열

$state = $objWorksheet->getCell('G' . $i)->getValue(); // 6번째 열

$succ_date = $objWorksheet->getCell('I' . $i)->getValue(); // 7번째 열

echo "<td>".$dept."</td>";

echo "<td>".$name."</td>";

echo "<td>".$grade."</td>";

echo "<td>".$request."</td>";

echo "<td>".$content."</td>";

echo "<td>".$state."</td>";

echo "<td>".$succ_date."</td>";

echo "</tr>";

$q = "INSERT INTO $bbs (dept, name, grade, request, content, state, succ_date) values('$dept', '$name', '$grade', '$request', '$content', '$state', '$succ_date')";

$result = $mysqli->query($q);

}

echo "</table>";


}catch(exception $e){

echo "엑셀파일을 읽는 도중 오류가 발생하였습니다.";

}

​?>



'Server - Linux > APM' 카테고리의 다른 글

[MySql] INSERT + UPDATE  (0) 2016.10.27
[MySql] 예약어  (0) 2016.10.24
[MySql] PHP MYSQLI_ASSOC / MYSQLI_NUM 차이점  (0) 2016.10.19
[MySql] 테이블 컬럼(시간) 표시 방법  (0) 2016.10.04
[APM] 설치 및 설정  (0) 2016.09.12


MySql 예약어


WordWordWord
ADDALLALTER
ANALYZEANDAS
ASCASENSITIVEAUTO_INCREMENT
BDBBEFOREBERKELEYDB
BETWEENBIGINTBINARY
BLOBBOTHBY
CALLCASCADECASE
CHANGECHARCHARACTER
CHECKCOLLATECOLUMN
COLUMNSCONDITIONCONNECTION
CONSTRAINTCONTINUECREATE
CROSSCURRENT_DATECURRENT_TIME
CURRENT_TIMESTAMPCURSORDATABASE
DATABASESDAY_HOURDAY_MICROSECOND
DAY_MINUTEDAY_SECONDDEC
DECIMALDECLAREDEFAULT
DELAYEDDELETEDESC
DESCRIBEDETERMINISTICDISTINCT
DISTINCTROWDIVDOUBLE
DROPELSEELSEIF
ENCLOSEDESCAPEDEXISTS
EXITEXPLAINFALSE
FETCHFIELDSFLOAT
FORFORCEFOREIGN
FOUNDFRAC_SECONDFROM
FULLTEXTGRANTGROUP
HAVINGHIGH_PRIORITYHOUR_MICROSECOND
HOUR_MINUTEHOUR_SECONDIF
IGNOREININDEX
INFILEINNERINNODB
INOUTINSENSITIVEINSERT
INTINTEGERINTERVAL
INTOIO_THREADIS
ITERATEJOINKEY
KEYSKILLLEADING
LEAVELEFTLIKE
LIMITLINESLOAD
LOCALTIMELOCALTIMESTAMPLOCK
LONGLONGBLOBLONGTEXT
LOOPLOW_PRIORITYMASTER_SERVER_ID
MATCHMEDIUMBLOBMEDIUMINT
MEDIUMTEXTMIDDLEINTMINUTE_MICROSECOND
MINUTE_SECONDMODNATURAL
NOTNO_WRITE_TO_BINLOGNULL
NUMERICONOPTIMIZE
OPTIONOPTIONALLYOR
ORDEROUTOUTER
OUTFILEPRECISIONPRIMARY
PRIVILEGESPROCEDUREPURGE
READREALREFERENCES
REGEXPRENAMEREPEAT
REPLACEREQUIRERESTRICT
RETURNREVOKERIGHT
RLIKESECOND_MICROSECONDSELECT
SENSITIVESEPARATORSET
SHOWSMALLINTSOME
SONAMESPATIALSPECIFIC
SQLSQLEXCEPTIONSQLSTATE
SQLWARNINGSQL_BIG_RESULTSQL_CALC_FOUND_ROWS
SQL_SMALL_RESULTSQL_TSI_DAYSQL_TSI_FRAC_SECOND
SQL_TSI_HOURSQL_TSI_MINUTESQL_TSI_MONTH
SQL_TSI_QUARTERSQL_TSI_SECONDSQL_TSI_WEEK
SQL_TSI_YEARSSLSTARTING
STRAIGHT_JOINSTRIPEDTABLE
TABLESTERMINATEDTHEN
TIMESTAMPADDTIMESTAMPDIFFTINYBLOB
TINYINTTINYTEXTTO
TRAILINGTRUEUNDO
UNIONUNIQUEUNLOCK
UNSIGNEDUPDATEUSAGE
USEUSER_RESOURCESUSING
UTC_DATEUTC_TIMEUTC_TIMESTAMP
VALUESVARBINARYVARCHAR
VARCHARACTERVARYINGWHEN
WHEREWHILEWITH
WRITEXORYEAR_MONTH
ZEROFILL  


'Server - Linux > APM' 카테고리의 다른 글

[MySql] INSERT + UPDATE  (0) 2016.10.27
[PHP] 엑셀 파싱 (PHPExcel.php)  (0) 2016.10.27
[MySql] PHP MYSQLI_ASSOC / MYSQLI_NUM 차이점  (0) 2016.10.19
[MySql] 테이블 컬럼(시간) 표시 방법  (0) 2016.10.04
[APM] 설치 및 설정  (0) 2016.09.12

MYSQLI_ASSOC / MYSQLI_NUM 차이점



$row = $result->fetch_array(MYSQLI_ASSOC); //row["password"] 와 같이 컬럼명으로 값을 불러옴

$row = $result->fetch_array(MYSQLI_NUM); //row["0"] 와 같이 인덱스로 값을 불러옴


*참고 - $row = $result->fetch_array(MYSQLI_BOTH);      //둘다 사용가능!

'Server - Linux > APM' 카테고리의 다른 글

[PHP] 엑셀 파싱 (PHPExcel.php)  (0) 2016.10.27
[MySql] 예약어  (0) 2016.10.24
[MySql] 테이블 컬럼(시간) 표시 방법  (0) 2016.10.04
[APM] 설치 및 설정  (0) 2016.09.12
[APM] httpd restartServerName오류  (0) 2016.09.12

테이블 컬럼(시간) 표시 방법



alter table Intranet_User add created TIMESTAMP not null DEFAULT CURRENT_TIMESTAMP;



'Server - Linux > APM' 카테고리의 다른 글

[PHP] 엑셀 파싱 (PHPExcel.php)  (0) 2016.10.27
[MySql] 예약어  (0) 2016.10.24
[MySql] PHP MYSQLI_ASSOC / MYSQLI_NUM 차이점  (0) 2016.10.19
[APM] 설치 및 설정  (0) 2016.09.12
[APM] httpd restartServerName오류  (0) 2016.09.12

OpenFire 웹 접속 후 설정 및 클라이언트 메신져 다운


http://ip or domain:9090 으로 접속 포트는 변경가능함


설치한 환경에 맞게 설정하면 된다. 


클라이언트 메신져를 다운받고 도메인 or ip 지정한 후에 메신져를 사용하면됨




OpenFire 오픈소스는 xmpp프로토콜 기반이므로 xmpp를 지원하는 

무료 메신져 목록이 나오는 URL이다.


http://xmpp.org/xmpp-software/clients/

JDK & Mysql & OpenFire 설정


이전 글에서 설치는 완료했다!

이제 jdk 환경변수 설정, mysql계정 생성, DB생성, OpenFire 환경설정을 해야된다.


jdk 환경변수 설정


jdk 설치경로를 확인해보니

/usr/java/jdk1.8.0_101 이다.

환경변수는 /etc/profile에서 수정하면된다. 맨 아랫줄에 추가해준다.


export JAVA_HOME=/usr/local/jdk/jdk1.8.0_91

export PATH=$JAVA_HOME/bin:$PATH

export CLASS_PATH=$JAVA_HOME/lib:$CLASS_PATH


/etc/profile에 실행권한을 주고 ./profile로 실행을 시켜주고 적용시킨다.


java -version 명령어로 제대로 반영이 됐는지 확인!



Mysql 계정 생성 및 DB 생성


# service mysqld start

# mysql -u root -p


Mysql 접속 후에 


mysql> grant all privileges on *.* to 'dream'@localhost identified by 'Dream1004';

mysql> flush privileges;


이렇게 계정을 생성해준다.


openfire이름으로 DB를 생성한다.

create databases openfire;


# /opt/openfire/resources/database/


위의 경로로 들어가서 


mysql -udream -pDream1004 openfire < ./openfire_mysql.sql


테이블을 생성해준다.


OpenFire 환경설정


다음과 같이 설정 하고 openfire start 해주면 끝!


# vi /etc/sysconfig/openfire

OPENFIRE_HOME="/opt/openfire"

OPENFIRE_PIDFILE="/var/run/openfire.pid"

OPENFIRE_OPTS="-Xmx1024m"

JAVA_HOME=/usr/java/jdk1.8.0_101

# service openfire start

+ Recent posts