c언어 현재 날짜 및 시간 출력

프로그래밍/C, C++|2020. 9. 14. 11:11
반응형

# vi test.c


#include <stdio.h>

#include <time.h>

#include <sys/timeb.h>

#include <sys/time.h>


int main ()

{

        struct timeval tv;

        struct timezone tz;

        struct tm *tm;

        gettimeofday(&tv, &tz);

        tm = localtime(&tv.tv_sec);


        printf("%04d-%02d-%02d %02d:%02d:%02d.%06d\n", tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, tv.tv_usec);


        return 0;

}



# gcc test.c -o test


# ./test
2020-09-14 11:10:59.496912


반응형

댓글()

PHP 로 Excel 파일 읽기

프로그래밍/PHP|2020. 8. 21. 08:36
반응형

[출처1] http://www.joshi.co.kr/index.php?mid=board_EudV58&page=7&document_srl=293319

[출처2] https://wickedmagic.tistory.com/584


출처의 내용을 진행하며 제가 필요한 내용으로 수정 하였습니다.



1. PHP 설치 필수 모듈 설치 (Ubuntu 18.04 기준)


# apt install php7.2-zip php7.2-xml php7.2-gd



2. PHPExcel-1.8.0 다운로드


https://github.com/PHPOffice/PHPExcel 에 접속해 압축파일을 통째로 다운로드 받고

소스 최상위 디렉토리에 압축해제 하면 아래와 같은 디렉토리가 생성 됩니다.


./PHPExcel-1.8.0



3. Excel 파일 업로드


아래 내용으로 file.xlsx 파일을 만들어서 소스 최상위 디렉토리에 업로드 했습니다.

1

아무개 

10

 2

귀요미

12 



4. Excel 읽는 PHP 코드 생성


# vi excel_upload.php


<html>

<form enctype="multipart/form-data" action="./excel_read.php" method="post">

<table border="1">

<tr>

<th style="background-color:#DCDCDC">파일</th>

<td><input type="file" name="excelFile"/></td>

</tr>

<tr>

<th style="background-color:#DCDCDC">등록</th>

<td style="text-align:center;"><input type="submit" value="업로드"/></td>

</tr>

</form>

</html> 



# vi excel_read.php


<?

require_once "./PHPExcel-1.8.0/Classes/PHPExcel.php"; // PHPExcel.php을 불러와야 하며, 경로는 사용자의 설정에 맞게 수정해야 한다.

$objPHPExcel = new PHPExcel();

require_once "./PHPExcel-1.8.0/Classes/PHPExcel/IOFactory.php"; // IOFactory.php을 불러와야 하며, 경로는 사용자의 설정에 맞게 수정해야 한다.


//$filename = './file.xlsx'; // 서버에 올려진 파일을 직접 지정할 경우


// excel_upload.php 파일을 이용해 업로드 한 경우

$filename = $_FILES['excelFile']['tmp_name'];


try {

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

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


    // 읽기전용으로 설정

    $objReader->setReadDataOnly(true);


    // 엑셀파일을 읽는다

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


    // 첫번째 시트를 선택

    $objExcel->setActiveSheetIndex(0);

    $objWorksheet = $objExcel->getActiveSheet();

    $rowIterator = $objWorksheet->getRowIterator();

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

               $cellIterator = $row->getCellIterator();

               $cellIterator->setIterateOnlyExistingCells(false);

    }


    $maxRow = $objWorksheet->getHighestRow();


    for ($i = 0 ; $i <= $maxRow ; $i++) {

               $no = $objWorksheet->getCell('A' . $i)->getValue(); // A열

               $name = $objWorksheet->getCell('B' . $i)->getValue(); // B열

               $age = $objWorksheet->getCell('C' . $i)->getValue(); // C열

               echo $no . ", " . $name . ", " . $age . "<br>";

    }

}


catch (exception $e) {

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

}

?>



반응형

댓글()

리스트뷰 (listview) 구분선 제거

프로그래밍/Android (Java)|2020. 7. 31. 16:57
반응형

자동으로 구분선이 생기므로 아래 옵션을 이용해 없애줍니다.


<ListView

    android:id="@+id/lv"

    android:dividerHeight="0px"

    android:divider="#FFFFFF" />



반응형

댓글()

안드로이드 상태바 없애기 (시계, 알림 아이콘 부분)

프로그래밍/Android (Java)|2020. 7. 24. 09:42
반응형
안드로이드 상태바를 없애 화면을 좀 더 넓어 보이게 할 수 있습니다.

// 상태바 없애기 (안드로이드 상단 시간, 알림 아이콘 부분)
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.activity_main); // 이것 전에 사용해야 함




반응형

댓글()

마우스 오버 이미지 미리보기 (썸네일 확인)

반응형

동적으로 이미지 리스트를 생성 할때 on을 사용하여 이미지 확대 하는 소스 입니다.

body 에 p 태그를 선언하고 해당 테그 안에 이미지를 넣어 보여주는 소스 입니다.


