su 명령어로 root계정 로그인 -> passwd 입력 -> 비밀번호 변경

※ 비밀번호가 짧은 경우 BAD PASSWORD 출력


WEB 즐겨찾기(새창)


윈도우

  • 레지스트리 편집기 실행(윈도우+R) -> regedit 
  • 시스템속성 윈도우 + PauseBreak키
  • 탐색기 윈도우 + E
  • 바탕화면보기 윈도우 + D
  • 모든창 최소화(Minimize) 윈도우 + M
  • ipconfig IP 확인
  • ping [주소] Ping 확인 
  • tracert [대상주소] 에코패킷을 대상 컴퓨터로냄으로써 대상 컴퓨터까지의 경로를 확인하는 유틸리티 
  • mstsc 윈도우 원격


Linux

  • ifconfig IP 확인
  • 시스템 종료 shutdown
    • ex) shutdown -r 22:30 System will be shutdown 
    • shoutdown -t 60 60초 후 종료
    • shoutdown -r 재부팅
    • shoutdown -c 취소
    • shoutdown -k 종료하지않고 경고
  • 재부팅 reboot
  • 디렉토리 내 파일보기 ls
  • 파일 찾기 find / -name '파일명'
  • mkdir 폴더생성
  • rmdir 폴더삭제
  • rm 파일삭제
  • cp 복사
  • mv 이동
  • pwd 현재경로
  • 방화벽설정 /etc/sysconfig/iptables
  • 서비스 시작, 중지, 상태 
    • service 서비스 start
    • service 서비스 stop
    • service 서비스 state




'낙서장' 카테고리의 다른 글

포맷후 받아야 할 프로그램  (0) 2014.02.16
구입 예정 목록  (0) 2014.02.03
WEB Bookmark  (3) 2014.01.07
temp_page  (0) 2013.11.13
TextView Class



package DataStructure_Test;

import java.util.*;

class ArrayListTest {
	public static void main(String[] args) {
		// ArrayList
		ArrayList<integer> var1 = new ArrayList<integer>();
		var1.add(1);
		var1.add(2);
		var1.add(3);
		var1.add(0, 4);
		for (int i = 0; i < var1.size(); i++) {
			System.out.println(var1.get(i).intValue());
		}

		// LinkedList
		LinkedList<string> var2 = new LinkedList<string>();
		var2.add("str1");
		var2.add("str2");
		var2.add("str3");
		for (int i = 0; i < var2.size(); i++) {
			System.out.println(var2.get(i).toString());
		}

		// Stack
		LinkedList<string> stack1 = new LinkedList<string>();
		stack1.push("stack1");
		stack1.push("stack2");
		stack1.push("stack3");
		while (!stack1.isEmpty()) {
			System.out.println(stack1.pop());
		}

		// Queue
		LinkedList<string> queue1 = new LinkedList<string>();
		queue1.offer("queue1");
		queue1.offer("queue2");
		queue1.offer("queue3");
		while (!queue1.isEmpty()) {
			System.out.println(queue1.poll());
			// System.out.println(queue1.peek());
			// peek() 메서드는 가져오기만 하므로 무한루프
		}
	}
}

'대학 생활 > JAVA' 카테고리의 다른 글

[JAVA] String <-> int, double, float 변환  (0) 2014.02.28
[JAVA] heap, stack 메모리  (0) 2014.01.24
[JAVA] 계산기  (0) 2014.01.05
[JAVA] 은행 통장 입출금 예제  (2) 2014.01.05

 실행환경

 Desktop

 조립식

 CPU

 Intel(R) Core(TM) i7-3770 3.50GHz

 Memory

 4 GB

 OS

 Window 7 Professional 32bit

 Java

 1.7.0_51

 Android

 SDK : 4.4.2 (KitKat) / 테스트기기 : Galaxy S3 4.3(Jelly Bean)

 WebServer

 Apache Tomcat 7.0

 DB

 MySQL 5.6.15


src/MenuCheck.java
import android.os.Bundle;
import android.app.Activity;
import android.util.*;
import android.view.*;
import android.widget.*;

public class Menucheck extends Activity {
	TextView mText;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.menucheck);
		mText = (TextView) findViewById(R.id.textsize);

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.menucheck, menu);
		return true;
	}

	public boolean onPrepareOptionsMenu(Menu menu) {
		if (mText.getTextSize() >= 80) {
			menu.findItem(R.id.bigsize).setChecked(true);
		} else {
			menu.findItem(R.id.bigsize).setChecked(false);
		}
		String sex = (String) mText.getText();

		if (sex.equals("MAN")) {
			menu.findItem(R.id.man).setChecked(true);
		}
		if (sex.equals("GIRL")) {
			menu.findItem(R.id.girl).setChecked(true);
		}
		return true;
	}

	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.bigsize:
			Log.v("Test1", "F" + mText.getTextSize());
			if (item.isChecked()) {
				mText.setTextSize(20);
			} else {
				mText.setTextSize(40);
			}
			Log.v("Test1", "L" + mText.getTextSize());
			return true;
		case R.id.man:
			mText.setText("MAN");
			return true;
		case R.id.girl:
			mText.setText("GIRL");
			return true;
		
		}
		return false;
	}
}
layout/menucheck.xml

    

    


menu/menucheck.xml


    
        
    

    
        
            
                
                
            
        
    


 


 


 



※ 먼저 USB드라이버를 설치합니다.

USB드라이버(삼성) 다운로드(링크)

USB드라이버 넥서스 다운로드(링크)



 핸드폰(갤럭시S3)으로 디버깅 하기


1. 개발자 옵션이 보이지 않을 때, 디바이스 정보 -> 빌드 번호를 여러번 클릭하면 몇번남았다고 메세지가 보이면서 아래 사진과 같이 나타납니다. 


2. 핸드폰으로 디버깅을 하기 위하여 USB 디버깅에 체크



3. 현재 프로젝트의 AndroidManifest.xml에서 아래와 같이 추가합니다.



