Programming2015. 4. 16. 08:39

이렇게 하면 블로그에 시퀀스 다이어그램을 바로 넣을수 있네. 헐~ 똘똘한 애들 정말 많아.

회사에는 자기 linux에 이거 올려놓고 사람들 쓰게하는 사람도 있던데, open source tool인가?? ==> 찾아보니 간단하게 쓰는것은 공개하고 돈받고 서비스하네요. 돈받고 하려면 좀더 잘해야할것 같은데...

Example

<div class=wsd wsd_style="modern-blue" ><pre>

Alice->Bob: Authentication Request
Bob-->Alice: Authentication Response

</pre></div><script type="text/javascript" src="http://www.websequencediagrams.com/service.js"></script>
http://www.websequencediagrams.com/
Alice->Bob: Authentication Request
Bob-->Alice: Authentication Response


'Programming' 카테고리의 다른 글

저렴한 Trace32, Low cost JTAG  (0) 2015.04.27
토렌트, BitTorrent  (0) 2015.04.24
Popcorn Time clone해서 build하기  (0) 2015.04.14
BAT/CMD windows script to EXE executable converter  (0) 2015.03.17
Bash shell script  (0) 2015.03.14
Posted by 쁘레드
Programming2015. 4. 14. 06:59

사이트에 가입한후

https://git.popcorntime.io/popcorntime


Public Key를 등록. 이미 있으면 그거 넣어주면 되고

cat ~/.ssh/id_rsa

없으면 만들어서 넣어주면 됨

ssh-keygen -t rsa -C "EMAIL"

https://git.popcorntime.io/popcorntime/desktop

git clone git@git.popcorntime.io:popcorntime/desktop.git


https://git.popcorntime.io/popcorntime/receiver ; chromecast receiver

git clone git@git.popcorntime.io:popcorntime/receiver.git


https://git.popcorntime.io/popcorntime/android

git clone git@git.popcorntime.io:popcorntime/android.git


https://git.popcorntime.io/popcorntime/streamer

git clone git@git.popcorntime.io:popcorntime/streamer.git


https://git.popcorntime.io/popcorntime/pdk

git clone git@git.popcorntime.io:popcorntime/pdk.git


nodejs, npm을 잘못설치하면 아래처럼 엄청난 에러와 싸워야함. 소스받아 compile해서 설치하는게 젤 안전함.

NPM package

sudo apt-get install npm


------------------------------------

여까정 하고 했더니 에러난다. 아씨. 오늘 저녁에 다시.


./make_popcorn.sh

Looks like we are inside a git repository, do you wish to clone inside it? (yes/no) [no]

You appear to be inside of a Popcorn Time repository already, not cloning

Do you wish to install the required dependencies for Popcorn Time and setup for building? (yes/no) [yes]

Switched to /local/mnt2/workspace2/hyosubo/popcorn_time/desktop

Installing global dependencies

npm http GET https://registry.npmjs.org/bower

npm http GET https://registry.npmjs.org/grunt-cli


npm ERR! Error: failed to fetch from registry: bower

npm ERR!     at /usr/share/npm/lib/utils/npm-registry-client/get.js:139:12

npm ERR!     at cb (/usr/share/npm/lib/utils/npm-registry-client/request.js:31:9)

npm ERR!     at Request._callback (/usr/share/npm/lib/utils/npm-registry-client/request.js:136:18)

npm ERR!     at Request.callback (/usr/lib/nodejs/request/main.js:119:22)

npm ERR!     at Request.<anonymous> (/usr/lib/nodejs/request/main.js:212:58)

npm ERR!     at Request.emit (events.js:88:20)

npm ERR!     at ClientRequest.<anonymous> (/usr/lib/nodejs/request/main.js:412:12)

npm ERR!     at ClientRequest.emit (events.js:67:17)

npm ERR!     at HTTPParser.onIncoming (http.js:1261:11)

npm ERR!     at HTTPParser.onHeadersComplete (http.js:102:31)

npm ERR! You may report this log at:

npm ERR!     <http://bugs.debian.org/npm>

npm ERR! or use

npm ERR!     reportbug --attach /local/mnt2/workspace2/hyosubo/popcorn_time/desktop/npm-debug.log npm