<html>

    <head>

        <title>Test</title>

        <script type="text/javascript" src="http://code.jquery.com/jquery.js"></script>

        <script type="text/javascript">

            $(document).ready(function() {

                 

                var xOffset = 10;

                var yOffset = 30;


                $(document).on("mouseover",".thumbnail",function(e){ //마우스 오버시

$("body").append("<p id='preview'><img src='"+ $(this).attr("src") +"' width='400px' /></p>"); //보여줄 이미지를 선언  

$("#preview")

.css("top",(e.pageY - xOffset) + "px")

.css("left",(e.pageX + yOffset) + "px")

.fadeIn("fast"); //미리보기 화면 설정 셋팅

});

$(document).on("mousemove",".thumbnail",function(e){ //마우스 이동시

$("#preview")

.css("top",(e.pageY - xOffset) + "px")

.css("left",(e.pageX + yOffset) + "px");

});

$(document).on("mouseout",".thumbnail",function(){ //마우스 아웃시

$("#preview").remove();

});

                 

            });

        </script>

            

<style>

/* 미리보기 스타일 셋팅 */

#preview{

z-index: 9999;

position:absolute;

border:0px solid #ccc;

background:#333;

padding:1px;

display:none;

color:#fff;

}

</style>

    </head>

     

    <body>

        <img src="https://www.gstatic.com/webp/gallery/1.sm.jpg" class="thumbnail" height='50px' />

    </body>

</html>


[미리보기]

참고: http://cssglobe.com/easiest-tooltip-and-image-preview-using-jquery/



[출처] https://huskdoll.tistory.com/m/292?category=559073

반응형

댓글()

날짜와 시간 비교 후 페이지 로딩 중지하기

프로그래밍/PHP|2020. 7. 20. 14:28
반응형

<?

$diff_snap = strtotime("2020-07-20 10:20:30");

$diff_now = strtotime(date("Y-m-d H:i:s"));

$diff = $diff_now - $diff_snap;


if ($diff >= 600) { // 10분 이상 차이 날 경우 페이지 종료 (이하 코드 실행 안함)

        echo "받은 시간" . $diff_snap . "<br>";

        echo "현재 시간" . $diff_now . "<br>";

        echo "차이는 " . $diff . " 초 입니다.";

        exit();

}

?>



반응형

댓글()

jQuery 한글/영어 byte 체크해서 자르기

반응형

[출처] https://dev.uhoon.co.kr/entry/jQuery-한글영어-byte-체크해서-자르기 [Dev 저장소]

[원문] http://blog.naver.com/yesdouble/130152964039



test.html


<!DOCTYPE html>

<html>
<head>
    <title>한글/영어 byte 체크해서 자르기</title>
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
    <meta http-equiv="content-type" content="text/html;charset=UTF-8">
</head>
<body >
<script type="text/javascript">
    $(function () {
        $('.remaining').each(function () {
            // count 정보 및 count 정보와 관련된 textarea/input 요소를 찾아내서 변수에 저장한다.
            var $maxcount = $('.maxcount', this);
            var $count = $('.count', this);
            var $input = $("#contents");
 
            // .text()가 문자열을 반환하기에 이 문자를 숫자로 만들기 위해 1을 곱한다.
            var maximumByte = $maxcount.text() * 1;
            // update 함수는 keyup, paste, input 이벤트에서 호출한다.
            var update = function () {
                var before = $count.text() * 1;
                var str_len = $input.val().length;
                var cbyte = 0;
                var li_len = 0;
                for (i = 0; i < str_len; i++) {
                    var ls_one_char = $input.val().charAt(i);
                    if (escape(ls_one_char).length > 4) {
                        cbyte += 2; //한글이면 2를 더한다
                    } else {
                        cbyte++; //한글아니면 1을 다한다
                    }
                    if (cbyte <= maximumByte) {
                        li_len = i + 1;
                    }
                }
                // 사용자가 입력한 값이 제한 값을 초과하는지를 검사한다.
                if (parseInt(cbyte) > parseInt(maximumByte)) {
                    alert('허용된 글자수가 초과되었습니다.\r\n\n초과된 부분은 자동으로 삭제됩니다.');
                    var str = $input.val();
                    var str2 = $input.val().substr(0, li_len);
                    $input.val(str2);
                    var cbyte = 0;
                    for (i = 0; i < $input.val().length; i++) {
                        var ls_one_char = $input.val().charAt(i);
                        if (escape(ls_one_char).length > 4) {
                            cbyte += 2; //한글이면 2를 더한다
                        } else {
                            cbyte++; //한글아니면 1을 다한다
                        }
                    }
                }
                $count.text(cbyte);
            };
            // input, keyup, paste 이벤트와 update 함수를 바인드한다
            $input.bind('input keyup keydown paste change', function () {
                setTimeout(update, 0)
            });
            update();
        });
    });
</script>
<div>
<textarea rows="5" cols="50" id="contents"/></textarea>
</div>
<span class="remaining">
    <span class="count">0</span>/<span class="maxcount">80</span>byte(한글 40자, 영어 80자)
</span>
</body>
</html> 



반응형

댓글()

