728x90

 

목동코딩 : 날짜계산

​

지금 진행하는 프로젝트가 시자을 계산하여 요금을 계산하는 업무이다 보니, 이번 기회에 Mysql에서 시간, 날자 등을 계산하는 방법을 정리해둔다.

SELECT TIMESTAMPDIFF(SECOND, '2021-01-01', '2021-01-02');
SELECT TIMESTAMPDIFF(MINUTE, '2021-03-01', '2021-03-31');
SELECT TIMESTAMPDIFF(HOUR, '2021-03-01', '2021-03-31');
SELECT TIMESTAMPDIFF(DAY, '2021-03-01', '2021-03-31');
SELECT TIMESTAMPDIFF(WEEK, '2021-03-01', '2021-03-31');
SELECT TIMESTAMPDIFF(MONTH, '2021-03-01', '2021-03-31');
SELECT TIMESTAMPDIFF(QUARTER, '2021-03-01', '2021-03-31');
SELECT TIMESTAMPDIFF(YEAR, '2020-01-01', '2021-03-31');
SELECT TIMESTAMPDIFF(QUARTER, '2020-01-01', '2021-03-31');

SELECT DATEDIFF('2020-01-01 00:009:00', '2021-03-31 00:00:00');
Declare TIME_DIFF int;

SELECT TIMESTAMPDIFF(SECOND, '2021-01-01', '2021-01-02') into TIME_DIFF ;

이렇게 계산한 TIME_DIFF 를 계산할 Table에 반영한다

 

 

 

목동코딩 코딩교육

728x90
728x90

목동코딩: 내발산동 그랑데 무인스터디카페 오픈

2021.10.1 토요일 , 언택트메이커스 2호점을 오픈했습니다.

시스템 준비는 1호점을 위해서 시작했는데 실 적용은 2호점을 먼저 하게 되었습니다 ㅎ.

음악을 잘 모르는 나 이지만, 음악으로 설명하면 오늘 오케스트라 공연을 한거와 비슷할거 같습니다.

키오스크를 통한 사용요금 결제를 하고, 자리 설정을 통한 출입을 통제하고, 동시에 사용할 자리의 전등 제어까지 운영 시나리오에 따라서 시스템 테스트를 했습니다.

테스트 과정을 지켜본 관계자 분들이 코딩의 신기함에 얼굴에 미소가 번져갔습니다. 예전에 제회사 로고를 인쇄한 트럭들을 길에서 볼때의 설레임이 생각 났습니다. 이 시스템도 많은 회원들이 사용 하기를 바랍니다.

 

많은 프로젝트가 개발비를 들인다고 모두 만족할 만한 성과를 내지는 못하는데, 나름 만적한 모습 이었습니다.

시스템 테스트를 하는 동안, 내 머리속은 바쁘게 돌아 갔습니다. 오케스트라를 지휘하면서 악기 소리가 제대로 나느지도 체크하고, 그러면서 제대로 하모니가 이루어지는 지를 점검했습니다.

전과정을 혼자서 만들었기에 오히려 편했다는 생각입니다. 테스트 과정에서 보완 할 문제를 내 머리속에서만 해결하면 되니까 다른 팀 과의 인터페이스가 필요 없었습니다.

카드결제, 출입통제, 전등통제, 카톡을 통한 알림 등등이 통합된 시스템입니다. 이렇게 언택트로 ,하나 둘씩 제가 관리해야할 업체가 늘어 가는 모습에 만족한 하루 였네요.....

조만간 간석점도 오픈을 해야하니 이제 3호점에서 운영할 시스템을 또 준비해야겠습니다. 각각의 점포의 운영 방식이 조금씩 다르다 보니, 적용할 무인시스템도 약간의 커스터마이징이 필요하네요. 그래도 모 어때요 그게 다 돈인데 ㅎㅎㅎ.

 

목동코딩 코딩교육 키오스크개발
목동코딩 코딩교육 키오스크개발
목동코딩 코딩교육 키오스크개발
목동코딩 코딩교육 키오스크개발

 

목동코딩 코딩교육 키오스크개발
목동코딩 코딩교육 키오스크개발
목동코딩 코딩교육 키오스크개발

 

 

목동코딩: 그랑데 스터디카페 키오스크운영 테스트

 

