먼저 나는 android 먼저 깔았다. 

그 다음 flutter 깔았는데,,, 

1. flutter.dev 에서 mac sdk 깔았음

2. dev 폴더 만들어서 압축 풀어서 넣었음

3. vs code를 이용하는 방법이 있지만 그냥 터미널에서 해보겠음

- 터미널가서

cd ~
vi ./.zshrc

한 다음에 i 누르고

#flutter
export PATH=$PATH:~/dev/flutter/bin

넣어줌 (나는 ~/dev/ 여기에 압축 푼 flutter 넣었음)

esc 누름 -> :wq! 입력 -> 엔터

4.

source ~/.zshrc

업뎃 해주고

5. 

flutter
flutter --version
flutter doctor

한번씩 실행해보고

doctor에서 X표시나면

6-1. Android toolchain - cmdline-tools componet is missing

Android 실행 -> 

톱니바퀴 아이콘(오른쪽에서 두번째) -> SDK manager -> 

여렇게 들어가서 사진에 보이는 3번째 (Android SDK Command-line Tools 설치

 

6-2. 터미널에 입력

flutter doctor --android-licenses

 

7. 

[✗] Xcode - develop for iOS and macOS
    ✗ Xcode installation is incomplete; a full installation is necessary for iOS
      and macOS development.
      Download at: https://developer.apple.com/xcode/download/
      Or install Xcode via the App Store.
      Once installed, run:
        sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
        sudo xcodebuild -runFirstLaunch
    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin
        code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To install see
      https://guides.cocoapods.org/using/getting-started.html#installation for
      instructions.

xcode를 설치해야한다네?

난 mac os 가 처음이라서 아무것도 몰랐움 ㅋ 

xcode 설치해보자잉 사이트에서 하는게 빠르다던데 못 찾아서... 

app store에서 함 해봐야겠당

꽤나 빨리 설치됨! 

 

바로 위의  명령어 실행

        sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
        sudo xcodebuild -runFirstLaunch

 

You have not agreed to the Xcode license agreements, please run 'sudo xcodebuild -license' from within a Terminal window to review
and agree to the Xcode license agreements.

아 진짜 계속 하란대로 sudo xcodebuild -license 했는데 안되는겨

걍 app실행하니깐 똑같이 agree할거냐고 떠서 agree했움

 

 

8.

Building flutter tool...
Resolving dependencies... (3.0s)
Got dependencies.
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.10.6, on macOS 13.4 22F2063 darwin-arm64, locale ko-KR)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[!] Xcode - develop for iOS and macOS (Xcode 14.3.1)
    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart
        side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To install see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.3)
[✓] VS Code (version 1.80.2)
[✓] Connected device (2 available)
[✓] Network resources

아오 하란대로 사이트 들어가서 봄

https://guides.cocoapods.org/using/getting-started.html#installation

sudo gem install cocoapods
ERROR:  Error installing cocoapods:
	The last version of activesupport (>= 5.0, < 8) to support your Ruby & RubyGems was 6.1.7.4. Try installing it with `gem install activesupport -v 6.1.7.4` and then running the current command again
	activesupport requires Ruby version >= 2.7.0. The current ruby version is 2.6.10.210.

나한테 왜이래

 

brew도 설치 안 되어있네..?

https://whalec.io/mac/mac-homebrew-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95/#google_vignette

 

[Mac] Homebrew 설치 및 사용 방법 - 꿈꾸는 개발자

[Mac] Homebrew 설치 및 사용 방법 - Homebrew는 명령어 한 줄로 프로그램을 설치/제거할 수 있는 프로그램으로 Mac 사용자라면 반드시 설치해야 하는 필수 애플리케이션입니다.이번 글에서는 Homebrew를

whalec.io

여기 보고 설치함

 

https://jojoldu.tistory.com/288

 

Mac에서 Gem::FilePermissionError 에러 발생시 해결 방법

Mac에서 Ruby의 패키지 매니저인 gem을 통해 설치를 진행하다 다음과 같은 에러를 만납니다. $ gem install bundler ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /Library/Ruby/Ge

jojoldu.tistory.com

천천히 해보자 위에꺼 해봄 잘 됨

 

sudo gem install cocoapods

 

9.

안드로이드 앱 들어가서

플러그인 설치 - flutter, Dart

했는데 또 나옴...

 

 

dart 설치

brew tap dart-lang/dart
brew install dart

리스타트 함

 

 

안드로이드 캐시 지우고 다시 여니깐 됨

 

 

mybatis 를 이용해서 쿼리문 이용하다가 에러가 났다. 

 

이유는, 

PostRepository.java

package com.poscoict.jblog.repository;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.poscoict.jblog.vo.PostVo;

@Repository
public class PostRepository {
	@Autowired
	private SqlSession sqlSession;

