황리단길 오롯 조용한 카페

와이프와 식사를 마친 후 아들 분유와 기저귀를 해결하기 위해 조용한 카페를 찾았어요. 

마침 오롯이라는 노란 문이 이쁜 카페가 눈에 보였는데 마침 손님이 아무도 없었어요. 

오롯 입구

사장님 혼자서 운영중이셨는데 와이프와 둘이서 메뉴를 보고선 와이프가 딸기 라테도 파네.라고 하길래 딸기 라테 2개를 시켰어요. 

메뉴

요즘 메뉴판 감성은 손으로 적은 메뉴판이라 생각이 되는데요. 부분부분 지워진 게 아쉽긴 했지만.. 메뉴판이 잘 보였어요. 

딸기라떼

딸기 라테 2개가 나왔는데 과자도 주셨어요. ㅎㅎ 

음료를 마신 시간보다 아들 케어한 시간이 더 길었던 거 같아요. 마침 카페에 손님도 없어서 다행이었지 뭐예요. 

카페 내부

카페는 그리 크지도 작지도 않았는데요. 조용히 담소를 나누기엔 좋은 장소라 생각되요. 

 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

황리단길 또바기 매콤 등갈비

또바기 입구

와이프와 토요일 오후 뒹굴뒹굴 거리다 포항으로 바람 세러 출발했는데 장모님이 포항엔 볼 게 없다고 연락이 왔어요. 

그래서 급히 행선지를 변경한 게 이미 울산은 지났고 경주 인근이라 경주 황리단길을 다녀왔어요. 

도착하니 마침 저녁시간이네요. 와이프와 황리단길 한 바퀴 돌았어요. 

황리단길

한 바퀴를 돌면서 어디 갈까 고민하다가 아기도 있고 해서 조용해 보였던 또바기로 갔어요. 

메뉴

메뉴에는 매콤 등갈비, 치즈 등갈비, 한우 짜글이 찌개, 뚝배기 소 불고기, 불고기 카레, 한우 된장찌개, 불고기 녹차 냉면 등이 있었는데요. 

저는 매콤 등갈비, 와이프는 치즈 등갈비를 시켰어요. 

반찬

반찬에 떡볶이가 있어서 분식점을 지나쳐올 때 먹고 싶다고 생각했었는데 ㅎㅎㅎ 웬일이래요 밑반찬에 포함되어 나오는 거 있죠?

공기밥
치즈등갈비

치즈등갈비는 매콤 등갈비에 치즈를 올려주는데요. 와이프는 맛있다면 아주 잘 먹더군요.

저는 매콤 등갈비를 먹으면서 고기가 모자랄 줄 알았는데 보기보다 양이 많아서 밥 한 공기를 뚝딱했어요. 

 

벽면

가게를 둘러보면 아날로그 감성이 돋보이는데요. 아주머니 혼자서 설거지에 조리까지 다하시더라고요. 

손님은 저 말고 다른 테이블에 한 팀이 있었는데요. 

양식당도 좋지만 이런 한식당도 좋은 거 같아요. 

 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

현대카드 울산 아웃백 스테이크하우스

일요일 저녁 와이프와 울산대공원에 들러 산책을 한 후 저녁을 먹으로 디오미오로 향했어요. 

음 예약을 안하고 갔는데 오늘 가게가 닫혀있네요. 그래서 급히 변경해서 아웃백 스테이크하우스로 이동했어요. 

직원분이 자리를 안내해줬는데 아기가 있어서 구석으로 안내해주셨어요. 아이가 스트레스 받지 않게 배려해주셨네요. 

메뉴를 고르는데 커플세트를 추천해주셨어요. 블랙라벨 랍스터 커플 세트를 주문했어요.

굽기는 바짝 구워달라고 했어요. ^^ 

랍스터 커플 세트

파스타는 알리오올리오를 고르고 에이트는 둘 다 오렌지로 했어요. 

식전빵을 먹고 기다리니 수프를 가져다주었어요. 식전 빵을 리필을 한번 하고 수프를 다 먹으니 커플세트가 나왔어요. 

 

불쇼

스테이크를 내어주기전에 치즈에 불을 붙여 쇼를 보여주셨어요. 

알리오 올리오

새우와 홍합이 들어간 알리오 올리오에요. 와이프는 명란젓 파스타와 맛이 비슷하다고 맛나다고 했어요.

그리고 보니 그런 거 같기도 했어요.

