티스토리

기록자
검색하기

블로그 홈

기록자

forfull.tistory.com/m

PJH 님의 블로그입니다.

구독자
0
방명록 방문하기

주요 글 목록

  • vscode continue 사용하기 소개세상에는 다양한 AI 서비스들이 있다. vscode에는 cursor ai가 매우 큰 인기를 끌고 있다. 이번에는 vscode extension 중, "continue" 라는 서비스를 소개하겠다.     그냥 Cursor 쓰면 되지 않음?이 글은 Local LLM을 vscode에 연동하여 개발하기 위해 작성했다. 오픈소스 기반 LLM은 외부로 유출될 일도 없고, 특정 서버에 요청하여 답변을 가져오는 방식이 아니다.  대표적으로 gpt, claude, gemini가 서버에 요청하여 답변을 가져오는데해당 모델 서버가 문제가 있다던지서버 점검 중이라던가서버가 터졌다던가등 다양한 이유가 있다.  특히 Cursor 사용자들은 저런 서버 기반 api 모델들을 활용하는데,Cursor 서버가 맛탱이 가면 이건 이거대.. 공감수 2 댓글수 0 2025. 2. 12.
  • OCR을 이용하여 PDF에서 특정 텍스트 추출하기 사전 준비 1. Tesseract-OCR 설치Window 기준으로 OCR을 사용하려면 Tesseract-OCR을 설치해야 한다.https://github.com/UB-Mannheim/tesseract/wiki HomeTesseract Open Source OCR Engine (main repository) - UB-Mannheim/tesseractgithub.com  여길 들어가 “tesseract-ocr-w64-setup-5.5.0.20241111.exe (64 bit)” 를 다운하면 된다.  2. poppler 설치이 라이브러리는 PDF에서 image로 변환할 때 필요한 라이브러리다.https://github.com/oschwartz10612/poppler-windows/releases/여기 링크에 .. 공감수 0 댓글수 0 2025. 1. 18.
  • Termux에 QEMU 설치하고 OS 띄우기 이제 QEMU를 설치하고 OS를 띄워보자.여기선 Alpine을 설치할 거다.  QEMU 관련 패키지 설치pkg install -y qemu-utils qemu-common qemu-system-x86_64-headless     termux-QEMU VM image 생성 qemu-img create -f qcow2 alpine.img 20g  디스크 이미지를 qcow2 방식으로 구축하고 용량은 20GB로 설정한다. 용량은 휴대폰이 감당할 수 있는 범위 내 자유롭게 설정하면 된다.   Alpine 가상머신 파일 가져오기 wget https://dl-cdn.alpinelinux.org/alpine/v3.15/releases/x86_64/alpine-virt-3.15.3-x86_64.iso 2024년 12월 .. 공감수 5 댓글수 4 2024. 12. 22.
  • Termux 기본 설정 기본 설정Termux 소개글을 읽고왔다면 계속 이 글을 보고 있을 텐데, Termux 내 설정해야 될 것들이 몇 가지 있다.    1. 저장공간 허용하기termux-setup-storage -y 먼저 저장공간에 접근하는 것을 허용해준다. 터미널 내 패키지를 내려받거나 접근할 때 필요하다.  2. 저장소 설치하기pkg install root-repo x11-repo -ypkg upgrade  pkg upgrade 진행 중, 무언가 선택하는 게 나온다.  "keep your currently install version" 이라는 항목이 있을 것이다.해당 항목의 단축키를 입력하면 된다.아마 단축키가 n이었던 것 같다.   3. openssh, net-tools 설치pkg install -y opensshpkg.. 공감수 0 댓글수 0 2024. 12. 22.
  • Termux에 대해 TermuxTermux는 리눅스 터미널 에뮬레이터다.휴대폰에 설치할 수 있다. 남아도는 공기계가 있다면 공기계에 Termux 설치해서 로컬 서버로 활용 가능하다.설치설치는 아래 링크를 통해 apk를 직접 내려받으면 된다.모바일에서 다이렉트로 받는 걸 추천한다.[https://f-droid.org/packages/com.termux/][https://f-droid.org/packages/com.termux/]글의 취지24시간 가동가능한 로컬서버가 필요하다.로컬에서 Docker를 쓰고 싶다.주의사항시스템포트 (0 ~ 1023) 사용 불가안드로이드 보안 정책으로 인해 시스템 포트를 쓸 수 없다.때문에, 시스템 포트를 사용하는 서비스들은 포트 재설정이 필요하다.예로, SSH는 22번인데 2222번으로 바꾸는 식.. 공감수 1 댓글수 0 2024. 12. 22.
  • Flutter Navigator 사용법 플러터에서는 뭘로 화면 전환하지?Navigator를 사용하여 화면전환이 가능하다.화면 전환 코드에 대해 한 번 확인해보자. 사전 준비별도의 사전 준비는 필요 없다.다만, 코드 변경이 조금 필요하다.void main() => runApp( MaterialApp( home: MyApp(), ));class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Scaffold( ... ); }}MaterialApp이 뭐지?플러터에서 Material Design을 적용하기 위한 최상위 위젯이다.앱의.. 공감수 2 댓글수 0 2024. 12. 11.
  • 소크라테스 교육 이론과 LLM 흥미로운 논문이 하나 올라 왔다.[https://arxiv.org/abs/2411.16905]해당 논문 내용을 GPT로 분석해보았다.주요 내용은 "소크라테스 학습(Socratic Learning)"이라는 새로운 학습 방법론과 그 잠재력, 제한, 구현 방법에 대해 다룹니다.주요 내용소크라테스 학습의 정의소크라테스 학습은 AI 시스템이 폐쇄 환경(closed system)에서 자기 자신을 개선하는 과정을 통해 성능을 향상시키는 방법입니다.입력과 출력 공간이 호환되는 시스템에서 언어를 중심으로 자기 개선을 지속적으로 수행합니다.자기 개선의 필수 조건피드백(Feedback): 시스템 내부에서 학습 방향을 제시하는 피드백이 필요합니다.포괄성(Coverage): 학습 데이터가 충분히 다양한 경험을 포함해야 합니다... 공감수 4 댓글수 1 2024. 12. 2.
  • python venv clone & execute 아나콘다나 venve로 가상환경을 만들고 작업할 때, 다른 환경으로 옮긴다면 똑같이 가상환경을 만드는 작업이 필요하다. OS마다 명령어가 아주 조금씩 다르나 큰 차이는 없다. pip install ... # Ubuntu Python pip install source activate ... ...가상환경 접근과 깃에서 내려받는건 큰 문제 없다. 매 업데이트마다, 다시 내려받고 필요한 파일 옮기고 서버 재시작하고... 이 과정이 너무나도 귀찮다. source activate ... git clone ... nohup uvicorn ... # 아주 지랄났구먼. 언제까지 계속 타이핑 해야됨타이핑이 귀찮으니까 배치파일을 만들어서 해결하자. 예를 들어, github에 올려진 python fast api 서버를 ub.. 공감수 0 댓글수 0 2024. 4. 17.
  • aws EC2 Window Server에서 GPU 인식시키기 가상 환경에서 버츄얼 캐릭터를 띄워서 방송 플랫폼에 송출시키는 프로젝트를 수행 중이다. 과정에서, GPU를 사용할 필요가 있다 느껴 Window Server를 선택했다. 그러나 과정이 만만치 않았는데, 수많은 삽질 끝에 GPU를 인식시켰다. 아래는 나처럼 삽질하지 말고 제발 편하게 연결하라는 의미에서 이 글을 남긴다. 1. Window Server 이미지는 2016이나 2019를 선택한다. EC2에서 Window 운영체제로 가상머신을 생성한다면 Window Server만 나타난다. (정정) Window Server base 2022에서 GPU가 제대로 인식되는 게 확인됐다. 그 중, Window Server base 2022의 경우 GPU가 인식되지 않는다. (원인 불명) 생성 과정에서 인스턴스는 g4d.. 공감수 0 댓글수 2 2023. 10. 17.
  • 생성한 ec2 가상머신에 접속하기 https://forfull.tistory.com/entry/ec2-%EA%B0%80%EC%83%81%EB%A8%B8%EC%8B%A0-%EB%A7%8C%EB%93%A4%EA%B3%A0-%EC%A0%91%EC%86%8D%ED%95%B4%EB%B3%B4%EA%B8%B0 aws ec2 가상머신 만들기 2023년 8월 기준으로 aws의 UI가 변경됐습니다. 이미지로 올려 놓은 것들을 모두 변경할 예정입니다. 개요 ec2는 컴퓨터 자원. 즉, '컴퓨터'다. 우리가 쓰는 컴퓨터는 물리장치인 하드웨어가 있어야 forfull.tistory.com 가상머신을 안 만들었으면 위 블로그를 읽고 한 번 만들어보기 바란다. 우리가 만든 가상머신에 접근을 못하면 무슨 의미가 있는가? 가상머신을 만들었으니 접근해볼 차례다. 까다로.. 공감수 0 댓글수 0 2023. 8. 21.
  • 값을 조절하는 스케일러 (Scaler) 올해 6월부터 광주 인공지능 사관학교를 다녔다. AI 관련 교육을 듣고 있다. 여태 배운 내용을 조금씩 정리하고자, 블로그 형태로 글을 써보고자 한다. 스케일러 일반적으로 컴퓨터는 0과 1로 된 데이터를 처리한다. 화면 상에 나타나는 숫자가 아무리 커도 컴퓨터는 0과 1로 이루어진 데이터로 취급한다. 그러나, 숫자가 큰 값은 컴퓨터 스스로 중요하다고 여겨 비중을 크게 둔다. 즉, 큰 값을 위주로 연산하여 고르지 못한 출력 값을 낼 수 있다. 일부는 극단적인 값을 띄는 경우가 있다. 소위 '이상치'라고 부르는데, 특정 범위를 벗어난 값들이 대표적이다. 때문에, 그 범위를 최소화 하기 위해 스케일링 기법이 필요하다. 1. Standard Scaler 특정 데이터 컬럼 내 값들의 평균을 0, 표준편차를 1로 .. 공감수 0 댓글수 0 2023. 8. 18.
  • Flutter Toast 사용법 오늘은 Flutter에서 제공하는 FlutterToast를 다뤄보겠다.    Android Studio로 앱을 만들어봤다면 알곘지만 Android에서도 ToastMessage가 나온다. 똑같이 플러터도 ToastMessage를 지원하고 있다.   ToastMessage는 어디에 사용될까? 예로, 사용자의 잘못된 행동이나, 오류가 발생했을 때, 안내문구를 띄워야 한다. 그럴 때 fluttertoast를 이용하면 쉽게 안내문구를 띄울 수 있다.        1. 사전준비 pubspec.yaml에 들어가면 내용이 잡다하게 많다.그 중 dependencies:를 찾아 보자.  따로 건드린 게 없다면 20번째 줄 쯤에 보일 것이다. ...dependencies: flutter: sdk: flutter #.. 공감수 0 댓글수 0 2023. 5. 24.
  • Flutter TabBar 사용법 오늘은 flutter의 탭바 기본적인 사용법을 알아보겠다. 아주 기초만 담고 있기 때문에, 이미 탭바의 사용법을 알고 있다면 뒤로 가기를 누르면 된다.   1. 사전준비 플러터 프로젝트 하나만 있으면 된다. 새로 만들어도 되고, 이미 만들어놓은 프로젝트를 써도 된다. lib 폴더는 다음과 같이 구성하면 된다.lib└ main.dart└ views └ MyTabBar.dart └ FirstTab.dart └ SecondTab.dart    2. 시작하기 플러터 프로젝트를 생성했다면 중구난방한 코드가 매우 많을 것이다.  아래 코드만 남기고 나머진 전부 지운다.main.dart  debugShowCheckedModeBanner → false로 설정 시, 화면 상단에 나타나는 Debug Mode 배너가 .. 공감수 0 댓글수 0 2023. 5. 23.
  • NestJS 설치해보기 네스트 공식 홈페이지 NestJS - A progressive Node.js framework NestJS is a framework for building efficient, scalable Node.js web applications. It uses modern JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Reactive Progr nestjs.com NestJS는 node.js 기반 웹 API 프레임워크이다. Express나 Fastify에 래핑하여 동작한다. 기본 설치 시, Expre.. 공감수 0 댓글수 0 2022. 12. 25.
  • window에서 env 주입이 안될 때 1. 문제 ... import * as dotenv from 'dotenv'; import * as path from 'path'; dotenv.config({ path : path.resolve( (process.env.NODE_ENV === 'production') ? '.production.env' : (process.env.NODE_ENV === 'stage') ? '.stage.env' : '.development.env' ) }); ... /src/main.ts "start:dev": "SET NODE_ENV=development && nest start --watch", "start:stage": "SET NODE_ENV=stage nest && start --watch", package.j.. 공감수 0 댓글수 0 2022. 8. 4.
  • vue.js 여러 개의 컴포넌트를 코드 한 줄로 가져오기 1. 문제 import Vue from 'vue'; import VueRouter from 'vue-router'; import Signin from '../components/Signin.vue'; import Signup from '../components/Signup.vue'; import Post from '../components/Post.vue'; // ... 점점 늘어나는 컴포넌트들 Vue.use(VueRouter); export default new VueRouter({ mode : 'history', routes: [ { path : '/', component : Signin }, { path : '/signup', component : Signup }, { path : `/post`, .. 공감수 0 댓글수 0 2022. 8. 2.
  • 가상머신을 생성 하고 가장 먼저 해야 할 것 매우 중요하면서도 매우 간단한 작업이다. 1. 서버 접속 정보 설정하기 가상머신을 생성하고 어느 지역에서든 SSH로 접속할 수 있게 한다면 그건 골치아픈 일이다. 왜냐하면 가상머신과 연결되는 SSH 파일과 비밀번호만 있으면 언제 어디서나 접근이 가능하다. 그렇기 때문에 특정 IP 에서만 접근을 할 수 있게 설정해야 한다. 또한 HTTP나 HTTPS 포트가 잡혀 있는가도 확인해봐야 한다. 2. root 계정 설정하기 다음 명령어를 입력하여 root 계정의 비밀번호를 설정한다. sudo passwd root 비밀번호를 입력하면 된다. cmd 상에서 비밀번호 입력은 보안 떄문에 입력 정보가 나타나지 않게 설정해놓은 듯 하다. 비밀번호를 설정하고 해당 계정으로 접속하여 제대로 설정됐는가 확인한다. su root.. 공감수 0 댓글수 0 2022. 6. 5.
  • 가상머신에 cmd로 접속하기 https://forfull.tistory.com/entry/%EA%B0%80%EC%83%81%EB%A8%B8%EC%8B%A0%EC%97%90-SSH%EB%A5%BC-%EC%A0%81%EC%9A%A9%EC%8B%9C%ED%82%A4%EA%B3%A0-Putty%EB%A1%9C-%EC%A0%91%EC%86%8D%ED%95%B4%EB%B3%B4%EA%B8%B0 가상머신에 Putty로 접속해보기 https://forfull.tistory.com/entry/GCP%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-Ubuntu-%EA%B0%80%EC%83%81%EB%A8%B8%EC%8B%A0-%EB%A7%8C%EB%93%A4%EA%B3%A0-%EC%8B%A4%ED%96%89%ED%9.. 공감수 0 댓글수 0 2022. 5. 17.
  • express에 babel을 적용시키기 (2) https://forfull.tistory.com/entry/express%EC%97%90-babel%EC%9D%84-%EC%A0%81%EC%9A%A9%EC%8B%9C%ED%82%A4%EA%B8%B0 babeltest@1.0.0 start > npm run build & nodemon ./dist/app.js > babeltest@1.0.0 build > babel src -d dist Successfully compiled 2 files with Babel (526ms). [nodemon] 2.0.15 [nodemon] to restart at any time, enter `rs` [nodemon] watching path(s): *.* [nodemon] watching extensions: js,mj.. 공감수 0 댓글수 0 2022. 3. 19.
  • 파일 업로드 (memoryStorage) https://www.npmjs.com/package/multer multer Middleware for handling `multipart/form-data`.. Latest version: 1.4.4, last published: 3 months ago. Start using multer in your project by running `npm i multer`. There are 3171 other projects in the npm registry using multer. www.npmjs.com multer는 node.js에서 파일 업로드 / 다운로드 처리를 할 수 있는 기능을 제공해주는 모듈이다. 사용자의 파일을 서버에 업로드하고자 한다면 다음과 같은 코드를 작성할 수 있을 것이다. impor.. 공감수 0 댓글수 0 2022. 3. 15.
  • Chocolatey, 윈도우 패키지 관리자 https://community.chocolatey.org/ Community Chocolatey is software management automation for Windows that wraps installers, executables, zips, and scripts into compiled packages. Chocolatey integrates w/SCCM, Puppet, Chef, etc. Chocolatey is trusted by businesses to manage software deployments. community.chocolatey.org Chocolatey라고 윈도우에서도 명령어로 개발도구를 설치할 수 있는 패키지 관리자가 있다. https://community.chocol.. 공감수 0 댓글수 0 2022. 3. 9.
  • dependency와 devDependency의 차이 devDependencies : 개발 및 테스트 과정에서 필요한 패키지들 dependencies : (기술스팩)배포하는데 필요한 패키지들 Q : 그럼 쓰는것만 냅두고 나머진 다 지우면 되지 않나? 굳이 나눌 이유가 있나? 그렇게 해도 상관없지만 일일이 하나씩 다 찾아보면서 따지기엔 시간이 소모될 것이고 규모가 큰 프로젝트라면 더더욱 많은 시간을 소모하게 될 것이다. 그리고 개발 과정에서 설치한 패키지들 중 크기가 큰 패키지가 있을 경우 배포하는 과정에서 시간이 소모되는가하면, 서버 용량이 늘어나는 원인이 될 수 있다. 서비스에 필요한 패키지들만 모아놓는다면 용량을 줄일 수 있으며, 배포 시간을 조금이라도 줄일 수 있다. 공감수 0 댓글수 0 2022. 2. 9.
  • 이클립스에 스프링 연동하기 https://forfull.tistory.com/entry/open-jdk-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0 open jdk 설치하기 openJDK github 페이지가 존재한다. https://github.com/ojdkbuild/ojdkbuild GitHub - ojdkbuild/ojdkbuild: Community builds using source code from OpenJDK project Community builds using source code from.. forfull.tistory.com https://forfull.tistory.com/entry/%EC%9D%B4%ED%81%B4%EB%A6%BD%EC%8A%A4-%EC%84%A4%EC%B9%98-%.. 공감수 0 댓글수 0 2022. 2. 6.
  • 아파치 톰캣 설치하기 https://forfull.tistory.com/entry/open-jdk-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0 open jdk 설치하기 openJDK github 페이지가 존재한다. https://github.com/ojdkbuild/ojdkbuild GitHub - ojdkbuild/ojdkbuild: Community builds using source code from OpenJDK project Community builds using source code from.. forfull.tistory.com 설치하기 전에 openJDK를 설치하는 것을 권장한다. https://tomcat.apache.org/ Apache Tomcat® - Welcome! The Apa.. 공감수 0 댓글수 0 2022. 2. 6.
  • 이클립스 설치 및 자바 프로젝트 생성해보기 https://forfull.tistory.com/entry/open-jdk-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0 open jdk 설치하기 openJDK github 페이지가 존재한다. https://github.com/ojdkbuild/ojdkbuild GitHub - ojdkbuild/ojdkbuild: Community builds using source code from OpenJDK project Community builds using source code from.. forfull.tistory.com 이클립스를 설치하기 전에 open JDK (11권장)를 먼저 설치하는 것을 권장한다. https://www.eclipse.org/downloads/ Eclipse .. 공감수 0 댓글수 0 2022. 2. 6.
  • window에 open jdk 설치하기 오늘은 open JDK를 윈도우에 설치하는 방법에 대해 알아보겠다. 1. Open JDK 다운로드하기 많은 사람들이 JDK를 설치하려고 공식 홈페이지를 들어가거나 JDK 파일이 모여 있는 페이지를 찾는다. open jdk는 github 페이지가 존재한다. 아래 github 링크를 걸어놨으니 원하는 버전을 찾아 다운하면 된다 https://github.com/ojdkbuild/ojdkbuild GitHub - ojdkbuild/ojdkbuild: Community builds using source code from OpenJDK project Community builds using source code from OpenJDK project - GitHub - ojdkbuild/ojdkbuild: Com.. 공감수 0 댓글수 0 2022. 2. 4.
  • ubuntu에 mysql 설치 및 DBeaver로 연결하기 1. 사전 준비 AWS https://forfull.tistory.com/entry/ec2-%EA%B0%80%EC%83%81%EB%A8%B8%EC%8B%A0-%EB%A7%8C%EB%93%A4%EA%B3%A0-%EC%A0%91%EC%86%8D%ED%95%B4%EB%B3%B4%EA%B8%B0?category=909239 ec2 가상머신 만들고 접속해보기 가상머신을 만들어보자. 1. 프리 티어만 체크 2. Ubuntu 20.04 LTS 선택 계속 다음을 클릭해야 하며, 검토 밋 시작을 눌러선 안됨 계속 다음을 클릭해야 하며, 검토 밋 시작을 눌러선 안됨 기본적으로 forfull.tistory.com GCP https://forfull.tistory.com/entry/GCP%EB%A5%BC-%EC%9D%B4%E.. 공감수 0 댓글수 0 2022. 1. 18.
  • ubuntu 가상머신에 apache2 설치하기 1. 사전 준비 되도록이면 다음 과정을 끝내고 하는 것을 권장한다. https://forfull.tistory.com/14 ec2 가상머신 만들고 접속해보기 가상머신을 만들어보자. 1. 프리 티어만 체크 2. Ubuntu 20.04 LTS 선택 계속 다음을 클릭해야 하며, 검토 밋 시작을 눌러선 안됨 계속 다음을 클릭해야 하며, 검토 밋 시작을 눌러선 안됨 기본적으로 forfull.tistory.com https://forfull.tistory.com/entry/GCP%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-Ubuntu-%EA%B0%80%EC%83%81%EB%A8%B8%EC%8B%A0-%EB%A7%8C%EB%93%A4%EA%B3%A0-%EC%8B%A4%ED%96.. 공감수 0 댓글수 0 2022. 1. 15.
  • 가상머신에 Putty로 접속해보기 https://forfull.tistory.com/entry/GCP%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-Ubuntu-%EA%B0%80%EC%83%81%EB%A8%B8%EC%8B%A0-%EB%A7%8C%EB%93%A4%EA%B3%A0-%EC%8B%A4%ED%96%89%ED%95%B4%EB%B3%B4%EA%B8%B0 GCP를 이용하여 Ubuntu 가상머신 만들고 실행해보기 GCP는 Google Cloud Platform의 약자로 구글에서 제공해주는 클라우드 서비스이다. 아마존을 사용하면서 주변 지인으로부터 구글에서도 클라우드 서비스를 제공해주며, 평생 가상머신 1대를 무료로 제 forfull.tistory.com 가상머신을 만들지 않았다면 위 글을 읽고 만들고 .. 공감수 0 댓글수 0 2022. 1. 15.
  • 가상머신 방화벽 설정하기 https://forfull.tistory.com/entry/GCP%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-Ubuntu-%EA%B0%80%EC%83%81%EB%A8%B8%EC%8B%A0-%EB%A7%8C%EB%93%A4%EA%B3%A0-%EC%8B%A4%ED%96%89%ED%95%B4%EB%B3%B4%EA%B8%B0 GCP를 이용하여 Ubuntu 가상머신 만들고 실행해보기 GCP는 Google Cloud Platform의 약자로 구글에서 제공해주는 클라우드 서비스이다. 아마존을 사용하면서 주변 지인으로부터 구글에서도 클라우드 서비스를 제공해주며, 평생 가상머신 1대를 무료로 제 forfull.tistory.com 가상머신을 만들지 않았다면 위 글을 읽고 만들고 .. 공감수 0 댓글수 0 2022. 1. 15.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.