	public List<PostVo> getPost(String blog_id) {
		return sqlSession.selectList("post.fintByid",blog_id);
	}
	
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="post">
	<select id="findByid" parameterType="string" resultType="list">
	<![CDATA[
		select * 
		from post
		ORDER BY no DESC;
	]]>
	</select>
</mapper>

PostRepository에서 list로 쿼리 결과값을 받아서 그럼 post.xml에서도 list로 반환하겠지? 라고 생각했는데

아니였다. 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="post">
	<select id="findByid" parameterType="long" resultType="postvo">
	<![CDATA[
		select * 
		from post
		where category_no=#{category_no}
		ORDER BY no DESC;
	]]>
	</select>
</mapper>

 

List<PostVo>로 받기 때문에

resultType을 PostVo의 별칭인 postvo로 설정해주니깐 됐다!!!

 

'study > java' 카테고리의 다른 글

[Tomcat] 설치 및 eclipse 설정  (0) 2022.01.01
JAVA 상속(2)  (0) 2021.12.04
JAVA 상속  (0) 2021.12.04
[백준] 2750_수 정렬하기 (java)  (0) 2021.11.13
java Ajax 연습하기  (0) 2020.07.25

mysql -u root -p할 때 오류남

 

 

service mysql restart

Redirecting to /bin/systemctl restart mysql.service

systemctl start mariadb
mysql -u root -p

하니깐 된다!!

'study > JAVA 전문가' 카테고리의 다른 글

[linux] 톰캣 설치  (0) 2022.01.26
[HTML/CSS]  (0) 2022.01.11
[JSP] filter  (0) 2022.01.06
[JSP] 방명록 프로그램  (0) 2022.01.05
[JSP] EL  (0) 2022.01.05
  1. ifconfig로 ip 확인
IPADDR=192.168.0.69
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=168.126.63.1
DNS2=168.126.63.2

DNS는 nslookup www.----.com  을 통해서 알아냈다. 

2. tomcat 압축 풀기

tar xvfz apache-tomcat-8.5.75.tar.gz

3. 톰캣 위치 옮기기

mv apache-tomcat-8.5.75

/usr/local/poscoict/tomcat8.5에 확인

4. 톰캣 실행

[root@localhost poscoict]# tomcat8.5/bin/catalina.sh start

 

5. 작업 관리자 확인

ps -ef | grep tomcat

 

6. 네트워크 열려져 있는 것 확인

netstat -anp | grep 8080

 

7. 톰캣 중단

/usr/local/poscoict/tomcat8.5/bin/catalina.sh stop

 

8. 서비스 등록

 vi /usr/lib/systemd/system/tomcat.service

 

9. 톰캣 시작하고 종료하고 reboot해서 톰캣 확인 

- systemctl start tomcat
- ps -ef | grep tomcat
- systemctl stop tomcat
- sync
- sync
- sync
- sync
- sync

- reboot
- http://192.168.0.69:8080/

 

10. 

 vi /usr/local/poscoict/tomcat8.5/conf/tomcat-users.xml

해서 맨 밑 </tomcat-users>바로 위에

<role rolename="manager"/>
  <role rolename="manager-gui" />
  <role rolename="manager-script" />
  <role rolename="manager-jmx" />
  <role rolename="manager-status" />
  <role rolename="admin"/>
  <user username="admin" password="manager" roles="admin,manager,manager-gui, manager-script, manager-jmx, manager-status"/>

붙여넣기

 

여기서 비밀번호 잘 기억

톰캣 manager app클릭하면 비밀번호 치는 거 나옴

 

11. tomcat manager 설정

vi /usr/local/douzone2021/tomcat/webapps/manager/META-INF/context.xml

원래 기존의 context 주석 처리해줌

<Context antiResourceLocking="false" privileged="true" docBase="${catalina.home}/webapps/manager">
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="^.*$" />
</Context>

추가해준다. 

 

12. 다시 시작해줘서 확인

systemctl stop tomcat
systemctl start tomcat

http://192.168.0.69:8080/manager/html 들어가서 manager app 들어가서 비번치면 manager들어가짐

Maven

  • 빌드, 패키징, 문서화, 테스트와 테스트 리포팅, git, 의존성관리, svn 등 손쉽게 할 수 있다.
  • 형상관리서버와 연동(SCMs), 배포 쉽게 가능
  • Coc (Converntion over Configuration)
    • 소스파일이 어느 위치에 있는 지를 미리 정함
  • 이점 : 직접 다운 받지 않아도 라이브러리 사용 가능
  • pom.xml
    <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>kr.or.connect</groupId>
        <artifactId>examples</artifactId>
        <packaging>jar</packaging>
        <version>1.0-SNAPSHOT</version>
        <name>mysample</name>
        <url>http://maven.apache.org</url>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
        </depend​
  • groupId : 프로젝트 생성하는 조직 고유 아이디
    • com.poscoict
  • artifactId : 고유 아이디
    • 빌드하면 파일이 [고유아이디]-[version].jar로 파일이 생김
  • dependency
    • dependencies : 필요한 라이브러리 지정함

 

jsp 실행 순서

서블릿