4. 프로그램을 실행하게 되면 아래와 같이 보여주면서 선택할 수 있다.



역시 에뮬레이터와는 상대가 안되는 속도이다.... 훨씬 테스트하기 좋은 것 같다.



※ Android taget unkown state offine 인식문제 해결하기

내가 해결한 방법은 USB드라이버 재설치 후 이클립스 재시작.

혹은 Android Device Chooser 띄우고 adb.exe 프로세스 종료하고 핸드폰 다시 연결한 뒤에

핸드폰 화면에 디버깅한다는 메세지에 확인하면 연결된다.

위 방법이 안된다면 ADB.exe 프로세서를 종료 후 다시 시작하라는 소리도 있지만 그 전에 해결되어서 확인해보진 못했다.







OS 즐겨찾기(새창)


* 새로 작성중이며, 아래링크에 추가중입니다.

각종 북마크 모음


! WEB SITE

각종 자료 찾기(image, font, video...)


유용한 웹사이트

  • Pencil Project(Mock up tool) Download 링크
  • 한국어 맞춤법 검사 링크
  • 영어문장읽어주는 사이트 링크
  • beautifier : HTML 코드 정리 링크
  • PasteBin : 코드 하이라이트 정리 링크
  • Qnacode : 코드 정리(HTML,JS,CSS) 링크
  • Ninite : 포맷후 프로그램 한번에 받기 링크
  • SHOUTcast : 라디오 링크

컴퓨터 공부(온라인 강의, 코딩, 알고리즘)


영어 공부

  • http://pann.nate.com/talk/318469812

개발, IT 블로그


프레임웍

  • eGovFrame(표준프레임워크) 링크

각종 기타 자료

  • 오픈스택 한국 커뮤니티 링크

▶ JAVA

Android

  • 안드로이드 API 링크
  • 안드로이드 API한글화(미완성) 링크

Android Community, Blog


Develop tool


▶ C 관련

API, Document


▶ Web

HTML, CSS

  • HTML5 Reference(한글) 링크
  • DOM Reference 링크
  • HTML5, 4 차이점 링크
  • HTML5 Outliner 웹서비스 링크
  • 블로그
    • HTML5Rocks(HTML5 관련정보) 링크
  • 다양한 HTML5, CSS3 모음 링크


service

  • 가비아(도메인) 링크
  • DNSEver(DDNS) 링크
  • 카페24(웹호스팅) 링크
  • DNSzi 링크

JavaScript, JQuery, Ajax

  • JavaScript 버전 정보 링크
  • JavaScript 메뉴얼(KoXo) 링크
  • JQuery-plugins 링크


PHP, JSP, ASP

  • PHPSCHOOL 링크
  • PHP, JSP 커뮤니티(비활성화인듯하다.) 링크


Framework, develop tool

  • 부트스트랩 한글 메뉴얼 링크
  • Divshot(부트스트랩 기반 웹UI에디터) 링크
  • 마크쿼리 도움말 링크


default

  • 웹디자인 - receep(얼마를가져갈까?) 여행경비 링크
  • 웹디자인 - 포트폴리오 링크
  • 20줄 채팅프로그램 링크
  • GitHub-Style Avatar Generator(이메일로 사진만들기) 링크





커뮤니티, 웹사이트


API, Document

  • GoogleMaps API v2 Reference 링크
  • Oracle Documentation Library 링크
  • 컴퓨터용어사전(terms) 링크
  • kakao API 링크
  • 새주소 검색 ↓
  • Postcodify : http://newaddress.kr (예제), http://www.phpschool.com/link/tipntech/78695 (자세한 소개) 
  • 송효진님 : http://xenosi.de/roadzip (예제 및 매뉴얼) 
  • PHPSCHOOL : http://post.phpschool.com/post.html (예제 및 매뉴얼, API 신청 정보) 
  • 그누보드 API : http://juso.sir.co.kr (예제), https://github.com/gnuboard/gnuboard5 (그누보드 소스코드) 
  • XE API : https://github.com/xpressengine/xe-module-krzip (클라이언트 소스코드) 
  • 다음 API : http://postcode.map.daum.net/guide (예제 및 매뉴얼) 
  • 우체국 API : http://data.go.kr (“도로명주소” 검색하면 매뉴얼 및 API 신청 정보를 얻을 수 있습니다) 

버전관리


리눅스


윈도우


보안, 해킹

  • 써니나타스(웹해킹,포렌식 등) http://www.suninatas.com/ kyz1018/3
  • 바이러핵 http://www.virhac.com/
  • http://www.examcollection.com  <- only new 덤프
  • http://certcollection.org/forum <- 서적, ebook
  • http://cafe.naver.com/sdk800402 <- 네이버 디비고 덤프 정보 카페
  • http://www.9tut.com/ <- CCNA 시뮬
  • http://www.digitaltut.com <- CCNP ROUTE 시뮬
  • http://www.certprepare.com/ <- CCNP SWITCH 시뮬
  • http://www.networktut.com/ <- CCNP TSHOOT 시뮬 
  • http://www.cisco.com/web/learning/le3/le2/le37/le10/tshoot_demo.html  <- TSHOOT 데모
  • http://www.cisco.com/web/learning/le3/le2/le37/le10/tshoot_tutorial.html  <- TSHOOT 데모
  • http://ryusstory.tistory.com/200  <- 시험정보얻는곳정리

Web, HTML ...


루비온레일즈


비트코인, 라이트코인


PPT 관련 블로그




만들어 볼 것


자기소개 웹페이지 참고


etc




'낙서장' 카테고리의 다른 글

구입 예정 목록  (0) 2014.02.03
OS Command  (0) 2014.01.16
temp_page  (0) 2013.11.13
hash  (0) 2013.10.11

실행확인 : mysqladmin -u root -p ping

접속 : mysql -u root -p


DB이동 : use DB명

DB생성 : create database DB명;

테이블 생성 : create table 테이블명 (컬럼명 타입(크기), …);

