지연 실행 (delay 그리고 재호출시 연기하기)

프로그래밍/Android (Java)|2016. 12. 14. 09:53
반응형

import android.os.Handler;



public class TVActivity extends Activity { 여기 안에다가 아래 내용을 미리 선언합니다.


    Runnable myRunnable = new Runnable() {

        @Override

        public void run() {

            final ImageView imgNumber = (ImageView) findViewById(R.id.getImage);

            imgNumber.setVisibility(View.GONE);

        }

    };

    Handler myHandler = new Handler();



나중에 클릭리스너나 키이벤트에 아래 내용 추가해서 불러오면 됩니다.


    myHandler.removeCallbacks(myRunnable);       // 반복해서 누를경우 기존 딜레이 취소

    myHandler.postDelayed(myRunnable, 5000);    // 딜레이 호출 (5초뒤 실행)



혹시 안될경우 {, } 밖으로 또는 안으로 이동하며 테스트 해볼것. 위치가 중요합니다.


반응형

댓글()

클래스간 변수 공유 - 전역변수 (global variable) 사용하기

프로그래밍/Android (Java)|2016. 12. 12. 08:44
반응형

별도의 파일 생성


Global_Variable.java


package com.tistory.sysdocu;


import android.app.Application;


public class Global_Variable extends Application {


    private String GlobalString;


    public String getState(){

        return GlobalString;

    }


    public void setState(String GS){

        GlobalString = GS;

    }


}




AndroidManifest.xml 내용 추가


(생략)


    <application

        android:name=".Global_Variable"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme">


(생략)




본문 파일에서 사용하기


(생략)


   @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);


        Global_Variable GV = ((Global_Variable)getApplicationContext());

        GV.setState("Hello world");        // 저장

        String Global = GV.getState();    // 불러오기


(생략)



반응형

댓글()

텍스트파일의 내용을 순차적으로 읽어들이는 방법

프로그래밍/BASH SHELL|2016. 11. 29. 10:08
반응형

/test.txt 파일의 내용에

file1

file2

file3

file4

file5

 

가 있는 경우

  

 

#!/bin/bash
for LIST in `cat /test.txt`; do
    echo $LIST
done 

 

 

와 같은 스크립트를 돌리면

 

file1

file2

file3

file4

file5

 

와 같은 결과가 나온다.

 

 

[출처] http://www.ischo.net/

 

 

위 코드는 cat /test.txt 대신 echo "$temp" 와 같이 사용도 가능합니다.

대신 한줄씩 불러들이기 위해서 $temp 변수 앞뒤로 쌍따옴표 붙이는것을 잊으면 안됩니다.

 

그리고 이것은 한 줄에 공백이 있을 경우 맨 앞에 것만 불러오는 단점이 있습니다.

불러들이는 행에 여러 열이 있을 경우 아래와 같이 각 열에 변수 적용이 가능합니다.

 

while read cnt name trash
        do
                echo "${cnt} : ${name}"
        done < list.txt 

 

또는 공백이 불특정하게 많을 경우 아래와 같이 사용도 가능합니다.

 

while read item; do
    echo $item
done < list.txt 

 

파일이 아닌 변수에서 한줄씩 라인을 읽어오고 싶을 경우 아래와 같이 파이프라인 (버티컬바)를 이용해 처리합니다.

 

echo "$list" | while read item; do
    echo $item
done

 

반응형

댓글()

변수 두개 붙여서 하나의 변수명으로 사용할 경우

프로그래밍/BASH SHELL|2016. 11. 29. 07:57
반응형

# vi test.sh


#!/bin/bash


size[1]="10G"

size[2]="10G"

size[3]="0G"

size[4]="0G"


for ((i=1; i<=4; i++)) ;do

    if [ ${size[$i]} == "0G" ]; then

        echo "no order ($i/4)"

    else

        echo ${size[$i]}

    fi

done 



# sh test.sh




반응형

댓글()

지연 실행 (delay)

프로그래밍/Android (Java)|2016. 11. 14. 08:08
반응형

import android.os.Handler;



                        new Handler().postDelayed(new Runnable() {

                            @Override

                            public void run() {

                                // 이곳에 실행코드 입력

                            }

                        }, 3000);  // 3초 지연후 실행코드 실행



반응형

댓글()

php 로 소켓 프로그램 만들기 (다중 처리, 멀티스레드)

프로그래밍/PHP|2016. 10. 28. 17:17
반응형