고기고기

둘이서 먹기엔 부족함이 없는 양이었던 거 같아요. 

저는 현대카드를 사용해서 일요일이라 20프로 포인트로 계산했어요. 

목요일에는 50프로 포인트를 사용할수 있는데 참고하시면 될 것 같아요. 

이상 아웃백스테이크하우스 후기였어요. 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

임산부전용석 늘려야 하지 않을까요?

임산부전용석

주말에 마트에 들렀어요. 우리아이 분유가 떨어져 급히 찾았는데요. 임산부 주차 스티커를 발부 받았기에 임산부 전용주차구역을 찾았어요. 

넓은 주차장에 장소가 두곳 뿐이었어요. 

거기에 비해 장애인 주차구역은 엄청 많기도 하고 많이 비워져 있었어요. 아무래도 임산부주차구역은 강제성이 없고

장애인 주차구역은 벌금으로 강제성이 있다보니 차이가 나는것이라고 생각해요. 

장애인주차구역

임산부 배려석을 늘려달라고 요청하는건 한계가 있을꺼라고 생각을 했어요. 차라리 그럴빠에야 임산부 주차스티커가 있는 분들은 장애인 주차구역에도 주차를 할수 있다면 어떨까? 라고 생각해봤어요. 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

기장 일광 카페 노크노크 다녀왔어요.

안녕하세요. 저녘에 기장 근교 일광에 있는 카페 노크노크에 다녀왔어요. 

건물사진

저녘이라 유리창 사이로 카페안이 보였는데요. 9시라는 늦은 시간이라 몇시까지 영업하는지 물어보았는데요.

11시까지 한다고하여 넉넉하게 쉬고 올수 있었어요. 

메뉴

주문을 하기위해 메뉴판을 보는데 어머나 요즘 유행하는 디지털메뉴판이네요. 선정리도 깔끔하고 화면도 화사한게 요즘 종이로 간단히 메뉴를 안내하는 감성과는 다른 디지털감성이 느껴졌어요. 

와이프와 저는 토마토주스와 바나나파인애플주스를 주문하였어요. 

음료사진

음료를 들고 2층으로 이동했어요. 바나나파인애플은 에쁜 노란색 토마토주스는 주홍색이네요. 

내부

카페내부가 너무 아름답고 깨끗하게 잘관리되고 있어요. 

질서정연하게 있는 카페 내부 모습이 잠시 쉬어 가는 이에게 휴식처가 되어 주는것 같아요. 

저녘이라 창밖으로 바다가 보이지 않는게 아쉽긴했지만 거울처럼 반사되어 좀더 대화를 하는데 집중이 잘되는느낌적인

느낌을 받았어요.

가게 꽃

나오면서 보니 가게에서 화단을 꾸며놓았어요. 

아스팔트 위라서 화분으로 예쁘게 꾸며 놓았는데요. 꽃도 봄이라는걸 아는지 활짝 피었네요. 

요즘 강변에 나가면 유채꽃이 활짝 피어 있는데요 그모습도 아름답지만 이렇게 조그마한 화분에 핀 꽃들도 아름답네요. 

 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

c# mysql maria db connect 연동

nuget

프로젝트를 생성한후 mysql.data를 설치해야해요.

참조로 추가해줄수 있고 nuget으로 설치가 가능해요. nuget에서 mysql검색하면 나오는데 버전은 상관없는것 같아요. 최신버전을 설치해줘요. 

설치후 mysql클래스 파일을 하나 생성해요. 