테이블 삭제 : drop table 테이블명;

테이블 구조확인 : desc 테이블명;

데이터 입력 : insert info 테이블명 (컬럼명…) values (값…);

데이터 확인 : select * from 테이블명;  모두보기

   select 컬럼이름 from 테이블명;  특정컬럼

   select * from 테이블명 where 조건;  조건에 맞는 데이터

ex) select * from numdb where colnum>2;

데이터 변경 : update 테이블명 set 변경할 내용 where 조건;

ex) update numdb set colnum:=3, rownum:=4 where code='1001';

데이터 삭제 : delete from 테이블명 where 조건;


버전확인 : select version();

import java.awt.*;
import java.awt.event.ActionListener;

import javax.swing.*;

class MainClass{
	public static void main(String[] args) {
		
		// window 창 설정
		JFrame frame = new JFrame("simple calculator");
		frame.setLocation(500, 400);
		frame.setPreferredSize(new Dimension(300, 200));
		Container contentPane = frame.getContentPane();

		JTextField resultField = new JTextField();
		contentPane.add(resultField, BorderLayout.NORTH);

		GridLayout button_layout = new GridLayout(4, 4);
		JPanel panel_button = new JPanel();
		panel_button.setLayout(button_layout);

		
		JButton[] nums = new JButton[10];
		nums[0] = new JButton("0");
		nums[1] = new JButton("1");
		nums[2] = new JButton("2");
		nums[3] = new JButton("3");
		nums[4] = new JButton("4");
		nums[5] = new JButton("5");
		nums[6] = new JButton("6");
		nums[7] = new JButton("7");
		nums[8] = new JButton("8");
		nums[9] = new JButton("9");
		
		JButton clr = new JButton("C"); // clear
		JButton equals = new JButton("="); // result
		JButton add = new JButton("+");
		JButton sub = new JButton("-");
		JButton mul = new JButton("*");
		JButton div = new JButton("/");

		panel_button.add(nums[7]);
		panel_button.add(nums[8]);
		panel_button.add(nums[9]);
		panel_button.add(add);
		panel_button.add(nums[4]);
		panel_button.add(nums[5]);
		panel_button.add(nums[6]);
		panel_button.add(sub);
		panel_button.add(nums[1]);
		panel_button.add(nums[2]);
		panel_button.add(nums[3]);
		panel_button.add(mul);
		panel_button.add(nums[0]);
		panel_button.add(equals);
		panel_button.add(clr);
		panel_button.add(div);

		contentPane.add(panel_button, BorderLayout.CENTER);

		// event
		
		ActionListener numberPressListener = new NumberButtonListener(resultField);
		for(int i = 0; i < 10; i++) {
			nums[i].addActionListener(numberPressListener);
		}

		clr.addActionListener(numberPressListener);
		equals.addActionListener(numberPressListener);
		add.addActionListener(numberPressListener);
		sub.addActionListener(numberPressListener);
		mul.addActionListener(numberPressListener);
		div.addActionListener(numberPressListener);
		
		// window 띄우기
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.pack();
		frame.setVisible(true);
	}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

class NumberButtonListener implements ActionListener {
	JButton btn;
	JTextField result;

	private int total = 0;
	private char op = ' ';

	NumberButtonListener(JTextField result) {
		this.result = result;
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		String getBut = e.getActionCommand();
		String presentVal = result.getText();

		if (getBut == "0") {
			if(!presentVal.equals("0")) {
				result.setText(presentVal + getBut);
			}
		} else if (getBut == "1") {
			result.setText(presentVal + getBut);
		} else if (getBut == "2") {
			result.setText(presentVal + getBut);
		} else if (getBut == "3") {
			result.setText(presentVal + getBut);
		} else if (getBut == "4") {
			result.setText(presentVal + getBut);
		} else if (getBut == "5") {
			result.setText(presentVal + getBut);
		} else if (getBut == "6") {
			result.setText(presentVal + getBut);
		} else if (getBut == "7") {
			result.setText(presentVal + getBut);
		} else if (getBut == "8") {
			result.setText(presentVal + getBut);
		} else if (getBut == "9") {
			result.setText(presentVal + getBut);
		} else if (getBut == "C") {
			result.setText("");
			total = 0;
		} else if (getBut == "+") {
			int temp =  Integer.parseInt(presentVal);
			switch (op) {
			case '+':
				total += temp;
				break;
			case '-':
				total -= temp;
				break;
			case '*':
				total *= temp;
				break;
			case '/':
				total /= temp;
				break;
			default:
				total = temp;
			}
			op = '+';
			result.setText("");
		} else if (getBut == "-") {
			int temp =  Integer.parseInt(presentVal);
			switch (op) {
			case '+':
				total += temp;
				break;
			case '-':
				total -= temp;
				break;
			case '*':
				total *= temp;
				break;
			case '/':
				total /= temp;
				break;
			default:
				total = temp;
			}
			op = '-';
			result.setText("");
		} else if (getBut == "*") {
			int temp =  Integer.parseInt(presentVal);
			switch (op) {
			case '+':
				total += temp;
				break;
			case '-':
				total -= temp;
				break;
			case '*':
				total *= temp;
				break;
			case '/':
				total /= temp;
				break;
			default:
				total = temp;
			}
			op = '*';
			result.setText("");
		} else if (getBut == "/") {
			int temp =  Integer.parseInt(presentVal);
//			total = total / Integer.parseInt(presentVal);
			switch (op) {
			case '+':
				total += temp;
				break;
			case '-':
				total -= temp;
				break;
			case '*':
				total *= temp;
				break;
			case '/':
				total /= temp;
				break;
			default:
				total = temp;
			}
			op = '/';
			result.setText("");
		} else if (getBut == "=") {
			int temp = Integer.parseInt(presentVal);
			switch (op) {
			case '+':
				total += temp;
				break;
			case '-':
				total -= temp;
				break;
			case '*':
				total *= temp;
				break;
			case '/':
				total /= temp;
				break;
			default:
				total = temp;
			}
			op = ' ';
			result.setText("" + total);
			System.out.println(total);
		}
	}

}
MainClass.java
public class MainClass {
	public static void main(String[] args) {

		basicFunc start = new basicFunc();
		start.play();
	}
}
BasicFunc.java
import java.util.Scanner;

class BasicFunc {
	void play() {
		String name;
		String accountNo;
		int limit;
		System.out.println("사용자메뉴");
		Scanner in = new Scanner(System.in);
		loop: while (true) {
			System.out.println("1. 일반 통장 개설");
			System.out.println("2. 마이너스 통장 개설");
			System.out.println("3. 종료");
			System.out.print("->");
			int chk = in.nextInt();
//			try {
				in.nextLine();
				switch (chk) {
				case 1:
					System.out.println("일반 통장 개설");
					System.out.print("이름 : ");
					name = in.nextLine();
					System.out.print("계좌번호 : ");
					accountNo = in.nextLine();
					System.out.println(name + ", " + accountNo);
					try{
					Account person = new Account(name, accountNo);
					person.play();
					}catch(Exception e) {
						System.out.println(e.getMessage());
					}
				
					
					
					break;
				case 2:
					System.out.println("마이너스 일반 통장 개설");
					System.out.print("이름 : ");
					name = in.nextLine();
					System.out.print("계좌번호 : ");
					accountNo = in.nextLine();
					System.out.print("한도 : ");
					limit = in.nextInt();
//					Account personM = new AccountM(name, accountNo, limit);
//					personM.play();
					break;
				case 3:
					break loop;
				default:
					System.out.println("다시 입력해주세요.");

				}
//			} catch (Exception e) {
//				System.out.println(e.getMessage());
//			}
		}
		System.out.println("system quit..");
	}
}
Account.java
import java.util.Scanner;

public class Account {
	String name; // 예금주 이름
	String accountNo; // 계좌번호
	int balance; // 잔고