- 본 예제는 client 의 연결을 자식 프로세스(thread) 로 구동시켜 여러 client 의 요청을 다중 처리하도록 하는 코드 입니다.

- 본 예제는 client 와 서버가 메세지를 한 번씩 주고 받는 예제 입니다.



1. 서버에서 데몬 생성


# vi server.php


#!/usr/local/php/bin/php -q

<?php

set_time_limit(0);


define("_IP",    "0.0.0.0");    // 접속 허용할 IP. 모든 IP 에 대하여 오픈할 경우 0.0.0.0 으로 설정

define("_PORT",  "81");


$sSock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);


socket_bind($sSock, _IP, _PORT);

socket_listen($sSock);


pcntl_signal(SIGCHLD, SIG_IGN);


while($sock = socket_accept($sSock))

{

    socket_getpeername($sock, $sockIp, $sockPort);

    msg("\nclient connect : ".$sockIp.":".$sockPort."\n");


    $pid = pcntl_fork();

    if($pid == -1)

    {

        msg("fork failed\n");

        exit;

    }

    // 자식 프로세스 일때 

    if($pid == 0)

    {

        $buf = socket_read($sock, 4096);


        // 클라이언트에서 받은 데이타 처리하는 부분

        msg("recive data : ".$buf."\n");    // 클라이언트에게 받은 메세지

        msg("client(".$sockPort.") time data request\n");

        $re = "Complete launching server";    // 클라이언트에게 응답할 메세지

        socket_write($sock, $re);

        msg("client disconnect : ".$sockIp.":".$sockPort."\n");

        socket_close($sock);

        exit;

    }

}


function msg($msg)

{

    echo "SERVER >> ".$msg;

}

?>


실행 권한 부여 및 작성후 데몬 구동


# chmod 700 server.php

# ./server.php &




2. 클라이언트에서 접속 파일 생성


# vi client.php


#!/usr/local/php/bin/php -q

<?php

define("_IP",    "192.168.10.2");    // 접속할 서버 IP

define("_PORT",  "81");                // 접속할 서버 PORT


$sock      = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

socket_connect($sock, _IP, _PORT);

msg("socket connect to "._IP.":"._PORT."\n");


// 서버로 보낼 데이타

$stdin = "time";

socket_write($sock, $stdin);

$sMsg  = socket_read($sock, 4096);


msg("result : ".$sMsg."\n");


socket_close($sock);

exit;


// 로그를 출력합니다. 디버그용

function msg($msg)

{

    echo "CLIENT >> ".$msg;

}

?>




3. 테스트


client 에서 생성한 client.php 파일을 실행합니다.


# ./client.php

# ./client_multi.php

CLIENT >> socket connect to 192.168.30.20:444

CLIENT >> result : Complete launching server


* 참고로 (client 접속 당시) 서버 콘솔에 출력된 메세지 입니다.


# SERVER >> client connect : 192.168.30.40:32966

SERVER >> recive data : time

SERVER >> client(32966) time data request



[참조하여 작성함] http://www.phpschool.com/class/php_multi_socket_server3.html

반응형

댓글()

값이 배열 안에 존재하는지 확인하는 in_array함수

프로그래밍/PHP|2016. 10. 17. 12:28
반응형

<?php 

 $os = array("Mac", "NT", "Irix", "Linux"); 


 if (in_array("NT", $os)) { 

      echo "NT가 존재합니다."; 

 } 

 // 결과: NT가 존재합니다. 


 // 이 함수는 대소문자를 구분하므로 false입니다. 

 if (in_array("mac", $os)) { 

      echo "찾는 문자가 존재합니다."; 

 } 

 // 결과: 

 ?>



[출처] http://habony.tistory.com/82

반응형

댓글()

php 로 소켓 프로그램 만들기 (다중 처리 불가, queue 진행 방식)

프로그래밍/PHP|2016. 10. 14. 13:32
반응형

- 본 예제는 client 의 다중 접속 처리가 되지 않는 1 client 를 위한 코드 입니다.

  동시에 두개의 요청이 들어오게 되면 먼저 들어온 요청 처리 후, 대기 되었던 두번째 요청을 처리하게 됩니다.


- 본 예제는 server 에서 보내주는 메세지를 client 에서 확인하는 예제입니다.




1. 서버에서 데몬 생성


# vi server.php


#!/usr/local/php/bin/php -q    // php 실행 파일

<?php

set_time_limit(0);    // 작업을 마칠때까지 세션을 끊지 않음