  • 자바 웹 어플리케이션의 구성 요소 중 동적인 처리하는 역할
  • was에서 동작하는 java 클래스
  • HttpServlet클래스를 상속 받아야 함

브라우저 동작

브라우저 기본 구조

  1. 사용자 인터페이스 
  2. 브라우저 엔진 - 브라우저 sw 실행
  3. 렌더링 엔진 - 위치, 색, 표시 (브라우저 마다 다름)
    • Html 파싱 (DOM트리 구축) 
    • 렌더 트리 구축
    • 렌더 트리 배치
    • 렌더 트리 그리기 
  4. networking - 통신, http와 같은 네트워크 호출에 사용, 각 플랫폼 하부에서 실행됨
  5. java script interpreter - 자바 스크립트 코드 해석
  6. ui backend 

파싱 

  • 토큰 단위로 잘라서 실행하는 것
  • 2 +  3 - 1이면 다 잘라서 실행하는 것
  • Html 파서 : make up = tree 구조
  • css 파싱 : selectors와 Declarations있음
    • selectors : p
    • Declarations : Margin-top 3px 예로 들 수 있다.

https://www.html5rocks.com/en/tutorials/internals/howbrowserswork/

 

How Browsers Work: Behind the scenes of modern web browsers - HTML5 Rocks

In this comprehensive primer, you will learn what happens in the browser between when you type google.com in the address bar until you see the Google page on the browser screen.

www.html5rocks.com

 

웹 서버 동작

 

DBMS

  • 데이터 베이스 관리하는 sw
  • 보안이 나쁨
    • 다수의 사용자가 DB내에 접근할 수 있도록 함
    • 클라이언트 로직이 많으면 관리가 어려워짐

 

미들웨어

  • 비지니스 로직을 클라이언트와 DBMS사이의 미들웨어 서버에서 동작하게 만듦
  • 클라이언튼느 입출력만 담당

WAS

  • 미들웨어
  • 클라이언트 요청 중 웹 app이 동작하도록 지원
  • 웹 서버 기능 내장함
  • 규모가 커질 수록 웹 서버와 WAS 분리함
  • 웹서버는 WAS보다 더 간단하다.
  • build tool
    • |--- ant
    • |--- maven   -->     jar, war파일 
    •                build
      • pom.xml : 프로젝트 설명 manifest
        1. dependency : 라이브러리 의존성
        2. build desciption (배포 우찌하는 지): compile, packaging, deployment
    • |--- gradle
  • 콘솔, 웹어플리케이션의 차이
    • 한 놈이 public static void main 가지고 있어야한다. 

 

tomcat

   |--- webapps

             |--- /admin

             |--- mysite.war

             |--- /mysite

  • 직접 admin 에 접근해서 해도 되고, 
  • 자동적으로 해도 되고 (톱캣 플러그인) -> 소켓열어서 -> admin -> 파일 업로드 -> 톰캣이 풀어서
  • 이클립스에서 일어나진 않는다. ( C서버)

 

멀티 프로그램

javastudy

     |--- practice01

     |--- practice02

     |--- practice03

     |--- practice04

     |--- practice05

 

부모 모듈

부모 모듈의 pom.xml가서

	<!-- 한글 -->
	<properties>
		<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>utf-8</project.reporting.outputEncoding>
	</properties>

	<dependencies>
	</dependencies>

	<build>
		<sourceDirectory>src/main/java</sourceDirectory>
		<finalName>helloworld</finalName>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.8.0</version>
				<configuration>
					<source>11</source>
					<target>11</target>
				</configuration>
			</plugin>
		</plugins>
	</build>

 

 

톰캣 재설치

 

mysql 정보 들고오기

mysql의 table내용 불러오기

testVO.java

package com.poscoict.test.vo;

public class testVO {
	private Long no;
	private String firstName;
	private String lastName;
	private String email;
	public Long getNo() {
		return no;
	}
	public void setNo(Long no) {
		this.no = no;
	}
	public String getFirstName() {
		return firstName;
	}
	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}
	public String getLastName() {
		return lastName;
	}
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	
}

 

 

 

 

mysql 

1. mysql connection 추가

 

2. 사용자 추가 & 비밀번호 설정 (testDB로 설정함)

create user 'testDB'@'localhost' identified by 'testDB';

 

3. 사용자 권한 부여

