대화형 인공지능

ChatGPT

https://chatgpt.com/

 

Gemini

https://gemini.google.com/

 

Claude

https://claude.ai/

 

Grok

https://grok.com/

 

Copilot

https://copilot.microsoft.com/

 

Perplexity

https://www.perplexity.ai/


이미지 / 디자인

Stable Diffusion

텍스트 프롬프트를 사용하여 이미지 생성

https://stablediffusionweb.com/ko

 

Flux

텍스트 프롬프트를 사용하여 이미지 또는 비디오 생성

https://flux1.ai/ko

https://huggingface.co/spaces/black-forest-labs/FLUX.1-dev

 

Midjourney

텍스트 설명을 바탕으로 독특하고 예술적인 이미지를 생성

https://www.midjourney.com/explore?tab=video_top

 

Playground

다양한 디자인 요소를 활용하여 로고, 소셜 미디어 이미지 등 생성

https://playground.com/design/c/logo

 

Looka

AI를 기반 맞춤형 로고를 생성 및 브랜드 아이덴티티 구축

https://looka.com/

 

Figma

클라우드 기반의 협업 디자인 및 프로토타이핑 도구로, UI 및 UX 디자인에 활용

https://www.figma.com/ko-kr/


동영상 / 비디오

Runway

텍스트, 이미지, 비디오 등을 기반으로 다양한 형태의 AI 비디오를 생성하고 편집

https://runwayml.com/

 

Pika

텍스트 프롬프트나 이미지를 활용하여 사실적이고 다양한 스타일의 비디오를 생성

https://pika.art/

 

Luma

텍스트, 이미지, 또는 동영상을 입력하여 3D 모델(NeRFs)을 생성하고, 이를 다양한 각도에서 탐색하거나 렌더링https://lumalabs.ai/


오디오 / 음악

Riffusion

텍스트 프롬프트를 사용하여 음악 및 오디오를 생성

https://www.riffusion.com/

 

Suno

텍스트 프롬프트로 가사, 보컬, 악기 연주가 모두 포함된 완전한 노래를 생성 가능

https://suno.com/home

 

ElevenLabs

텍스트를 자연스러운 음성으로 변환하는 AI 기반의 음성 합성 도구 (Text-to-Speech) 

https://elevenlabs.io/text-to-speech

 

Descript

텍스트 스크립트를 편집하는 것처럼 오디오/비디오를 편집할 수 있는 도구

https://www.descript.com/


웹사이트 / 사업

Waveon

쉽게 웹사이트를 만들 수 있도록 돕는 노코드 비즈니스 툴

https://www.waveon.io/

 

Durable

AI를 사용하여 몇 초 만에 웹사이트를 생성하는 도구

https://durable.co/

 

Gamma

텍스트 프롬프트로 PPT, 문서, 웹페이지를 자동 생성

https://gamma.app/

 

Zapier

다양한 웹 애플리케이션들을 서로 연결하여 작업을 자동화하는 도구

https://zapier.com/


코딩

Cursor

AI 기능을 내장하여 코드 생성, 질문 답변, 코드 편집, 디버깅 등을 돕는 개발자용 IDE

https://www.cursor.ai/

 

GitHub Copilot

AI 기반의 코드 작성 보조 도구로, 주석이나 부분적인 코드 입력만으로 전체 함수나 코드 블록을 제안하고 완성 https://github.com/features/copilot/

 

Replit

클라우드 기반의 통합 개발 환경(IDE)으로, 다양한 프로그래밍 언어를 지원하며 코드 편집, 실행, 디버깅, 협업 기능을 제공

https://replit.com/

 

Tabnine

AI 기반의 코드 자동 완성 도구로, 개발자가 코드를 작성하는 동안 문맥을 이해하여 관련성 높은 코드 스니펫을 제안

https://www.tabnine.com/

 

Windsurf (Codeium)

코드 자동 완성, 코드 생성, 채팅 기반 코드 지원 등을 제공하는 무료 AI 코딩 도구

https://windsurf.com/

'etc. > Tools' 카테고리의 다른 글

LaTeX 수식 변환 사이트 모음  (2) 2025.01.07

에러 설명

안드로이드 스튜디오에서 버튼 또는 스위치를 생성 시 Constraint를 지정하지 않아 발생한다. 

생성한 Button에 Constraint를 지정하지 않음

 

해결 방법

  • Solution 1
    • constraint를 직접 지정하여 해결한다. 
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"

Constraint를 직접 지정함

 

  • Solution 2
    • Infer Constraints 사용
    • Design 탭에서 해당 오브젝트를 선택하여 Infer Constraints를 사용한다. 
    • 결과는 Solution 1과 같다. 

 

결과

Missing Constraints in ConstraintLayout 에러가 사라진다. 