define("_IP",    "192.168.10.2");    // 서버 IP

define("_PORT",  "443");                // 서버에서 사용할 PORT


$sSock      = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

socket_bind($sSock, _IP, _PORT);

socket_listen($sSock);

while($cSock = socket_accept($sSock))

{

    socket_getpeername($cSock, $addr, $port);

    echo "SERVER >> client connected $addr:$port \n";

    $date = date("Y/m/d H:i:s");

    socket_write($cSock, $date);

    socket_close($cSock);

    echo "SERVER >> client Close.\n";

}

?>


실행 권한 부여 및 작성후 데몬 구동


# chmod 700 server.php

# ./server.php &




2. 클라이언트에서 접속 파일 생성


# vi client.php


#!/usr/bin/php -q    // php 실행 파일

<?php

set_time_limit(0);    // 작업을 마칠때까지 세션을 끊지 않음

define("_IP",    "192.168.10.2");    // 서버 IP

define("_PORT",  "443");               // 서버에서 사용하는 PORT


$sock      = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

socket_connect($sock, _IP, _PORT);

echo "CLIENT >> socket connect to "._IP.":"._PORT."\n";

$date = socket_read($sock, 4096);

echo "CLIENT >> this time is $date \n";

socket_close($sock);

echo "CLIENT >> socket closed.\n";

?>




3. 테스트


client 에서 생성한 client.php 파일을 실행합니다.


# ./client.php

CLIENT >> socket connect to 192.168.10.2:443

CLIENT >> this time is 2016/10/14 13:27:49 

CLIENT >> socket closed.


* 참고로 (client 접속 당시) 서버 콘솔에 출력된 메세지 입니다.


SERVER >> client connected 192.168.10.3:44450 

SERVER >> client Close.




* 내용 추가


client 에서 server 로 메세지를 보내기 위해서는 각각의 파일에 아래 내용을 추가해줍니다.


# vi client.php


$message="Hero";

socket_write($sock, $message, strlen($message)) or die("Could not send data to server\n"); 


# vi server.php


$input = socket_read($cSock, 4096) or die("Could not read input\n");

echo "$input";


반응형

댓글()

스크립트 실행시 변수 뒤에 \013. 이 붙을 경우

프로그래밍/BASH SHELL|2016. 10. 4. 11:37
반응형

[증상]

프롬프트상에서 명령줄을 직접 입력하면 실행되고,

쉘스크립트를 통해서는 명령이 실행되지 않을때


[원인]

while 사용시 발생하는 부분으로 변수에 줄바꿈(\r) 태그가 포함되어있는지 확인해야 함


[해결]

이렇게 하면 되지 않고

for i in `cat a.txt`


이렇게 해야함

for i in `cat a.txt | tr -d '\r'`



[참고] http://stackoverflow.com/questions/1118058/unix-scripting-trying-to-hosts-getting-013-not-found-3nxdomain

반응형

댓글()

문자열 자르기

프로그래밍/Android (Java)|2015. 12. 14. 08:21
반응형

String url = "http://sysdocu.tistory.com/name.txt";

 

String newurl = url.substring(6);    // http:// 부분 제외하고 newurl 에 다시 입력

 

String protocol = url.substring(0,4);    // 프로토콜만 protocol 에 입력
 

String[] split = newurl.split("/");   // / 를 기준으로 자르기. split[0] : sysdocu.com, split[1] : name.txt

 

String type = split[1].substring(split[1].length() - 3);    // 확장자(.txt)만 type 에 입력

반응형

댓글()

한글 및 공백이 포함된 URL 주소를 UTF-8 로 변환 (urlencode)

프로그래밍/PHP|2015. 12. 10. 10:36
반응형

한글 및 공백이 포함된 URL 주소로 접근하기 위해서는 urlencode 함수를 이용하면 됩니다.

웹문서가 euckr 로 만들어진 경우는 utf-8 로 문자를 변환한 뒤에, urlencode 를 사용해야 합니다.

 

아래 예제 참조..

 

<?
if(mb_detect_encoding($str) != "UTF-8") {
$str = iconv("EUC-KR", "UTF-8", $str);    // 웹문서가 euckr 일 경우 utf-8 로 변환 합니다.
}

$str = urlencode($str);                          // urlencode 로 변환
echo $str;
?>
<form method="post">
<input name="str" type="text">
<input value="submit" type="submit">
</form>


반응형

댓글()