npm ERR!

npm ERR! System Linux 3.2.0-40-generic

npm ERR! command "node" "/usr/bin/npm" "install" "-g" "bower" "grunt-cli"

npm ERR! cwd /local/mnt2/workspace2/hyosubo/popcorn_time/desktop

npm ERR! node -v v0.6.12

npm ERR! npm -v 1.1.4

npm ERR! message failed to fetch from registry: bower

npm ERR!

npm ERR! Additional logging details can be found in:

npm ERR!     /local/mnt2/workspace2/hyosubo/popcorn_time/desktop/npm-debug.log

npm not ok

---------------------------------

Javascript/JSON

JAVA

이런것들로 이런 거대한 프로젝트를 만들수 있다니, 세상이 왜 이렇게 빨리 변하는건지. 우리 아들은 어떤 언어로 이 세상을 바꿀지 궁금하다.


---------------------------------

http://stackoverflow.com/questions/12913141/message-failed-to-fetch-from-registry-while-trying-to-install-any-module

npm config set registry http://registry.npmjs.org/
sudo apt-get purge nodejs npm
curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get install -y nodejs

-------------------------------

Installing global dependencies

npm ERR! Error: Attempt to unlock bower, which hasn't been locked

npm ERR!     at unlock (/usr/lib/node_modules/npm/lib/utils/locker.js:44:11)

npm ERR!     at cb (/usr/lib/node_modules/npm/lib/cache/add-local.js:30:5)

npm ERR!     at /usr/lib/node_modules/npm/lib/cache/add-local.js:47:20

npm ERR!     at /usr/lib/node_modules/npm/lib/utils/locker.js:22:20

npm ERR!     at /usr/lib/node_modules/npm/node_modules/inflight/inflight.js:22:7

npm ERR!     at Array.forEach (native)

npm ERR!     at res (/usr/lib/node_modules/npm/node_modules/inflight/inflight.js:21:9)

npm ERR!     at f (/usr/lib/node_modules/npm/node_modules/once/once.js:16:25)

npm ERR!     at afterMkdir (/usr/lib/node_modules/npm/lib/cache/get-stat.js:53:14)

npm ERR!     at /usr/lib/node_modules/npm/node_modules/mkdirp/index.js:46:53

npm ERR! If you need help, you may report this *entire* log,

npm ERR! including the npm and node versions, at:

npm ERR!     <http://github.com/npm/npm/issues>


npm ERR! System Linux 3.2.0-40-generic

npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "-g" "bower" "grunt-cli"

npm ERR! cwd /local/mnt2/workspace2/hyosubo/popcorn_time/desktop

npm ERR! node -v v0.10.38

npm ERR! npm -v 1.4.28

npm ERR!

npm ERR! Additional logging details can be found in:

npm ERR!     /local/mnt2/workspace2/hyosubo/popcorn_time/desktop/npm-debug.log

npm ERR! not ok code 0

-----------------------------

https://github.com/npm/npm/issues/4815

https://gist.github.com/isaacs/579814


echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc
. ~/.bashrc
mkdir ~/local
mkdir ~/node-latest-install
cd ~/node-latest-install
curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1
./configure --prefix=~/local
make install # ok, fine, this step probably takes more than 30 seconds...
curl https://www.npmjs.org/install.sh | sh


-------------------------

https://docs.npmjs.com/getting-started/fixing-npm-permissions

-------------------------

sudo 없이 실행하기, ./make_popcorn.sh