'Programming > Errors' 카테고리의 다른 글

[Android_Error] Hardcoded text 해결법  (0) 2025.03.06

에러 설명

안드로이드 스튜디오에서 버튼 또는 스위치를 생성 시 해당 에러가 발생한다. 

말 그대로 text가 hardcode 되었기 때문에 발생한다. 

실행은 정상적으로 되지만 안전하지 않다. 

텍스트 "Button"이 Hardcoded 됨

 

해결 방법

텍스트를 직접 hardcode 하지 않고 @string 리소스를 사용하여 해결한다. 

res/values/strings.xml 파일에서 문자열 변수에 텍스트를 할당한다. 

strings.xml의 text_button 변수에 "Button" 텍스트를 할당

 

이후 기존 텍스트가 있던 자리를 "@string/지정변수명"으로 대체한다.

"Button"을 "@string/text_button"으로 대체함

 

결과

Hardcoded text 에러가 사라진다

+) Missing Constraints in ConstraintLayout 에러에 대한 내용은 여기를 참조

 

Ελληνικό αλφάβητο

  • Α / α
    • alpha / 알파
  • Β / β
    • beta / 베타
  • Γ / γ
    • gamma / 감마
  • Δ / δ
    • delta / 델타
  • Ε / ε
    • epsilon / 엡실론
  • Ζ / ζ
    • zeta / 제타
  • Η / η
    • eta / 에타
  • Θ / θ
    • theta / 세타
  • Ι / ι
    • iota / 이오타, 요타
  • Κ / κ
    • kappa / 카파
  • Λ / λ
    • lambda / 람다
  • Μ / μ
    • mu / 뮤
  • Ν / ν
    • nu / 뉴
  • Ξ / ξ
    • xi, ksi / 크사이
  • Ο / ο
    • omicron / 오미크론
  • Π / π
    • pi / 파이 ([p] 발음)
  • Ρ / ρ
    • rho / 로
  • Σ σ
    • sigma / 시그마
  • Τ τ
    • tau / 타우
  • Υ υ
    • upsilon / 입실론
  • Φ φ
    • phi / 파이, 피 ([f] 발음)
  • Χ χ
    • chi / 카이
  • Ψ ψ
    • psi / 프사이
  • Ω ω
    • omega / 오메가

Java

 

is-a 관계와 has-a 관계는 모두 객체(클래스) 간의 관계를 정의한다.


is-a 관계

상속 관계를 표현할 때 사용

'A는 B이다' 로 해석할 수 있는 관계

has-a 관계보다 밀접하게 연관된 관계

개체 간의 일반화(Generalization) 또는 특수화(Specialization) 관계를 나타냄

예시 : 강아지는 동물이다, 학생은 인간이다 ...

// 부모 클래스 (Super Class)
class Animal {
    void eat() {
        System.out.println("동물이 음식을 먹습니다.");
    }
}

// 자식 클래스 (Sub Class)
class Dog extends Animal {  // 상속 (is-a 관계)
    void bark() {
        System.out.println("멍멍!");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog myDog = new Dog();
        myDog.eat();  // 부모 클래스의 메서드 사용
        myDog.bark(); // 자식 클래스의 메서드 사용
    }
}

 

has-a 관계

포함 관계 또는 구성 관계를 표현할 때 사용

'A는 B를 가진다' 로 해석할 수 있는 관계

is-a 관계보다 덜 밀접하게 연관된 관계

일반적으로 is-a 관계보다 has-a 관계를 고려하는 것이 유연성과 유지 보수 측면에서 유리함

두 클래스가 독립적으로 존재할 때, 한 클래스 내에서 다른 클래스를 속성(변수)로 포함할 때 사용

개체 간의 객체 포함(Composition/Aggregation)을 나타냄

예시 : 자동차는 엔진을 가진다, 스마트폰은 배터리를 가진다 ...

// Engine 클래스 (독립적인 클래스)
class Engine {
    void start() {
        System.out.println("엔진이 시작됩니다.");
    }
}

// Car 클래스는 Engine을 '가지고 있음' (Composition)
class Car {
    private Engine engine; // Engine 객체를 포함 (has-a 관계)

    // 생성자를 통해 Engine 객체를 주입
    Car(Engine engine) {
        this.engine = engine;
    }

    void startCar() {
        System.out.println("자동차 시동을 겁니다.");
        engine.start(); // 포함된 Engine 객체의 기능 사용
    }
}

public class Main {
    public static void main(String[] args) {
        Engine myEngine = new Engine(); // Engine 객체 생성
        Car myCar = new Car(myEngine); // Car 객체에 Engine 포함

        myCar.startCar(); // Car의 기능 실행
    }
}