	// 생성자
	Account() {
	}

	Account(String name, String accountNo) throws Exception {
		if(name.equals("\n") || accountNo.equals(null)) {
			System.out.println("값 없음");
			throw new Exception("값을 모두 입력하세요.");
		}
		this.name = name;
		this.accountNo = accountNo;
	}

	// ----------------------
	// 생성자 끝

	void play() {
		Scanner in = new Scanner(System.in);
//		System.out.print("이름 : ");
//		this.name = in.nextLine();
//		System.out.print("계좌번호 : ");
//		this.accountNo = in.nextLine();
		int temp;
		int chk = 1;
		loop: while (chk != 0) {
			try {
				System.out.println("1. 입금, 2. 출금, 3. 정보, 0. 종료");
				System.out.print("->");
				int num = in.nextInt();
				switch (num) {
				case 1:
					System.out.print("입금얼마?");
					temp = in.nextInt();
					inputMoney(temp);
					break;
				case 2:
					System.out.print("출금얼마?");
					temp = in.nextInt();
					outputMoney(temp);
					break;
				case 3:
					infoPrint();
					break;
				case 0:
					break loop;
				default:
					System.out.println("다시입력하시오");
				}

			} catch (Exception e) {
				System.out.println(e.getMessage());
			}
		}
	}

	void infoPrint() {
		System.out.println("이름 : " + name);
		System.out.println("게좌 : " + accountNo);
		System.out.println("잔액 : " + balance);
	}

	void inputMoney(int amount) {
		this.balance += amount;
		System.out.println(amount + "원을 입금하고, 잔액은 " + balance + "원입니다.");
	}

	void outputMoney(int amount) throws Exception {
		if (balance < amount) {
			throw new Exception("잔액이 부족합니다.");
		} else {
			balance -= amount;
			System.out.println(amount + "원을 인출하고, 잔액은 " + balance + "원입니다.");
		}
	}

	void calculateInterest() {

	}
}
AccountM.java
import java.util.Scanner;

public class AccountM extends Account {
	int limit = 0; // 마이너스 한도

	// 생성자
	AccountM() {
		// 기본 한도 500만원.
		this.limit = 500;
	}

	AccountM(String name, String accountNo, int limit) throws Exception {
		super(name, accountNo);
		this.limit = limit;
	}

	// ----------------------
	// 생성자 끝

	void play() {
		Scanner in = new Scanner(System.in);
		System.out.print("이름 : ");
		this.name = in.nextLine();
		System.out.print("계좌번호 : ");
		this.accountNo = in.nextLine();
		System.out.print("한도 : ");
		this.limit = in.nextInt();
		int temp;
		int chk = 1;
		loop: while (chk != 0) {
			try {
				System.out.println("1. 입금, 2. 출금, 3. 정보, 0. 종료");
				System.out.print("->");
				int num = in.nextInt();
				switch (num) {
				case 1:
					System.out.print("얼마?");
					temp = in.nextInt();
					inputMoney(temp);
					break;
				case 2:
					System.out.print("얼마?");
					temp = in.nextInt();
					outputMoney(temp);
					break;
				case 3:
					infoPrint();
					break;
				case 0:
					break loop;
				default:
					System.out.println("다시입력하시오");
				}

			} catch (Exception e) {
				System.out.println(e.getMessage());
			}
		}
	}

	// 오버라이딩
	void infoPrint() {
		System.out.println("이름1 : " + name);
		System.out.println("게좌 : " + accountNo);
		System.out.println("한도금액 : " + limit);
		System.out.println("잔고 : " + balance);
		System.out.println("인출가능잔액 : " + (balance + limit));
	}

	void inputMoney(int amount) {
		this.balance += amount;
		System.out.println(amount + "원을 입금하고, 잔액은 " + (balance + limit)
				+ "원입니다.");
	}