execsudo() {

#       sudo $1

       $1



npm config set prefix ~/npm

export NODE_PATH="$NODE_PATH:$HOME/npm/lib/node_modules"

export PATH=$PATH:$HOME/npm/bin


grunt build --force

grunt start



wget http://get.popcorntime.io/nw/v0.9.2/node-webkit-v0.9.2-linux-x64.tar.gz

--2015-04-23 19:31:51-- http://get.popcorntime.io/nw/v0.9.2/node-webkit-v0.9.2-linux-x64.tar.gz Resolving get.popcorntime.io (get.popcorntime.io)... 62.210.244.59 Connecting to get.popcorntime.io (get.popcorntime.io)|62.210.244.59|:80... connected. HTTP request sent, awaiting response... 403 URLBlocked 2015-04-23 19:31:51 ERROR 403: URLBlocked.

--------------------------
Running "shell:language" (shell) task You need to run this command from the toplevel of the working tree. Warning: Command failed: /bin/sh -c git submodule init&&cd src/app/language/&&git submodule update --init&&git pull origin master --force You need to run this command from the toplevel of the working tree. Use --force to continue. Aborted due to warnings.

-----------------

error가 없다고 가정할때 아래처럼 하면 가장 쉬움. tested with Ubuntu 14.04.

NPM, NodeJS 설치가 안되면 x되는 수가 있어서 아래와 같이 설치하면 됨


sudo apt-get install python g++ make
wget http://nodejs.org/dist/node-latest.tar.gz
tar xvfvz node-latest.tar.gz
cd node-v0.12.0
./configure
make
sudo make install

./make_popcorn.sh

grunt start

'Programming' 카테고리의 다른 글

토렌트, BitTorrent  (0) 2015.04.24
Web Sequence diagram blog에 넣기  (0) 2015.04.16
BAT/CMD windows script to EXE executable converter  (0) 2015.03.17
Bash shell script  (0) 2015.03.14
windows batch file tips  (0) 2015.03.14
Posted by 쁘레드
Programming2015. 3. 17. 02:14

좀더 test해보고 선택 결과를 update할 예정

https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=bat%20to%20exe


http://download.cnet.com/Bat-To-Exe-Converter/3000-2069_4-10555897.html

Bat To Exe Converter

Average User Rating:
out of 3 votes



Stackoverflow에서도 글이 있네

http://stackoverflow.com/questions/20008941/how-to-turn-my-bat-file-into-exe-file


Bat_To_Exe_Converter.zip

Convert batch files to executable files, preventing others not to see the source code and keep it hidden. See document CH000435 for additional details.

Version: 1.4
Requirements: Windows 95 and above with at least 500KB of disk space.

'Programming' 카테고리의 다른 글

Web Sequence diagram blog에 넣기  (0) 2015.04.16
Popcorn Time clone해서 build하기  (0) 2015.04.14
Bash shell script  (0) 2015.03.14
windows batch file tips  (0) 2015.03.14
syntax highlight test  (0) 2015.03.03
Posted by 쁘레드
Programming2015. 3. 14. 13:12
  1. 현재날짜/시간 format대로 출력
  2. 현재 dir가 그 dir가 맞는지
  3. file/folder 있는지 확인후 만들기, 없으면 에러나 만들기
  4. if else 
  5. for loop, while
  6. 외부 프로그램 실행하기
  7. Input parameter받아 command에 넣기
  8. parameter validate하기
  9. website에서 label읽어오기
  10. sleep, timeout = sleep
  11. 외부파일을 읽어서 parameter 순차적으로 읽기



http://en.wikibooks.org/wiki/Bash_Shell_Scripting

http://wiki.bash-hackers.org/syntax/pattern

http://linuxcommand.org/wss0130.php

http://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash


Bash header, 날짜구하기, 시간

#!/bin/bash
#-------------------------------
# Fred Oh (email) 
# 2015/01/01 starting new life
#-------------------------------
ulimit
today=`date +%m%d`
source ~/.bashrc

today=`date +%m%d_%H%M%S`

$ NOW=$(date +"%m-%d-%Y")

Pattern Matching

#!/bin/bash
#-------------------------------
# Fred Oh (email) 
# 2015/01/01 starting new life
#-------------------------------

au_archive_dir="....../LA.BF64.1.2.1"
branch_name='LA.BF64.1.2.1'
au_prefix='AU_LINUX_ANDROID'

cd $au_archive_dir

post_fix_temp=`ls -t 05.01.00.0[0-9][0-9].[0-9][0-9][0-9] | head -1`
echo $post_fix_temp
#Removing last :, first of all why it ends with :
post_fix="${post_fix_temp//:}"
echo POST_FIX is $post_fix

#Extract only last 3 digit number
#au_number="${post_fix:-3:3}"  doesn't work T.T
au_number="${post_fix:13:3}"
echo TODAY_AU ${today}_au${su_number}


/^([[:Digit:]]{2}\.){3}([[:Digit:]]{3}\.){2}.*$/{
    printf("matches\n");
}

IF/Loop

#!/bin/bash
#-------------------------------
# Fred Oh (email) 
# 2015/01/01 starting new life
#-------------------------------

if [ -d "$buildpath" ]; then
    buildpath="${buildpath}_1"
    echo new $buildpath
fi

count=1
while [[ -d $buildpath ]]; do
    if [ $count == 1 ]; then
        buildpath=${buildpath}_$count
    fi
    buildpath=${buildpath:0:-2}_$count
    let count=count+1
    echo New $buildpath
done
echo Final $buildpath

mkdir $buildpath
cd    $buildpath

echo PWD is $PWD
if ! [ $buildpath == $PWD ]; then
    echo CD failed
    exit 1
else
    echo same directory
fi


taking input parameter

#!/bin/bash
#-------------------------------
# Fred Oh (email) 
# 2015/01/01 starting new life
#-------------------------------
today=`date +%m%d`
source ~/.bashrc

#check input is NULL
if [ -z $1 ]; then
        echo "give me AU label"
        exit 1
fi
echo "AU Lable = $1"

#or check input is NULL or not
if [ "$1" != "" ]; then
    echo "Positional parameter 1 contains something"
else
    echo "Positional parameter 1 is empty"
fi

Sync to latest label and Build

#!/bin/bash
#-------------------------------
# Fred Oh (email) 
# 2015/01/01 starting new life
#-------------------------------

today=`date +%m%d`
source ~/.bashrc

au_archive_dir="...../LA.BF64.1.2.1"
branch_name='LA.BF64.1.2.1'
au_prefix='AU_LINUX_ANDROID'

cd $au_archive_dir
#must be 16 character like 05.01.00.066.083
#Fred don't know why post_fix_temp ends up with ':', need to remove ':'
post_fix_temp=`ls -t 05.01.00.0[0-9][0-9].[0-9][0-9][0-9] | head -1`
echo $post_fix_temp
post_fix="${post_fix_temp//:}"
echo $post_fix

#au_number="${post_fix:-3:3}"  doesn't work T.T
au_number="${post_fix:13:3}"
echo TODAY_AU ${today}_au${su_number}

buildpath="/local/mnt/workspace/hyosubo/8992_au${au_number}"
count=1
while [[ -d $buildpath ]]; do
    if [ $count == 1 ]; then
        buildpath=${buildpath}_$count
    fi
    buildpath=${buildpath:0:-2}_$count
    let count=count+1
    echo new $buildpath
done

mkdir $buildpath
cd    $buildpath

echo PWD is $PWD
if ! [ $buildpath == $PWD ]; then
    echo CD failed $buildpath $PWD
    exit 1
fi


au_name=$au_prefix'_'$branch_name'.'$post_fix
echo $au_name
#/usr/local/bin/repo init -u git://git.quicinc.com/platform/manifest.git -b LA.BF64.1.2.1
/usr/local/bin/repo init -u git://git.quicinc.com/platform/manifest.git -b refs/tags/$au_name -m  versioned.xml
touch README2.txt
/usr/local/bin/repo sync -j8 -q
#/usr/local/bin/repo sync -j8 > reposync_$today.txt
#/usr/local/bin/repo forall -c 'git checkout -b au33 AU_LINUX_ANDROID_KK.04.04.04.010.033'
#/usr/local/bin/repo start tip$today --all
source build/envsetup.sh
lunch msm8992-userdebug
/usr/bin/make -j12 > Buildlog_$today.txt

'Programming' 카테고리의 다른 글

Web Sequence diagram blog에 넣기  (0) 2015.04.16
Popcorn Time clone해서 build하기  (0) 2015.04.14
BAT/CMD windows script to EXE executable converter  (0) 2015.03.17
windows batch file tips  (0) 2015.03.14
syntax highlight test  (0) 2015.03.03
Posted by 쁘레드
Programming2015. 3. 14. 10:49
아래 몇가지만 알아서 윈도에서 자주쓰는 batch file을 만들자
  1. Input 받아 command에 넣기
  2. input validate하기
  3. file/folder 있는지 확인후 만들기, 없으면 에러나 만들기
  4. if else 
  5. for loop
  6. 외부 프로그램 실행 = start
  7. input받아 실행하기
  8. 현재날짜 format대로 출력
  9. 현재 dir 얻기, 이전 cur path로 돌아가기
  10. sleep, timeout
  11. 외부파일에서 parameter 순차적으로 읽기
  12. 환경variable에서 읽기, PATH나 user variable like msm
  13. 오늘날짜 구하기


http://en.wikibooks.org/wiki/Windows_Batch_Scripting

http://stackoverflow.com/search?q=windows+batch


1. Input이 없을때 나가기, 처음 3개 character비교하기

@echo off
rem -------------------------------
rem Fred Oh (email) 
rem 2015 01 01 starting new life
rem -------------------------------

rem argument check, no arument exit
if -%1-==-- echo Argument one not provided & exit /b

rem user input, %1, %2 and so on

set a=%1
rem set a=abcd
echo %a:~0,3%
if %a:~0,3%==COM echo same

if exist file.txt (
	echo The file exists.
) else (
	echo The file does not exist.
)

rem directory check
if exist temp (
	echo The temp exists.
) else (
	echo The temp does not exist.
)

rem if directory is not available, create it
if not exist temp mkdir temp

goto :mylabel
echo Hello 1
REM Hello 1 never gets printed.
 
:mylabel
echo Hello 2
goto :eof

rem robocopy, xcopy, copy
sleep 5
rem timeout
timeout /t 5

#user input
set /P user_input=Enter an integer:


2. 간단한 Monkey 예제

@echo off
rem -------------------------------
rem Fred Oh (email) 
rem 2015 01 01 starting new life
rem -------------------------------


set arg1=%1
set iteration=1
set num=1

rem note: it end with \, %mypath:~0,-1% will remove \
set mypath=%~dp0
set log_path=%mypath%Logs

if exist log_path(
	echo Logs folder exists already.
) else (
	mkdir log_path    
	echo Logs Folder created!
)

:loop
adb root
adb wait-for-device
adb remount
sleep 5
start adb_logs.bat %iteration% %log_path%
start Kernel_logs.bat %iteration% %log_path%
rem adb shell monkey -p com.android.music -p com.android.soundrecorder -s 100 --throttle 500 1000000000
adb shell monkey -p com.android.music -p com.android.soundrecorder -p com.android.voicedialer -s 100 --throttle 500 1000000000
set /a iteration= %iteration% + %num%
echo %iteration%
sleep 600
mv C:\ProgramData\Qualcomm\QPST\Sahara\Port_%arg1% C:\ProgramData\Qualcomm\QPST\Sahara\Port_%arg1%_%iteration%
goto loop


3. input path 받아 fastboot flash 하기

@echo off
rem -------------------------------
rem Fred Oh (email) 
rem 2015 01 01 starting new life
rem -------------------------------
setlocal enabledelayedexpansion
for %%i in (1) do (
  set /p c=enter a build location? 
  echo waiting for device
  echo Flashing boot image  
  fastboot.exe flash boot !c!\boot.img
  echo Flashing userdata image
  fastboot.exe flash userdata !c!\userdata.img
  echo Flashing system image
  fastboot.exe flash system !c!\system.img
  echo Flashing recovery image
  fastboot.exe flash recovery !c!\recovery.img
  echo Flash completed, rebooting device
  fastboot.exe continue
  sleep 3
)



4. function 예제

@echo off
rem -------------------------------
rem Fred Oh (email) 
rem 2015 01 01 starting new life
rem -------------------------------
@echo off
call :power %1 %2
echo %result%
rem Prints 16, determined as 2 * 2 * 2 * 2
goto :eof

rem __Function power______________________
rem Arguments: %1 and %2
:power
setlocal
set counter=%2
set interim_product=%1
:power_loop
if %counter% gtr 1 (
  set /A interim_product = %interim_product% * %1
  set /A counter = %counter% - 1
  goto :power_loop
)
endlocal & set result=%interim_product%
goto :eof


5. 간단한 fastboot flash 처리예제, environment variable 읽어서 처리하기. msm is Env variable

@echo off
rem -------------------------------
rem Fred Oh (email) 
rem 2015 01 01 starting new life
rem -------------------------------

if -%msm%- == -- (
	echo no msm defined, set msm8992
	set msm=msm8992
)
set out=out\target\product\%msm%

rem if no parameter
rem 		check current directory then $OUT directory
if -%1-==-- ( 
echo Argument one not provided, Assume current directory
call :function_fastboot
echo IMG flashed done
goto :eof
) 

rem if parameter(PATH) are given
rem 		check network path or local path
set in_path=%1
echo %in_path:~0,2%
if %in_path:~0,2%==\\ (
	echo Network path, pushd %in_path% and will do popd later
	pushd %in_path%
	call :function_fastboot
	popd
) else (
	echo LOCAL path found CD %in_path%
	cd %in_path%
	call :function_fastboot
)
goto :eof

rem ________________________
rem FUNCTION flash FASTBOOT
rem --------------------------------------------

:function_fastboot
setlocal
if exist system.img (
	echo current directory has IMG files
	fastboot flash aboot 		emmc_appsboot.mbn
	fastboot flash boot 		boot.img
	fastboot flash cache 		cache.img
	fastboot flash persist 		persist.img
	fastboot flash recovery 	recovery.img
	fastboot flash userdata 	userdata.img
	fastboot flash system 	system.img
) else (
	if exist %out%\system.img (
		echo IMG found in %out%
		fastboot flash aboot 		%out%\emmc_appsboot.mbn
		fastboot flash boot 		%out%\boot.img
		fastboot flash cache 		%out%\cache.img
		fastboot flash persist	 	%out%\persist.img
		fastboot flash recovery 	%out%\recovery.img
		fastboot flash userdata 	%out%\userdata.img
		fastboot flash system 	%out%\system.img
	) else (
		echo no IMG file found!!!! EXIT.
		exit /b
	)
)
endlocal
goto :eof


오늘 날짜구하기 예제

@echo off
rem -------------------------------
rem Fred Oh (email) 
rem 2015 01 01 starting new life
rem -------------------------------

For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c%%a%%b)
rem For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b)
For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a%%b)
echo %mydate%_%mytime%

