728x90

목동코딩: 코딩교육, 프로젝트수업

이번에 새로이 오픈할 프랫폼을 개발하면서 새롭게 느낀점이 있었다.

엔지니어 마인드로 살다보니, 데이타베이스를 뒤져서 원하는 데이터를 가져오면, 결과를 바로 화면에 표시 하는 줄 알았는데, 마케팅 마인드는 약간의 뜸을 들여야할 필요성을 느꼈다. 그래서 5초간 대기 화면이 나오고 결과를 보여주는 대기 기능을 만들었다

 

<!--로딩바-->
<div id="loading" style="margin-left: 0px;">
    <img src="./images/buttons/loading.gif">
    <p>결과를 준비중입니다. 잠시기다려주세요....</p>
</div>

<div>
    <h3 id="getDB" style="display:block;padding:1em 0.2em;text-align:left;"></h3>
</div>

$(document).ready(function(e) {
    setTimeout(function() {
        $("#getDB").html("결과 보기를 크릭해 주세요");    
        $("#Code<?=$LEVEL_3?>").css('display',"block")          
        $("#loading").css('display',"none")          
    }, 5000 );
});

 

목동코딩, 무인스터디카페 키오스크개발, 프로젝트 코딩교육
목동코딩, 무인스터디카페 키오스크개발, 프로젝트 코딩교육
목동코딩, 무인스터디카페 키오스크개발, 프로젝트 코딩교육
목동코딩, 무인스터디카페 키오스크개발, 프로젝트 코딩교육
목동코딩, 무인스터디카페 키오스크개발, 프로젝트 코딩교육

728x90
728x90

목동코딩 : 무인키오스크 개발

이번에 개발해서 납품한, 무인스터디카페 시스템이 실제 운영을 시작했습니다.

개발을 하면서 운영 방식이 조금씩 바뀌다 보니, 미쳐 생각하지 못한 에러를 바로 잡느라고 2일 정도를 추가로 현장에서 작업을 했습니다.

이제 실제 모드로 바꾸어서 , 방문 하는 학생들이 회원 등록하고, 결제하고 , 자리 설정을 하고 하는 장면을 보니까 마음이 뿌듯합니다 ㅎㅎ.

부디 큰 에러 없이 시스템이 운영 되기를 바랍니다.

시스템이라는 말이 유기적인 연관성을 가지고 운영 된다는 말인 것 처럼, 이번에 개발한 무인스터디카페 시스템도 여러가지 모듈이 연결된 구성이라서 나름 재밌는 프로젝트 였습니다.

마스크 덕분에 모자이크 처리는 안 해도 되네요 ㅎㅎ.

 

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

 

 

728x90
728x90

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

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

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

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

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

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

 

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

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

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

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

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

 

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

 

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

 

 

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

 

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

 

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

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

안드로이드 앱을 개발하면서 아래 사진과 같은 체크박스를 만들고 싶어서, 구글 검색을 통해 체크박스 크기를 변경하는 방법을 찾다보니, background에 이미지를 넣어서 하는 방법이 있어서 정리해 둡니다.

 

 

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 체크박스 해제상태 -->
    <item android:drawable="@drawable/check_before" android:state_checked="false" />
    <!-- 체크박스 선택상태 -->
    <item android:drawable="@drawable/check_drop" android:state_checked="true" />
    <!-- 체크박스 기본상태 -->
    <item android:drawable="@drawable/check_before" />
</selector>

 

 

<CheckBox

android:layout_width="40dp"

android:layout_height="40dp"

android:text=""

android:id="@+id/term"

android:layout_marginLeft="76dp"

android:gravity="center"

android:button="@android:color/transparent"

android:background="@drawable/check_box"

android:layout_alignParentRight="true" />

 

목동코딩 안드로이드 앱개발 코딩교육

 

 

목동코딩 안드로이드 앱개발 코딩교육

 

 

목동코딩 안드로이드 앱개발 코딩교육

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

목동코딩,코딩교육

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
728x90

추석을 잊은 그대에게....

오늘이 추석이라는 명절인가 보다...

가만히 생각해 보니 내가 살아온 삶에 명절이 있었나 싶다 ㅎㅎ.

요즘 많은 사람들이, 조금 더 휴일을 갖고자 노력을 한다면 , 내가 2~30대 시절에는 일년에, 한 360일은 일을 했던 거 같다. 그 6일 정도도 집안 행사가 이유 였던 거 같다.

23세때 아버지 사고난 후 시작했던 우유 배달도 휴일이 따로 없었고, 당구장 청소도 명절이 따로 없었던 거 같다. 명절날도 일찍이 차례를 지내고 청소하러 갔던 기억이 난다.

세월이 많이 흐른 오늘도 역시 프로젝트 마무리 하느라 밥 생각도 없이 프로그램을 짜고 있다 ㅎㅎ . 옆 책상에선 거래처 팀장님도 자신의 일을 마무리 하느라 열심히 키보드를 두두린다.

아인쉬타인이 이런 애기를 했단다. "어제와 오늘을 똑같이 살면서, 내일이 나아질거를 기대한다면 , 그건 정신병의 초기증상" 이라고 ...

그런 거 보면 난 아직 정신병이 시작되지는 않은 거 같다 ㅎㅎ.

요즘은 프로그래밍 언어 하나를 가지고는 버틸 수 없는 시대가 되었다........

 

728x90

+ Recent posts