목동코딩: 그랑데 스터디카페 키오스크운영 테스트

 

728x90
728x90

목동코딩학원 : 코딩교육

방배동 친구의 후배가 전시회에 부스로 참여하는데, I.T 를 융합을 어떤식으로 하면 좋을지를 애기 하기로 해서 아침일찍 집에서 코엑스로 출발했습니다. 막 집을 나가려는데 경주에 거주하고, 지금은 아산에서 사업을 하는 친구가 전화와서 교대를 온다기에 함께 코엑스에서 만났습니다.

전시회를 둘어보면서 저는 제 I.T 능력으로 어느정도의 컨텐트를 Cover 하는지를 체크했습니다.

ㅎㅎ 아직은 더 먹고 살 수 있다는 생각에 감사 했습니다.

어휴 나 코딩 안했으면 무엇을 하고 있을지 생각 하면 깜깜 합니다.

얼마전 아들한테, "아빠는 80살 까지만 코딩 할련다" 했더니, "아빠! 나 그럼 50살 이야 하기에 깜짝 놀랐습니다. "나만 나이 먹는게 아니구나.... ㅠㅠ, 아들이 50살이 된다는 생각이 드니 슬퍼집니다 ㅎㅎ ㅠㅠ.

열심히 플랫폼을 만들어서 , 컴퓨터 전공한 아들이 더욱 확장하도록 , 아빠 찬스를 줄려고요... 이것도 문제가 되나? ㅎㅎ

에이 정치는 어차피 안할건데 모...

전시회를 둘러보니 교육 컨텐츠의 변화가 보입니다.

2000년도에 말리이지아 프로젝트에 참여할때, 가방 하나 끌고서, 전세계의 납품된 자신의 기계를 유지보수하러 출장다니는, 일본 기술자의 모습이 갑자기 생각납니다.

빨리 코로나로 인한 여행 제한이 풀리고 누군가가 "네가 가라 하와이" 하면 "네~~" 하고 빨리 다녀올려고요 ㅎㅎ.

 

목동코딩 코딩교육
목동코딩 코딩교육

728x90
728x90

목동코딩학원 : 안드로이드 교육

안드로이드로 앱을 개발하다 보면, 안드로이드에서 제공하는 Toast 메시지로만 처리하기에는 조금 부족한 면이 있다. 그래서 Toast 역시 커스터마이징 해서 표시되는 위치나 글자 크기, 색상 등을 변경해서 사용하곤 했다.

이번에는 커스텀 다이얼로그를 만들어서 이미지 까지 포함하는 메시지를 사용하는 방법을 정리해둔다.

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="500dp"
    android:layout_height="500dp"
    android:gravity="center"
    android:layout_marginBottom="30dp"
    android:layout_marginTop="50dp"
    android:background="#ffffff"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:background="#ffffff"
        android:orientation="vertical">

        <TextView
            android:id="@+id/custom_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:text="이용약관"
            android:textSize="40dp" />

        <TextView
            android:id="@+id/custom_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:text="확인합니다"
            android:textSize="20dp" />

        <ImageView
            android:id="@+id/custom_image"
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:src="@drawable/common_member" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        android:layout_marginTop="20dp"
        android:weightSum="100">

        <Button
            android:id="@+id/pbutton"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="50"
            android:text="확인" />

        <Button
            android:id="@+id/nbutton"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="50"
            android:text="취소" />
    </LinearLayout>
</LinearLayout>

 

목동코딩학원 코딩교육 키오스크개발

 

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //다이얼로그 밖의 화면은 흐리게 만들어줌
        WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
        layoutParams.flags = WindowManager.LayoutParams.FLAG_DIM_BEHIND;
        layoutParams.dimAmount = 0.8f;
        getWindow().setAttributes(layoutParams);

        setContentView(R.layout.custom_dialog);

        full_screen();

        //셋팅
        mTitle = (TextView)findViewById(R.id.custom_title);
        mText = (TextView)findViewById(R.id.custom_text);
        mImage = (ImageView)findViewById(R.id.custom_image);

 
        mTitle.setText(sTitle);
        mText.setText(sText);
        mImage.setImageResource(R.drawable.common);        

        mPositiveButton=(Button)findViewById(R.id.pbutton);
        mNegativeButton=(Button)findViewById(R.id.nbutton);

        //클릭 리스너 셋팅 (클릭버튼이 동작하도록 만들어줌.)
        mPositiveButton.setOnClickListener(mPositiveListener);
        mNegativeButton.setOnClickListener(mNegativeListener);
    }