using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace find_chart
{
    class Mysql_util
    {
        private static Mysql_util instance = new Mysql_util();
        public static Mysql_util Instance
        {
            get
            {
                return instance;
            }
        }
        String connectionString;
        public Mysql_util()
        {
            String database = "연동db";
            String server = "localhost";
            String user = "내아디";
            String password = "코로나19";
            connectionString = "server="+ server 
                            + ";user="+ user 
                            + ";database="+ database 
                            + ";password="+ password;
            
        }

        public Boolean DB_INSERT(String sql)
        {

            var connection = new MySqlConnection(connectionString);
            Boolean return_value=false;
            try
            {
                Console.WriteLine("MySQL DB 연결 중...");
                connection.Open();
                MySqlCommand mySqlCommand = new MySqlCommand(sql, connection);
                if(mySqlCommand.ExecuteNonQuery() == 1)
                {
                    return_value = true;
                }                
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            connection.Close();
            return return_value;
        }
        public DataTable DB_SELECT(String sql)
        {
            var connection = new MySqlConnection(connectionString);
            Console.WriteLine("connectionString : " + connectionString);
            var mySqlDataTable = new DataTable();
            try
            {
                Console.WriteLine("SQL : " + sql);
                Console.WriteLine("MySQL DB 연결 중...");
                connection.Open();
                MySqlCommand mySqlCommand = new MySqlCommand(sql, connection);
                MySqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader();
                mySqlDataTable.Load(mySqlDataReader);

                
                StringBuilder output = new StringBuilder();
                foreach (DataColumn col in mySqlDataTable.Columns)
                {
                    output.AppendFormat("{0} ", col);
                }
                output.AppendLine();
                foreach (DataRow page in mySqlDataTable.Rows)
                {
                    foreach (DataColumn col in mySqlDataTable.Columns)
                    {
                        output.AppendFormat("{0} ", page[col]);
                    }
                    output.AppendLine();

                }
                Console.WriteLine(output.ToString());

                mySqlDataReader.Close();
            }
            catch (Exception ex)
            {   
                Console.WriteLine(ex.ToString());
            }
            connection.Close();
            return mySqlDataTable;
        }
    }
}

 

mysql_util 이라고 생성했어요. SELECT문과 UPDATE문을 사용할수 있게 만들었어요. 

사용할 폼에서 선언해요. 

Mysql_util mysql_util = Mysql_util.Instance; 

그리고 한번 테스트를 해보았어요. 폼에서 특정 검색언어를 받아서 조회해서 화면에 출력하는것이에요. 

쿼리는 이렇게 작성해서 테스트 해보았어요. 

 String sql = "SELECT * FROM tb_member WHERE uid = '" + input_text+"'";

var mySqlDataTable = mysql_util.DB_SELECT(sql);
StringBuilder output = new StringBuilder();
            String v_name = "손님";
            foreach (DataRow page in mySqlDataTable.Rows)
            {
                foreach (DataColumn col in mySqlDataTable.Columns)
                {
                    output.AppendFormat("{0} ", page[col]);
                }
                //DataColumn col = new DataColumn("uname");
                v_name = page["uname"].ToString();
                output.AppendLine();

            }
            Console.WriteLine(output.ToString());

출력물

출력이 잘되고 있네요. 

 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

summernote img 태그 이미지 첨부 스프링

https://summernote.org/ 에가면 사용법등 잘설명되어 있어요.

저는 스프링에서 summernote를 사용하는 방법에대해서 정리할거에요.

일단 summernote를 다운로드 받으세요. 사이트에 가면 잘나와 있어요. 

	<link href="${pageContext.request.contextPath}/resources/editor/summernote.css" rel="stylesheet">
	<script src="${pageContext.request.contextPath}/resources/editor/summernote.js"></script>
	<!-- include summernote-ko-KR -->
	<script src="${pageContext.request.contextPath}/resources/editor/lang/summernote-ko-KR.js"></script>
    

받으셨으면 페이지에 첨부를 해요. 

페이지를 시작하는 부분에 $(document).ready(function() {});

아래코드를 첨부해요.

$('#summernote').summernote({
	    lang: 'ko-KR', // default: 'en-US'
	   	height: 500,                 // set editor height
		minHeight: 500,             // set minimum height of editor
		maxHeight: 500,             // set maximum height of editor
		focus: true,                  // set focus to editable area after initializing summe
		callbacks: {
          onImageUpload: function(files, editor, welEditable) {
            for (var i = files.length - 1; i >= 0; i--) {
              sendFile(files[i], this);
            }
          },
          onChange: function(contents, $editable) {
              console.log('onChange:', contents, $editable);
             
              new_img_list=$(".note-editable .sn_insert_img");
              if(old_img_list!='' &&new_img_list!='')
              {
              	note_image_sync(old_img_list,new_img_list);
              }
              old_img_list= $(".note-editable .sn_insert_img");
              
            },
          onBlur: function() {
              console.log('Editable area loses focus');
            },
          onFocus: function() {
              console.log('Editable area is focused');
            }
        }
	  });
	$("#summernote").summernote({
	    onMediaDelete : function($target, editor, $editable) {
	         alert($target.context.dataset.filename);         
	         $target.remove();
	    }
	}); 

섬머노트 페이지에 가면 설명이 잘되어 있어서 설명은 안하겠어요. 여기서 onImageUpload 부분을 구현해줘야 해요. 

sendFile부분을 구현해야해요. 

function sendFile(file, el) {
    var form_data = new FormData();
    form_data.append('file', file);
    $.ajax({
      data: form_data,
      headers : {
			'X-CSRF-TOKEN': $("#csrf_token").val()
		},
      type: "POST",
      url: '/admin/chart/image_upload',
      cache: false,
      contentType: false,
      enctype: 'multipart/form-data',
      processData: false,
      async: false
    }).done(function( msg ) {
        if(msg.result=='IMAGE_OK')
        {
	        var url = msg.url;
	        id = msg.id;        
	        $(el).summernote('editor.insertImage', url,fun_summernote_imgcallback);
	        $('#imageBoard > ul').append('<li><img src="'+url+'" class="summernoteimg_obj" id="'+id+'" width="100%" height="100%"/></li>');
        }
        else
    	{
        	showmessage("알림","이미지 파일이 아닙니다.",2000,'');
    	}
    });
  }

저는 이미지 파일을 db에 보관을 해요. 

image_upload부분은 이렇게 해요. 

@ResponseBody
		@RequestMapping(value ="/image_upload", method=RequestMethod.POST, produces = "application/json;charset=UTF-8")
		public Map<String, String> update_file_upload(MultipartFile file,HttpServletRequest request)throws Exception{
			Map<String, String[]> paramMap=request.getParameterMap();
			Iterator keyData = paramMap.keySet().iterator();
			CommonData dto = new CommonData();
			while (keyData.hasNext()) {
			    String key = ((String)keyData.next());
			    String[] value = paramMap.get(key);
			    dto.put(key, value[0].toString());        
			    smsp.print_String("key : " + key + ", value : " + value[0].toString());
			} 
			MediaUtils MediaUtils = new MediaUtils();
			String formatName = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
			MediaType mType = MediaUtils.getMediaType(formatName);
			BufferedImage resizeimg;
			if(mType!=null)
			{
				BufferedImage srcImg = ImageIO.read(file.getInputStream()); 
				/*
			    if(srcImg.getWidth()>1920) //사이즈 조절 할때
			    {
			    	smsp.print_String("사이즈 조절 1920");
			    	resizeimg = Scalr.resize(srcImg
			    			, Scalr.Method.QUALITY
			    			, Scalr.Mode.FIT_TO_WIDTH
			    			, 1920
			    			,Scalr.OP_ANTIALIAS);
			    	ByteArrayOutputStream baos_re = new ByteArrayOutputStream();
			 	    boolean foundWriter_re = ImageIO.write(resizeimg, formatName.toLowerCase(), baos_re);
			 	    baos_re.flush();
			 		byte[] imageInByte_re = baos_re.toByteArray();
			 		dto.put("mt_contentlength",baos_re.toByteArray().length);
			 		dto.put("mt_data", imageInByte_re);
			 		baos_re.close();
			    }
			    else //사이즈 조절안할때.
			    */ 
			    {	
			    	smsp.print_String("사이즈 조절안함. 1920");
			    	dto.put("mt_contentlength",file.getBytes().length);
			 	    dto.put("mt_data", file.getBytes());
			    }	   
			    BufferedImage destImg = 
			            Scalr.resize(srcImg, 
			            		Scalr.Method.BALANCED, 
			                180,180
			                ,Scalr.OP_ANTIALIAS);
			    ByteArrayOutputStream baos = new ByteArrayOutputStream();
			    boolean foundWriter = ImageIO.write(destImg, "png", baos);
				baos.flush();
				byte[] imageInByte = baos.toByteArray();
				dto.put("mt_s_data", imageInByte);
				baos.close();
			}
			Map<String, String> result = new HashMap<>();
			result.put("result", "NOT_AN_IMAGE");
			if(mType!=null)
			{
			    dto.put("mt_filename",file.getOriginalFilename());
			    dto.put("mt_type",file.getContentType());
			    HttpSession session = request.getSession();
			    Member vo = (Member) session.getAttribute("login");
			    dto.put("mt_input_id", vo.idx);
			    dto.put("mt_update_id", vo.idx);
			    first_service.insert(dto, "File_UpDown_Mapper.insert_editor_image_upload");
			    int idx= first_service.listSearchCount(dto, "File_UpDown_Mapper.select_editor_image_upload");
				result.put("result", "IMAGE_OK");
			    String url = "/editor/get_editor_image/?idx="+idx;
			    String id = ""+idx;
			    result.put("url", url);
			    result.put("id", id);
			    }
		    return result;
		}

db에 바로 넣고 있어요. 

db의 테이블은 이렇게 생겼어요. 

CREATE TABLE `editor_image_table` (
  `idx` int(11) NOT NULL AUTO_INCREMENT COMMENT '게시물 고유키값',
  `mt_uuid` varchar(40) DEFAULT NULL,
  `mt_contentlength` int(11) DEFAULT NULL COMMENT '파일사이즈.',
  `mt_filename` varchar(100) DEFAULT NULL COMMENT '이름',
  `mt_type` varchar(100) DEFAULT NULL COMMENT '파일타입',
  `mt_data` longblob DEFAULT NULL COMMENT '파일내용',
  `mt_s_data` longblob DEFAULT NULL COMMENT '축소파일내용',
  `mt_input_wdate` datetime DEFAULT NULL COMMENT '입력일',
  `mt_input_id` bigint(20) DEFAULT NULL COMMENT '입력ID',
  `mt_update_wdate` datetime DEFAULT NULL COMMENT '최종수정일',
  `mt_update_id` bigint(20) DEFAULT NULL COMMENT '최종수정ID',
  PRIMARY KEY (`idx`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COMMENT='파일정보';

쿼리부분입니다. 

<!-- 이미지파일 업로드 -->
	<insert id="insert_editor_image_upload">	
		INSERT INTO editor_image_table (
						   mt_filename						
						 , mt_type
						 , mt_data
						 <if test="mt_s_data != null">
						 , mt_s_data
						 </if>
						 <if test="uid != null">
						 , mt_uuid
						 </if>
						 , mt_contentlength
						 , mt_input_wdate
						 , mt_input_id
						 , mt_update_wdate
						 , mt_update_id
						 ) 
				     VALUES (
				           #{mt_filename}				         	
				         , #{mt_type}
				         , #{mt_data}
				         <if test="mt_s_data != null">
				         , #{mt_s_data}
				         </if>
				         <if test="uid != null">
						 , #{uid}
						 </if>
				         , #{mt_contentlength}
				         , now()		          
				         , #{mt_input_id}
				         , now()
				         , #{mt_update_id}	         
				         )
	</insert>

이상입니다.

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

spring mvc 스프링 바코드 생성 하기 Zxing 사용법

안녕하세요. spring 프로젝트중 바코드를 생성해서 회원에게 날려줘야 할일이 생겼어요. 

그래서 지금 바코드 생성 관련해서 찾아보니 zxing를 사용한 방법이 공개되어 있었어요. 

일단 메이븐에서 라이브러리 다운로드를 위해 설정을 합니다. 

		<!-- https://mvnrepository.com/artifact/com.google.zxing/core -->
		<!-- 구글바코드 오픈소스 -->
		<dependency>
		    <groupId>com.google.zxing</groupId>
		    <artifactId>core</artifactId>
		    <version>3.4.0</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.google.zxing/javase -->
		<dependency>
		    <groupId>com.google.zxing</groupId>
		    <artifactId>javase</artifactId>
		    <version>3.4.0</version>
		</dependency>

그리고나서 컨트롤러 위치한 곳에 바코드 이미지를 받아가는 코딩을 합니다. 

import com.google.zxing.BarcodeFormat;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;

라이브러리를 import를 하고요. 

@RequestMapping(value = "/get_barcode", method = RequestMethod.GET)
	public ResponseEntity<byte[]> get_partner_image(HttpServletRequest request, Model model) throws Exception {
		 smsp.print_String("get_barcode ==>" + "아악."  );
		String text ="https://digital365365.com";
        String _formatName = text;
        text = new String(text.getBytes("UTF-8"), "ISO-8859-1");
      
 		byte[] imageInByte_re = smsp.getBarCodeImage(text, 840, 160);
 		//smsp.print_String(image.toString());
 		HttpHeaders headers = new HttpHeaders(); 
 		String mt_filename = text+".png";
        String formatName = "png";	      
	      MediaType mType = MediaUtils.getMediaType(formatName);
	      //smsp.print_String(mType.toString());
	      if(mType != null){
		        headers.setContentType(mType);
		      }else{
		    	mt_filename = new String(mt_filename.getBytes("UTF-8"), "ISO-8859-1");
		        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
		        headers.add("Content-Disposition", "attachment;filename=\""+mt_filename+"\";");
		        headers.add("Content-Transfer-Encoding", "binary");
		      }
       
	      return new ResponseEntity<byte[]>(imageInByte_re, headers,HttpStatus.OK);
	}

바코드 생성코드는 이렇게 있습니다. 

public static byte[] getBarCodeImage(String text, int width, int height) {
		try {
			Hashtable<EncodeHintType, ErrorCorrectionLevel> hintMap = new Hashtable<>();
			hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
			Writer writer = new Code128Writer();
			BitMatrix bitMatrix = writer.encode(text, BarcodeFormat.CODE_128, width, height);
			ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
			MatrixToImageWriter.writeToStream(bitMatrix, "png", byteArrayOutputStream);
			return byteArrayOutputStream.toByteArray();
		} catch (Exception e) {
			return null;
		}
	}

이상 정리해보았습니다. 

<img src="${pageContext.request.contextPath}/cp_a/get_barcode" alt="바코드">

 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

안드로이드 화면 메세지 출력 Toast

안드로이드 앱 개발시에 LOG창도 많이 보지만 아무래도 간단하게 안드로이드 스마트폰에서 바로 확인할수 있는

Toast를 잘 사용하실텐데요. 

Toast를 사용하는 방법에 대해서 정리할께요. 

Toast toast = Toast.makeText(getApplicationContext(), 출력내용, Toast.LENGTH_SHORT); //Toast.LENGTH_LONG 길게
toast.show();

이러면 화면에 출력이 되는데요. 

롱과숏 옵션이 있는데 화면에 나타나는 시간에서 차이가 나요. 

toast를 잘 사용하는것도 좋은데요. 이걸 좀더 응용해서 boolean debug=true;

를 이용하면 좀더 쉽게 사용할수 있어요. 

static public Context ctx;
static public boolean isdebug=true;
public void Toast(String message)
    {
    	if(isdebug)
        {
        	Toast toast = Toast.makeText(global.ctx, message, Toast.LENGTH_LONG);
        	toast.show();
         }
    }

 안드로이드 앱 시작시 ctx에 ctx = this.getApplicationContext(); 컨텍스트를 구해놓구요. 

필요할때마다. Toast("출력내용");으로 호출해서 사용할수 있습니다. 

간혹 쓰레드 안에서 값을 매번찍을땐 확인하기가 힘들지만 간혹가다 찍을경우엔 핸들을 이용하면 됩니다. 

oncreate에서 핸들러 선언해놓기.
global.mHandler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                Toast toast;
                switch (msg.arg1) {
                    case 1: //로그인성공
                        global.login_idx=(String) msg.obj;

                        SharedPreferences.Editor editor = global.sharedPreferences.edit();
                        editor.putString("login_idx",global.login_idx); // key, value를 이용하여 저장하는 형태
                        editor.commit();
                        globle.Toast(global.login_idx);
                        break;

                }
            }
        };


//호출시.
Message message = global.mHandler.obtainMessage();
                message.arg1 = 1;
                message.obj = str;
                global.mHandler.sendMessage(message);

이상 정리를 마칩니다.

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

유튜브 영상 다운로드 프로그램설치 없이

안녕하세요. 유투브 영상 다운로드 프로그램 설치 없이 영상을 다운로드 받는 방법을 소개할려고 해요.

오랫동안 서비스 하고 있고 지금도 잘되고 있어요. 

방법은 엄청 간단해요. 

주소

유튜브에 다운로드 받고 싶은 영상의 주소창에다 ss를 붙이면 되는데요. 

유투브주소 ss추가

https://www.ssyoutube.com/watch?v=QAZRvOxunmE 이렇게 입력하고 엔터를 눌러요. 

savefrom.net

이렇게 이동을 하고 다운로드할 링크를 처리중입니다. 이페이지에서 기다려주세요 라고 나옵니다. 

잠시만 기다리시면 이렇게 다운로드 가 만들어 져요.

다운로드

그럼 720p 360p중에서 고를수 있는데요 좀더 화질이 좋은 720에 두고 다운로드를 누르면 영상이 받아져요.

불경 천지팔양신주경같은것을 외부에 나갔을때 데이터 소진없이 들을려면 이걸 폰에 넣어서 다니면되겠네요.

 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,