	// 오버라이딩
	void outputMoney(int amount) throws Exception {
		if ((balance + limit) < amount) {
			throw new Exception("잔액이 부족합니다.");
		} else {
			balance -= amount;
			System.out.println(amount + "원을 인출하고, 인출가능잔액은 " + (balance + limit)
					+ "원입니다.");
		}
	}
}


'대학 생활 > JAVA' 카테고리의 다른 글

[JAVA] ArrayList, LinkedList, Stack, Queue  (0) 2014.01.09
[JAVA] 계산기  (0) 2014.01.05
[JAVA] * 별 출력하기_10 다이아몬드  (0) 2013.11.15
[JAVA] * 별 출력하기_09 마름모  (0) 2013.11.14

* 별 출력하기_10 다이아몬드


public class Star {

	public static void main(String args[]) {

		int input = 5;
		int st = 0;
		input = (input % 2 == 0) ? input - 1 : input;
		st = input/2;
		
		for (int line = 0; line < input; line++) {
			for (int put = 0; put < (input - st); put++) {
				System.out.print((put >= st) ? "*" : " ");
			}
			st = line < (input / 2) ? st - 1 : st + 1;
			System.out.println();
		}
	}
}


'대학 생활 > JAVA' 카테고리의 다른 글

[JAVA] 계산기  (0) 2014.01.05
[JAVA] 은행 통장 입출금 예제  (2) 2014.01.05
[JAVA] * 별 출력하기_09 마름모  (0) 2013.11.14
[JAVA] 스무고개 만들기  (0) 2013.10.28
※ 메인메서드아닙니다.
void shape(int size) {
		// 3보다 큰 수 홀수 입력받아야하고, 잘못받으면 계속 입력받아야 한다.
		int mid = size / 2 + 1;
		int star = mid;
		for(int line = 1, blank = (size/2); line <= size; line++) {
			for(int colum = 1; colum <= star; colum++) {
				System.out.print(blank >= colum ? " " : "*");
			}
			System.out.printf("\t\t\t star : %d, blank : %d\n", star, blank);
			star = ((line < mid) ? star+1 : star-1);
			blank = ((line >= mid) ? blank+1 : blank-1);
		}
	}
  • test1
    1. test1-1
    2. test1-2
      1. test1-2-1
    3. test1-3
  • test2


'낙서장' 카테고리의 다른 글

OS Command  (0) 2014.01.16
WEB Bookmark  (3) 2014.01.07
hash  (0) 2013.10.11
원격  (1) 2013.10.05


 1. 쪽 번호 설정하기






 2. 특정 페이지 쪽번호 감추기





STSEG SEGMENT STACK 'stack'

DB 64 DUP(?)

STSEG ENDS

;---

DTSEG SEGMENT

DATA1 DB 'mY NAME is jUn'

ORG 0020H

DATA2 DB 14 DUP(?)

DTSEG ENDS

;----

CDSEG SEGMENT

MAIN PROC FAR

ASSUME CS:CDSEG, DS:DTSEG, SS:STSEG

MOV AX, DTSEG

MOV DS, AX

MOV SI, OFFSET DATA1

MOV BX, OFFSET DATA2

MOV CX, 14

BACK: MOV AL, [SI]

CMP AL, 41H

JB OVER

CMP AL, 5AH

JA OVER

OR AL, 00100000B

OVER: MOV [BX], AL

INC SI

INC BX

LOOP BACK

MOV AH, 4CH

INT 21H

MAIN ENDP

CDSEG ENDS

END MAIN

인터넷 어디선가 퍼온 ifstream 클래스

 

Public 멤버

생성자 - 객체를 생성하며 부가적으로 파일과 연관시킬 수 있다.
rdbuf : filebuf 객체를 얻는다.
is_open : 파일이 열려있는지 확인한다.
open : 파일을 연다.
close : 파일을 닫는다.

istream 으로 부터 상속 받은 멤버들

operator>> : 서식화된 데이터를 추출(입력)한다.
gcount : 마지막 서식화 되지 않은 입력에서 받아들였었던 문자의 개수를 구한다.
get : 스트림으로 부터 서식화 되지 않은 데이터를 얻는다.
getline : 스트림으로 부터 한 줄을 입력받는다.
ignore : 문자들을 입력 받고 지운다.
peek : 그 다음으로 추출될 문자를 얻어온다.
read : 데이터 블록을 읽는다.
readsome : 버퍼에서 읽기 가능한 데이터 블록을 읽어온다.
putback : 문자를 다시 집어넣는다.

unget : get pointer 을 감소 시킨다.
tellg : get pointer 의 위치를 얻는다.
seekg : get pointer 의 위치를 설정한다.
sync : 입력 버퍼를 문자들의 소스에 동기화 시킨다.
sentry : 예외로 부터 안전한 접두/접미 작업을 수행한다. (클래스)

ios 로 부터 상속 받은 함수들

good : 스트림의 상태가 입출력 작업을 할 수 있는지 확인한다.
eof : eof 비트가 설정되었는지 확인한다.
fail : fail 비트나 bad 비트가 설정되었는지 확인한다.
bad : bad 비트가 설정되었는지 확인한다.
operator! : 스트림 객체에 오류 플래그(fail 비트나 bad 비트)가 설정되었는지 확인한다.
operator void* : 포인터로 변환한다.
rdstate : 오류 상태 플래그(error state flag)를 얻어온다.
setstate : 오류 상태 플래그를 설정한다.
clear : 오류 상태 플래그들을 설정한다
copyfmt : 서식 정보를 복사한다.
fill : 채우기 문자(fill character) 을 얻거나 설정한다.
exceptions : 예외 마스크를 얻거나 설정한다.
imbue : 로케일을 설정한다.

tie : 엮어진 스트림(tied stream)을 얻거나 설정한다.

rdbuf : 연관된 스트림 버퍼를 얻거나 설정한다.
narrow : 표준 char 형으로 문자를 변환한다.
widen : 표준 wchar_t 형으로 문자를 변환한다.

ios_base 로 부터 상속된 함수들

flags : 서식 플래그를 수정하거나 얻어온다.
setf : 특정 서식 플래그를 설정한다.

unsetf : 특정 서식 플래그를 초기화 한다.

precision : 부동 소수점 정밀도를 수정하거나 얻어온다.

width : 필드의 너비를 수정하거나 얻어온다
imbue : 로케일을 채운다.
getloc : 현재 로케일을 얻어온다
xalloc : 내부 확장 가능 배열의 새로운 인덱스를 리턴한다. (정적 함수)
iword : 내부 확장 가능 배열의 특정 정수 원소의 레퍼런스를 얻는다.
pword : 내부 확장 가능 배열의 포인터의 레퍼런스를 얻는다.
register_callback : 이벤트 콜백 함수를 등록한다.
sync_with_stdio : iostream 과 cstdio 스트림과의 동기화를 활성화 하거나 비활성화 한다.