String title = "구매등록";
String text1 = "이용권 구매를 완료했습니다";
customDialog = new CustomDialog(AmountActivity.this,positiveListener,negativeListener);
customDialog.setsTitle(title);
customDialog.setsText(text1);
customDialog.show();

목동코딩 언택트 코딩교육

 

728x90
728x90

목동코딩: 코딩교육

이번 프로젝트는 조금 일반적이지 않은 프로젝트이다. 쇼핑몰과 비슷한데 공급처별로 보여주고 집계를 해서 주문을 하는 프로젝트이다.(아래화면)

그러다 보니 표시되는 input 태그에 각각의 공급처가 표시 되어야 한다. 그리고 주문시에는 각 공급처 별로 주문저장을 해야한다. 그래서 <input ss="Brand"/> 라는 커스텀 태그를 만들어서 사용하였다.

 

 

<script>
    function toOrder() {
        var number_input = $("input[ss=Brand]");
        console.log(number_input);

         
        $.each(number_input, function(index, value) {
            console.log('IDX :' + index);
            console.log(value);
            console.log('ID =' + $(value).attr("id"));
            console.log('NAME =' + $(value).attr("name"));
            console.log('VALUE =' + $(value).val());
        });
}
</script>

<input ss="Brand" name="Brand"  value="100">

이제는 split 하여서 사용하면 되겠다

 

목동코딩 코딩교육

728x90
728x90

목동코딩: 코딩교육

Php로만 프로젝트를 하다가, 갑자기 NGINX 에서 Kestrel 로 리버싱하여서 Asp.net mvc 프레임으로 개발하면서 많은 고생을 하고 있다. 그중에 SQL에 익숙한 나로선 해결 방법을 찾는데 많은 고생을 한다. 그래서 이미 알고 있는 사람한테는 웃음을 짓겠지만 나는 추후에 보기 위해서 기록한다

 

            FranchiseePoint d = new FranchiseePoint();

            d.RegiDate = c.RegiDate;
            d.FranchiseeId = c.FranchiseeId;
            d.point = c.point;
            d.비고 = c.비고;
            DB.FranchiseePoint.Add(d);

            DB.SaveChanges();

 

 

http://nooh-system.com/

목동코딩: 코딩교육 라즈베리교육

728x90
728x90

목동코딩: 추석 연휴에 자녀교육에 대하여....

많은 부모님이 이렇게 애기를 합니다.

"다 너 잘되라고 내가 이렇게 한다" 라고요.

그 말은 아이들에게 별로 영향을 미치지 않습니다. 아니 오히려 역으로 영향이 작용합니다.

부모님들은 할만큼 하다가 "나도 모르겠다 너 인생 알아서 해라!" ㅎㅎㅎ.

이랬다 저랬다 합니다. 그리고 그런 행동이 교육이고 애정이라고 생각을 합니다.

이렇게 자녀에게 행동하면 , 자식과의 관계도 멀어지고, 교육 성과도 없습니다.

그리고 공부에 조건을 걸면 안됩니다. "가령 1등하면 00을 해주겠다" 등등 .

그러면 자녀와 조건 관계가 형성이 되고 , 나중에 서로가 갑을 관계로 변질될 확률이 많아집니다.

제 경우에는 공부를 잘하던, 못하던 아들과 나의 관계에는 아무 영향이 없다는 마음으로 초등, 중등, 고등 까지를 유지해왔습니다.

아들이, 고3 때 수능 보기 1주일전, 내가 물었습니다 그냥 별 의미 없이 "공부 잘돼가냐"고요 ㅎㅎ.

막 울더군요 "1주일 뒤면 수능을 보고 , 나중에 점수가 나올텐데 그 점수를 보고 실망할 아빠 생각하면 잠이 안온다" 하면서 울더군요.