-- 권한 부여
grant all privileges on webdb.* to 'testDB'@'localhost';
  • 만약 grant all privileges on a.* to 'tttt'@'localhost';
  • 이면 tttt에게 a의 모든 테이블에 대한 권한 부여

 

4. Diagram 만들기

 

5. Forward Engineer를 누른다. 

next

 

show tables;

desc emaillist;
insert into emaillist values(null, '둘', '리', 'dooly@gmail.com');

-- read
select `no`, `firstName`, `lastName`, `email` from emaillist order by no desc;

설정해준다. 

 

 

eclipse

  • perspective(조망) 개발(JAVA SE, JAVA EE) view 배치
  • 설정
    • encoding
      java Properties File빼고 다 UTF-8로
    • spelling disable
    • export
      • /.settings
      • /.classpath
      • .projects 가 있는 얘들 -> 커모
      • src 
      • pom.xml
    • 커버낫 프로젝트
      • maven -> /.settings, /.classpath, .projects가 나옴
      • 빌드툴 
        • src
        • pom.xml
        • (멀티 프로젝트 만들 수 있음)
          •  servlet-practice (부모) 
            • |--- helloweb (라이브러리 만드는 )
            • |--- guestbook (라이브러리 사용하는 app)
            • |--- mysite 
      • gradle

프로젝트 구조

  • 이클립스
    • project
      • |--- src 
        1. * .java
        2.  package
          1. 프로젝트의 구조를 나누는 역할
            • 기능 분리
          2. 클래스 충돌 방지
            • 구조를 잘 나눠야 한다. 
            • 개발하는 사람 기준 
            • 큰 데서 작은 곳으로
            • com.javax.hello ,,, ㄷ으등
      • |--- bin
        • 클래스 있음
          • cmd창에서 실행해보기
            1. 클래스가 어디에 있는지를 먼저 찾아야함 - class path필요
            2. java -cp . 위치

 

maven

  • 빌드 위치는 target
    • src, pom.xml 만 올려도 됨
  • |--- src
    • main
      • java
        • hello
          • HelloWorld.java
      • resources : 소스말고 다른 것 (설정파일) - 패키지 (컴파일 대상이 아님)
        • config
          • db.properties
  • |--- test ( 테스트 클래스 만드는 것 - 실패하면 빌드 안 함)
    • java
      • hello
        • HelloWorld.java

  • target
    • hello
      • HelloWorld.class
    • cinfig
      • db.properties

pom.xml - 빌드 옵션 설정하는 파일

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.poscoict</groupId>
	<artifactId>helloworld</artifactId>
	<version>0.0.1-SNAPSHOT</version>


	<properties>
		<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>utf-8</project.reporting.outputEncoding>
	</properties>

	<dependencies>
	</dependencies>

	<build>
		<sourceDirectory>src/main/java</sourceDirectory>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.8.0</version>
				<configuration>
					<source>11</source>
					<target>11</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>
  • pom추가해주고 
  • maven update해준다. 
  • 서버환경에 올려야해서 build해야 함 - J2SE-1.5가 바뀜
  • javaSE로 바꿔주기위해 configuration 바꿔줌

waven 실행

꼴 설정하고 run해주면 됨
따로 설정 안 해주려면 이렇게 적어놓으면 된다. 
실행 후 console
실행 후 생김

 

[문제]

게시판 만들다가 댓글을 입력하고 새로고침을 하면 댓글이 한 개 더 재 등록이 되는 것이다!

form태그에 submit이 계속 되는 것이다. 

 

구글링 한 결과 

https://hulbo.tistory.com/13

 

javascript 새로고침 방지

JavaScript 새로고침 방지 웹 개발을 하다보면 저장후 또는 삭제등 목록이나 여러 부분에서 액션 수행후 새로고침(F5)으로 인해 고생하는 경우가 있다. 액션이나 DB로 해결할 수도 있지만 간단하게

hulbo.tistory.com

 

1번방법을 사용했더니 됐다!!

<script type="text/javascript">
    //새로 고침 시 재 등록 방지
    function notReload(){
      if((event.ctrlKey == true && (event.keyCode == 78 || event.keyCode == 82)) || (event.keyCode == 116) ){
        event.keyCode = 0;
        event.cancelBubble = true;
        event.returnValue = false;
        var frm = document.addForm;
        frm.action = "액션값";
        frm.submit();
      }
    }
    document.onkeydown = notReload;
</script>

 

'study > 웹 프로그래밍' 카테고리의 다른 글

[boostcource] 웹 백엔드 1  (0) 2022.01.18
[jsp] 뒤로가기 누를 시 새로고침  (0) 2022.01.10
starting Tomcat v9.0 Server at localhost  (0) 2021.12.27

+ Recent posts