 window 7에서 어셈블하고 Debug하기


과제를 하려는데 제 컴퓨터(윈도우7 64bit)에서는 debug도 안되고 masm이 없어서 아무것도 안되서 이것저것 찾아 보았습니다.

더 편한 방법이 있겠지만 급한대로 요긴하게 사용할 수 있을 것 같아 올립니다.


** DOSBOX에서 'link 파일명' 할 때 파일이 있는데 오브젝트파일을 찾을 수 없다는 메세지가 뜰 경우.

-> .obj 파일의 이름은 8글자까지만 link되는 것 같습니다. 

아래 파일을 다운받고 실행은 모두 파일을 저장한 폴더 내에서 실행하셔야 합니다.


debug.exe


link.exe


masm.exe


ml.exe

※ 파일 올린 것에 문제가 있다면 말씀해주시면 바로 삭제하겠습니다.


1. 먼저 cmd에서 어셈블해서 obj 파일을 만들어 줍니다.


2. 실행파일을 만들기 위한 link는 DOSBox에서 실행합니다.

    관련글 

    [어셈] win7 debug 사용방법 - DOSBox 다운, 사용

    [어셈] win7 debug 사용방법

    [어셈] Debug 프로그래밍 - 들어가기, 내용 확인 변경하기

    [어셈] Debug 프로그래밍 - 작성, 실행하기



3. 실행파일이 만들어지면 도스박스에서 디버그해서 확인할 수 있습니다.




import java.util.Random;
import java.util.Scanner;

public class Smugogae {
	public static void main(String[] args) {
		Random ran = new Random();
		Scanner in = new Scanner(System.in);
		int val = ran.nextInt(20) + 1;
		int input;
		int cnt = 0;

		System.out.println("답:" + val);

		System.out.println("스무고개(1~20)");
		do {
			System.out.print("input : ");
			input = in.nextInt();
			if (val > input) {
				System.out.printf("%d보다 큽니다.\n", input);
			} else if (val < input) {
				System.out.printf("%d보다 작습니다.\n", input);
			}
			cnt++;
			System.out.println("count " + cnt);
		} while (input != val && cnt < 20);

		if (cnt > 20) {
			System.out.println("val = " + val);
			System.out.println("20번이 넘었습니다.");
		} else {
			System.out.println("val = " + val);
			System.out.println("count = " + cnt);
		}
	}
}


2002년 취업 5대 스펙으로 꼽았던 "학벌, 학점, 토익, 어학연수, 자격증"에 이어 

2012년 취업 8대 스펙으로 "봉사, 인턴, 수상경력"이 추가 되었다고 한다.

스펙을 갖추기 위해 취업이 늦어져 지난해 20~24세 연령층의 고용률은 10년 전보다 9.1% 떨어진 44.5%로 나타났다. 



학벌, 학점, 토익, 어학연수, 자격증, 봉사, 인턴, 수상경력


먼저 학번과 성적이 저장된 파일이 존재해야한다.
/*
    목적 : 파일을 읽어 각 반의 학생의 성적과 합계, 평균을
   		  구하고 각 과목의 반평균을 구한다.
    작성날짜 : 2013.09.23
 */
#include <stdio.h>
#include <stdlib.h>

// 상수들 
#define PEPLE_NUM 181	// 총학생수 정의

void openFile(FILE* fp);
void printClass(int class);

// 학생 정보를 저장하기 위한 구조체 선언
typedef struct student{
	char class_st[10];
	int class[3];
	int score[5];
	int total;
	float average;
} Student;

// 모든 함수에서 사용하기 위해 전역부에 선언
Student stu[PEPLE_NUM];

int main(int argc, char *argv[]) {
	
	FILE* fp = fopen("scr2013.txt", "r");
	if (fp == NULL) {
		printf(" File is null.\n");
		return -1;
	}
	openFile(fp);
	fclose(fp);

	printf("┌──────────────────────┐\n");
	printf("│  초등학교 1학년 성적 일람표 출력하기.  │\n");
	printf("└──────────────────────┘\n");

	while(1) {
		int in = 0;
		printf("  어느 반을 출력할 것입니까?(exit=0) : ");
		scanf("%d", &in);

		if(in == 0) {
			printf("program exit...\n");
			break;
		}
		// 성적일람표 출력 함수 실행
		printClass(in);
	} // while

	return 0;
}

/* =============== openFile ======================================
  파일을 읽어서 구조체 배열에 저장하고 총점, 평균 구하는 함수
	사전조건 : main에서 읽은 파일을 배열에 입력하기 위해서
			   매개변수 fp로 받아온다.
 	사후조건 : 구조체 배열에 점수를 입력하고 총점, 평균을 구한다.
 */
void openFile(FILE* fp) {
// 지역정의
	int temp;
	int i;

// 문장들
	// 파일 읽어서 구조체 배열에 입력하기
	for(i=0; i < PEPLE_NUM; i++) {
		fscanf(fp, "%s %d %d %d %d %d", &(stu[i]).class_st, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2], &stu[i].score[3], &stu[i].score[4]);

		// 입력받은 문자열인 학번을 integer로 변환하기 위해 atoi함수를 사용했다.
		temp = atoi(stu[i].class_st);
		stu[i].class[0] = temp / 10000;
		stu[i].class[1] = (temp - (stu[i].class[0] * 10000)) / 100;
		stu[i].class[2] = (temp - (stu[i].class[0] * 10000) - (stu[i].class[1] * 100)) / 1;
	}