'Programming > Java' 카테고리의 다른 글

[Java] 상속 (Inheritance)  (1) 2025.03.04
[Java] 생성자 (Constructor)  (0) 2025.03.04
[Java] 클래스 변수, 인스턴스 변수, 로컬 변수, 매개 변수  (0) 2025.02.28
[Java] Java란?  (1) 2025.02.28

Java

추상화 / Abstraction

하위 클래스의 중요한 공통 핵심 특징을 추출한 대략적인 틀로 상위 클래스를 만드는 것

 

구체적인 내용은 하위 클래스에서 정의하도록 함

하위 클래스 정의에 상위 클래스를 사용하는 상속의 반대 개념이라고 할 수 있음

 

속성, 메서드 등의 중복을 줄이고 코드 재사용성을 높일 수 있음

클래스 간 관계를 명확히 하여 가독성을 높이고 유지 보수를 용이하게 함

실제 사용자에게 필요한 기능만 제공하고 내부 구현을 감추는 용도로 사용할 수 있음

 

추상 클래스인터페이스로 구현 가능


추상 클래스 / Abstract class

하나 이상의 추상 메서드(Abstract method)를 포함하는 클래스

 

추상 클래스 및 추상 메서드는 abstract 키워드로 생성하며, extends 키워드로 상속함

추상 클래스는 직접적으로 객체를 생성하여 인스턴스화 할 수 없음

추상 메서드를 하위 클래스에서 반드시 오버라이딩하여 재정의 및 구체화 해야 함

 

추상 클래스 안에 추상 메서드가 아닌 일반 메서드도 포함될 수 있음

단일 상속만 가능(단일 Class만 생성 가능)하고 다중 상속이 불가능함

abstract class Animal {  // 추상 클래스
    String name;

    Animal(String name) {
        this.name = name;
    }

    void eat() {  // 일반 메서드 (구현이 있음)
        System.out.println(name + " is eating.");
    }

    abstract void makeSound();  // 추상 메서드 (구현 없음)
}

class Dog extends Animal {  // 상속
    Dog(String name) {
        super(name);
    }

    @Override  // 추상 메서드 오버라이딩
    void makeSound() {
        System.out.println(name + " says Woof!");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog("Buddy");
        dog.eat();
        dog.makeSound();
    }
}

인터페이스 / Interfaces

인터페이스는 interface 키워드로 생성하며, implements 키워드로 상속함

 

class 키워드 대신 interface 키워드를 사용

모든 메서드는 추상 메서드로 이루어짐

모든 필드는 public static final로 정의된 상수 만으로 이루어짐 (명시하지 않아도 됨)

public 접근자만 사용 가능함

하위 Class에서 다중 상속 사용 가능 (확장의 개념)

package test_package;

interface Animal {  // 인터페이스
	// 키워드 생략 가능
	public static final int one = 1;
	public static int two = 2;
	public final int three = 3;
	static final int four = 4;
	public int five = 5;
	static int six = 6;
	final int seven = 7;
	int eight = 8;
	
    void makeSound();  // 추상 메서드 (구현 없음)
}

class Cat implements Animal {  // 상속
    @Override  // 추상 메서드 오버라이딩
    public void makeSound() {
        System.out.println("Meow!");
    }
}

public class Main {
    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.makeSound();
        System.out.println(Animal.one);
        System.out.println(Animal.eight);
    }
}

공통점

  • 추상 메서드를 가지고 있어야 한다. 
  • 직접 객체를 생성하여 인스턴스화 할 수 없다. 
  • 상속 받은 하위 클래스 또는 인터페이스의 인스턴스를 사용하여 상위 클래스 또는 인터페이스를 정의해야 한다. 
  • 추상 클래스 또는 인터페이스를 상속한 하위 클래스는 추상 메서드를 반드시 구현하여야 한다.

 

차이점

  • 추상 클래스
  • 공통 필드와 메서드를 제공하며 일부 기능만 구현을 강제할 때 사용 
    • 클래스 간의 연관 관계 구축에 초점을 둠
    • abstract, extends 키워드 사용
    • public 이외의 접근자를 사용할 수 있음 (protected, private...)
    • non-static, non-final 변수를 사용할 수 있음
    • 생성자를 가질 수 있음
    • 단일 상속만 가능함
  • 인터페이스
  • 여러 클래스에 특정 동일한 동작을 강제하거나 다중 구현이 필요할 때 사용 
    • 구현된 객체가 같은 동작을 하는 것을 보장하는 것에 초점을 둠
    • interface, implements 키워드 사용
    • public 접근자만 사용할 수 있음
    • public static final 변수(상수)만 사용할 수 있음
    • 생성자를 가질 수 없음
    • 다중 상속이 가능함

+ Recent posts