그때 나는 이렇게 말했습니다 "아냐 ! 아빠는 전혀 안그래, 정말 내 생각만 한다면 너 대학 안가고 내옆에 있는게 난 좋다"," 네가 공부를 하느라 떨어져 살면서 1~2년에 , 아니면 더 긴 시간동안에 얼굴 한번 보기 힘든 거 보다, 내 옆에 있으면서 결혼식도 같이 가고, 막걸리도 사다주고, 담배도 사다주는 아들이 난 정말 좋다, 네 생각 안하고 순전히 내 생각만 한다면 진심이다 ....".

이렇게 애기 하면서 내가 살아보니 " 인생은 잘 안되게 꼭 안 좋은거만은 아니더라" 라고 애기 해줬습니다.....

그 대신 점수에 맞추어 의미 없는 대학을 가지 말고, 군대를 먼저 가느게 어떠니?

그리고 1년뒤 입대를 했습니다

...

...

아들이 군대를 제대하고 조금 쉬더니 나한테 이렇게 애기 했습니다.

"아빠! 나 공부해도 되겠어요?" 그래서 그러라고 했습니다.

초등, 중등, 고등 12년 기간을 공부를 안하고 게임만 하면서 세월을 보낸 아들이 공부를 하겠다고 애기를 했습니다 ㅎㅎ.

정말 무섭게 공부를 하더군요 머리가 아프다고 울면서도 1년간 공부를 했습니다.

그래서 정시로 대학을 들어갔습니다. 정시 모집 인원이 너무 적어서 내가 "이건 문제가 있는거 같어, 철들어서 나중에 공부 하려고 하는 학생들은 입학하기가 너무 힘들겠다".

그랬더니 멋진 말을 했습니다 " 아빠! 개들은 나놀때 공부 했쟎아요?" ㅎㅎ 그래서 멋지다 해줬습니다.

수능보기전 9월 모의 고사에서 00학원 문과1등을 하기도 했습니다.

대학에 입학했습니다.

국문과에... 그때부터 코딩을 공부하도록 필요성을 느끼게 자주 애기 했습니다.

그러던중 기회가 찾아 왔습니다. 다니던 대학의 컴퓨터 공학과에서 복수전공자를 모집했습니다. 그리고 지원을 하고 합격을 하였습니다.

그 아들이 올해 4학년이 되어서 졸업반이 되었습니다.

다행 스럽게 국문학, 컴퓨터공학 두개의 학위를 가지고 사회에 나갑니다.

이번 여름 방학에 I.T업체에서 인턴을 하며, 사회생활에 자신감을 얻었는지, 아들이 몇달전 이렇게 말했습니다 "아빠! 난 세상을 이렇게 살면 될거 같아요".

참 고마웠습니다. 수능 공부를 하면서 "아빠 한테 효도할려고 공부한다" 는 말이 생각나서....

남들이 무시할때 자식을 자랑스러워 하는 부모님이 되시기를.......

추석 연휴 마지막날

728x90
728x90

목동코딩,코딩교육

function deleteOerder(obj) {

   $("#" + obj.id).closest('tr').remove();
}

var row = "";
row = row + "<tr>";

row = row +
    "<td><input id='" + resArray[0] +
    "' name='ItemCode' class='btn btn-secondary' onclick='deleteOerder(this);' type='button' value='" +
    '삭제' +
    "' style='width: 80%;padding: 0;border-radius: 0.4rem;font-size: 1.45rem;border-color: white;'></td>";
row = row +
    "<td ><input name='DispLetter'  type='text' value='" + resArray[1] +
    "' style='width: 100%;' disabled></td>";
row = row + "<td ><input name='ItemName'  type='text' value='" + resArray[2] +
    "' style='width: 100%;' disabled></td>";
row = row + "<td ><input name='Price'  type='text' value='" + comma(resArray[3]) +
    "' style='width: 100%;text-align:right;padding-right:10px;' disabled></td>";
row = row +
    "<td ><input   name='Cnt' onchange='reCalcu();'  type='number' value='1' min='1' style='width: 100%;' ></td>";

row = row + "</tr>";
$('#orderItems').append(row);
var totSum1 = uncomma($('#buySum').val());
var totSum2 = uncomma(resArray[3]);
var totSum = (parseInt(totSum2) + parseInt(totSum1)).toString();

$('#buySum').val(comma(totSum));
          
});
728x90

+ Recent posts