	// 입력받은 점수로 총점, 평균 계산하기
	for(i = 0; i < PEPLE_NUM; i++) {
		stu[i].total = stu[i].score[0] + stu[i].score[1] + stu[i].score[2] + stu[i].score[3] + stu[i].score[4];
		stu[i].average = stu[i].total / 5.0;
	}

} // openFile
//================= openFile End =================================


/* =============== printClass  ===================================
   출력하고자 하는 반을 주어진 틀에 맞게 출력하는 함수.
     사전조건 : 출력하고자하는 반을 매개변수로 받는다.
	 사후조건 : 헤더를 출력하고 학생들의 정보를 모두 출력한다.
	 			모두 출력하고 난뒤에 각 과목의 반평균을 출력한다.
 */
void printClass(int class) {
// 지역정의
	int i;
	int count = 0;
	float kor = 0;
	float math = 0;
	float social = 0;
	float science = 0;
	float pe = 0;

// 문장들
	printf("\n  1 학년 %2d 반 성적일람표\n", class);
	printf(" 학번  국어  산수  사회  과학  체육  총점  평균 \n");
	printf("------------------------------------------------\n");
	// 학생 출력.
	for(i = 0; i < PEPLE_NUM ;i++ ) {
		if(stu[i].class[1] == class) {
			printf("%5s  %3d   %3d   %3d   %3d   %3d   %3d   %3.1f \n", stu[i].class_st, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].score[3], stu[i].score[4], stu[i].total, stu[i].average);
			kor += stu[i].score[0];
			math += stu[i].score[1];
			social += stu[i].score[2];
			science += stu[i].score[3];
			pe += stu[i].score[4];
			count++;
		}
	}
	// 학생이 없을 경우 출력.
	if(count == 0) {
		printf("               자료가 없습니다.\n\n");
		return;
	}

	printf("------------------------------------------------\n");
	printf("반평균  %3.1f  %3.1f  %3.1f  %3.1f  %3.1f \n\n", kor/(float)count, math/count, social/count, science/count, pe/count);
} // printClass
//================= printClass End ===============================


/* squential search, binary search
   단어 찾기 프로그램
	작성자 : 김영준
	날짜 : 2013/10/3
*/
#include <stdio.h>
#include <string.h>

// 전역선언
typedef struct words {
	char words[30];	// 파일중 제일 긴 단어 22자
} Words;

const int MAX_SIZE = 26000;

// 기본형선언
void readWords(Words* wordsArray, int* last);
void seqSearcah(Words wordsArray[], int last); 
void binarySearch(Words wordsArray[], int last);

int main(void) {
// 지역정의 
	Words wordsArray[MAX_SIZE];
	int last = 0;

// 문장들
	readWords(wordsArray, &last);
	seqSearch(wordsArray, last);
	printf("\n");
	binarySearch(wordsArray, last);
	return 0;
} // main

/* ================= readWords =================
	파일을 읽어서 배열에 적재한다.
	사전조건		wordsArray는 채워져야 할 배열
				last는 마지막 요소의 인덱스
	사후조건		배열이 채워짐
*/
void readWords(Words* wordsArray, int* last) {
// 지역변수
	char buf[256];
	FILE* fp = fopen("/usr/dict/words", "r");

// 문장들
	if(fp == NULL) {
		printf("File is null\n");
		exit(1);
	}

	printf("단어 읽는 중");
	while(fgets(buf, sizeof(buf), fp) != NULL) {
			//개행문자 삭제
			buf[strlen(buf)-1] = 0;
			// 문자열 복사 함수 strcpy() 사용.
			strcpy(wordsArray[*last].words, buf);
			(*last)++;
			if(*last % 1000 == 0) {
				printf(".");
			}
	}
	printf("%d 단어의 사전 구축 완료\n", *last);
	fclose(fp);
} // readWords

/* ================= seqSearch =================
	순차적 찾기로 목표를 찾는다.
	모두 찾고나면 결과를 출력한다.
	사전조건		wordsArray는 데이터를 가지고 있는 배열
				last는 마지막 요소의 인덱스
*/
void seqSearch(Words wordsArray[], int last) {
	int looker;
	char target[256];

	printf("영어 단어 찾기(Sequential Search)\n");
	printf("==================================\n");

	while(1) {
		looker = 0;
		printf("단어 입력(quit:ESC) : ");
		fgets(target, sizeof(target), stdin);
		// 개행문자 삭제
		target[strlen(target)-1] = 0;

		if(target[0] == 27){
			printf("Program quit...\n");
			break;
		}

		// seqSearch
		while(looker < last && strcasecmp(target, wordsArray[looker].words)) {
			looker++;
		}

		// 결과 출력
		if(!strcasecmp(target, wordsArray[looker].words)) {
			printf("단어 %s 찾음 비교횟수 : %d\n", target, looker+1);
		} else {
			printf("단어 %s 찾기실패 비교횟수 : %d\n", target, looker+1);
		}
	}

	printf("==================================\n");
	printf("Sequential search 끝\n");

} // seqSearch