MySQL 3개 테이블 조인 SAMPLE

프로그래밍/PHP|2020. 7. 10. 13:31
반응형

SELECT * FROM Country

    JOIN CountryLanguage ON Country.Code=CountryLanguage.CountryCode

    JOIN City ON Country.Code=City.CountryCode

 

[출처] blog.naver.com/my0biho/220411576884

반응형

댓글()

페이지 로딩 완료 후 alert 출력하기

반응형

아래 1번 코드를 문서의 아무 곳에나 넣어도 동작합니다.

그러나 브라우저나 PC 에 따라 소스가 잘 동작하지 않는 경우

2번 예제로 지연 출력을 시키는 방법도 있습니다.



1번


<script>

    window.onload = function() {

        alert("로딩이 완료 되었습니다.") ;

   };

</script>



2번


<script>

            window.setTimeout(function(){

                alert("로딩이 완료 되었습니다.");

            }, 200);  // 0.2 초 지연 후 출력

</script>


반응형

댓글()

파일 사이즈 출력 및 단위 자동 변경

프로그래밍/PHP|2020. 7. 3. 10:38
반응형

// 대상 파일 크기 확인

$file_size = filesize ("files/test.zip");


// 파일 크기에 따른 단위 변경

if($file_size < 1024) {

    $file_size = number_format($file_size * 1.024) . ' B';

} else if ($file_size > 1024 && $file_size < 1024000) {

    $file_size = number_format($file_size * 0.001024) . ' KB';

} else if ($file_size > 1024000) {

    $file_size = number_format($file_size * 0.000001024) . ' MB';

}


// 파일 크기 출력

echo $file_size;



반응형

댓글()

input 찾아보기 스타일 변경 (두가지 스타일 예제)

반응형

아래 소스코드로 파일을 만들어 실행해보면 확인할 수 있습니다.

소스는 크게 CSS, HTML, JavaScript 부분으로 나뉩니다.


[ 첫번째 스타일 ]


이것은 클릭 또는 드래그&드롭 기능을 제공합니다.


test.html


<style type="text/css">

input[type="file"] {

  position: absolute;

  left: 0;

  opacity: 0;

  top: 0;

  bottom: 0;

  width: 100%;

}


div {

  position: absolute;

  top: 0;

  bottom: 0;

  width: 100%;

  display: flex;

  align-items: center;

  justify-content: center;

  background: #ccc;

  border: 3px dotted #bebebe;

  border-radius: 10px;

}


label {

  display: inline-block;

  position: relative;

  height: 100px;

  width: 400px;

}


div.dragover {

  background-color: #aaa;

}

</style>



<label for="test">

  <div>Click or drop something here</div>

  <input type="file" id="test">

</label>

<p id="filename"></p>



<script>

var fileInput = document.querySelector('input[type=file]');

var filenameContainer = document.querySelector('#filename');

var dropzone = document.querySelector('div');


fileInput.addEventListener('change', function() {

filenameContainer.innerText = fileInput.value.split('\\').pop();

});


fileInput.addEventListener('dragenter', function() {

dropzone.classList.add('dragover');

});


fileInput.addEventListener('dragleave', function() {

dropzone.classList.remove('dragover');

});

</script> 


[출처] https://jsfiddle.net/t7w1sovq/



[ 두번째 스타일 ]


이것은 Jquery 까지 사용합니다.


test2.html


<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>


<style type="text/css">

body {

    background-color:Black;

}


div.upload {

    background-color:#fff;

    border: 1px solid #ddd;

    border-radius:5px;

    display:inline-block;

    height: 30px;

    padding:3px 40px 3px 3px;

    position:relative;

    width: auto;

}


div.upload:hover {

    opacity:0.95;

}


div.upload input[type="file"] {

    display: input-block;

    width: 100%;

    height: 30px;

    opacity: 0;

    cursor:pointer;

    position:absolute;

    left:0;

}

.uploadButton {

    background-color: #425F9C;

    border: none;

    border-radius: 3px;

    color: #FFF;

    cursor:pointer;

    display: inline-block;

    height: 30px;

    margin-right:15px;

    width: auto;

    padding:0 20px;

    box-sizing: content-box;

}


.fileName {

    font-family: Arial;

    font-size:14px;

}


.upload + .uploadButton {

    height:38px;

}

</style>



<form action="" method="post" enctype="multipart/form-data">

    <div class="upload">

        <input type="button" class="uploadButton" value="Browse" />

        <input type="file" name="upload" accept="image/*" id="fileUpload" />

        <span class="fileName">Select file..</span>

    </div>

    <input type="button" class="uploadButton" value="Upload File" />

</form>



<script>

$('input[type=file]').change(function(e) {

    $in = $(this);

    $in.next().html($in.val());

    

});


$('.uploadButton').click(function() {

    var fileName = $("#fileUpload").val();

    if (fileName) {

        alert(fileName + " can be uploaded.");

    }

    else {

        alert("Please select a file to upload");

    }

});

</script> 


[출처] http://jsfiddle.net/umhva747/



반응형

댓글()