For /f "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set ldt=%%j
set ldt=%ldt:~0,4%%ldt:~4,2%%ldt:~6,2%_%ldt:~8,2%%ldt:~10,2%%ldt:~12,2%
echo %ldt%

rem %date% = Mon 10/12/2015 
set year=%date:~-4%
rem echo year=%year%
set month=%date:~4,2%
rem echo month=%month%
set day=%date:~7,2%
rem echo day=%day%

set today=%month%%day%
echo today is %today%


'Programming' 카테고리의 다른 글

Web Sequence diagram blog에 넣기  (0) 2015.04.16
Popcorn Time clone해서 build하기  (0) 2015.04.14
BAT/CMD windows script to EXE executable converter  (0) 2015.03.17
Bash shell script  (0) 2015.03.14
syntax highlight test  (0) 2015.03.03
Posted by 쁘레드
Programming2015. 3. 3. 07:38

test 


class fredtest 
{
    getInstance();
private:
    int a;
    int b;

}
int test_function(char* str)
{
    int len = strlen(str);
    if( len < 0 )
        printf("Error on strlen");
    return 1;
}

*Fred가 사용할 부러쉬 종류

bash

cpp, c

css

diff ; diff or patch file

js ; javascript

perl

php

plain, text

ps ; powershell

py ; python

xml


참고링크:

ObjectC가 Apple머시기로 바뀐거 아닌가 싶다.

http://shinluckyarchive.tistory.com/489

http://cocosoft.kr/68

'Programming' 카테고리의 다른 글

Web Sequence diagram blog에 넣기  (0) 2015.04.16
Popcorn Time clone해서 build하기  (0) 2015.04.14
BAT/CMD windows script to EXE executable converter  (0) 2015.03.17
Bash shell script  (0) 2015.03.14
windows batch file tips  (0) 2015.03.14
Posted by 쁘레드