/* ================= binarySearch =================
	이진 찾기로 목표를 찾는다.
	모두 찾고나면 결과를 출력한다.
	사전조건		wordsArray는 데이터를 가지고 있는 배열
				last는 마지막 요소의 인덱스
*/
void binarySearch(Words wordsArray[], int end) {
// 지역변수
	int looker;
	char target[256];
	int first, mid, last;
	int cnt = 0;

// 문장들
	printf("영어 단어 찾기(binary Search)\n");
	printf("==================================\n");
	
	while(1) {
		looker = 0;
		first = 0;
		last = end;
		cnt = 0;

		printf("단어입력(quit:ESC) : ");
		fgets(target, sizeof(target), stdin);
		// 개행문자 삭제
		target[strlen(target)-1] = 0;

		if(target[0] == 27) {
			printf("Program quit...\n");
			break;
		}

		// binarySearch
		while( first <= last) {
			mid = (first + last) / 2;
			if(0 < strcasecmp(target, wordsArray[mid].words)) {
				first = mid + 1;
			} else if(0 > strcasecmp(target, wordsArray[mid].words)) {
				last = mid - 1;
			} else {
				break;
			}
			cnt++;
		}

		// 결과 출력
		if(!strcasecmp(target, wordsArray[mid].words)) {
			printf("단어 %s 찾음 비교횟수 : %d\n", target, cnt+1);
		} else {
			printf("단어 %s 찾기실패 비교횟수 : %d\n", target, cnt+1);
		}

	}

	printf("==================================\n");
	printf("Sequential search 끝\n");
} // binarySearch



웹디자인이나 앱 디자인할때 아주 유용하게 이용할 수 있는 사이트입니다.

수십만여개의 아이콘을 다운받을 수 있고 많은 부분을 무료로 받을 수 있습니다.


iconmonstr


iconfinder




사용방법은 실행하고 바로 스포이드를 드래그해서 사용하면 된다.


간단한 색상추출기 - ColorCop

다운로드 링크



위 링크를 통해 홈페이지로 이동해서 다운로드할 수 있다.

'colorcop-setup.exe'는 설치파일이고 무설치로 사용하려면 아래 'colorcop.zip'를 다운받으면 된다.


1. 프로그램 세그먼트의 개요

최소한 3개의 세그먼트로 구성 : 코드 세그먼트, 데이터 세그먼트, 스택 세그먼트

코드 세그먼트 : 프로그램이 수행해야 할 명령어들을 가지고 있다

데이터 세그먼트 : 코드 세그먼트에 있는 명령어 들이 처리해야 할 데이터를 저장하는 곳

스택 세그먼트 : 일시적으로 정보를 보관하는 곳

 

1.1 세그먼트의 시작 위치와 정의

세그먼트 : 메모리의 한 영역, 최대 64kb의 공간을 차지, 시작번지는 0H로 끝나는 번지로 항상 16으로 나누어 떨어져야 한다.

 

1.2 논리 번지와 물리 번지

물리번지(physical address) : CPU의 어드레스 핀에 출력, 메모리 인터페이스 회로에 의해 디코드되는 20비트 번지, 8086 명 리얼모드(286, 386, 486)에서 모두 00000H~FFFFFH. 1mb의 메모리 범위 내에 있음. ROM, RAM의 실제 번지.

옵셋 번지(offset address) : 64kb 세그먼트 범위 내에 있는 번지로 0000H~FFFFH의 값을 가짐.

논리 번지(logical address) : 세그먼트의 값과 옵셋 번지로 결정


ex) CS:IP 24F6:634A

논리번지 : 24F6:634A

옵셋번지 : 634A

물리번지 : 24F60H + 634AH = 2B2AAH

(H는 16진수를 표현한다.)  

물리번지의 최소값 : 24F60 + 0000 = 24F60

코드 세그먼트의 최대값 : 24F60 + FFFF = 34F5F

 

1.3 코드 세그먼트

프로그램을 수행하기 위해 8086은 명령어를 코드 세그먼트에서 읽어옴. 명령어의 논리 번지는 항상 CS(code segment)와 IP(instruction pointer)로 구성되며 CS:IP로 표현한다.

 

1.4 리틀 엔디언 규칙

16비트의 데이터를 저장할 땐, 하나의 번지에 1바이트의 데이터가 저장되므로 2개의 번지에 나누어야 하는데 그때 하위바이트는 아래쪽의 번지에, 상위 바이트는 위쪽의 번지에 저장하는 것을 말한다.

 

1.5 엑스트라 세그먼트

ES(extra segment)는 여분의 데이터 세그먼트로 쓰임. 문자열(string)을 다루는 데 있어서 중요한 역할을 한다.

 

1.6 IBM PC의 메모리 맵

RAM

640K

00000H ~ 9FFFFH

(0~255 : 인트럽터벡터테이블,

BIOS 데이터 영역)

Video Display

RAM 238K

A0000H ~ BFFFFH

ROM

256K

C0000H ~ FFFFFH

(F0000H ~ FFFFFH 까지만 BIOS에 의해 사용)


1.6.1 RAM

휘발성 메모리로써 메모리를 관리하는 일은 아주 복잡하기 때문에 사용자에게 맡겨지지 않고 DOS에 맡겨진다. 일반 사용자는 물리 번지를 지정하는 것에 대한 지식이 없기 때문에 CS, DS, SS 같은 세그먼트 레지스터의 값을 직접 다루지 않는다.

 

1.6.2 ROM

비휘발성 메모리로 C0000H에서 FFFFFH까지가 ROM을 위한 할당이다. 이중 F0000H에서 FFFFFH까지의 64KB만 BIOS에 의해 사용된다. 그 외의 공간은 여러 가지 어댑터 카드에 의해 쓰이거나 비어 있다.

 

1.6.3 BIOS ROM의 기능

CPU는 메모리에 저장되어 잇는 프로그램만 수행할 수 있으므로 전원 스위치를 켰을 때 CPU가 수행해야 할 프로그램을 보관하고 있는 비휘발성 메모리가 필요하다. ROM에 저장되어 있는 이런 프로그램들 PC에서는 BIOS라고 하며, RAM과 CPU에 저장되어 있는 여러 가지 장치를 테스트하고 에러를 사용자에게 알려준다. 주변기기에 대한 테스트와 초기화가 모두 끝나게 되면 DOS를 RAM에 적재하고, PC의 컨트롤을 DOS에게 넘겨준다.

 

 

 

 

 

 

 

 


Hash_Chaining.cpp


'낙서장' 카테고리의 다른 글

OS Command  (0) 2014.01.16
WEB Bookmark  (3) 2014.01.07
temp_page  (0) 2013.11.13
원격  (1) 2013.10.05

+ Recent posts