일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- React
- For
- webpack
- rabbitmq
- nodejs
- Backbone.js
- deep learning
- 기초 수학
- Redux
- Machine Learning
- Node
- 블레이드 템플릿
- AWS
- NCP
- Babel
- javascript
- python
- node.js
- mariadb
- php
- CentOS
- Switch
- SQL
- fastapi
- Redis
- linux
- Go
- docker
- nginx
- laravel
- Today
- Total
목록전체 글 (195)
개발일기

1. 원인 라라벨 프로젝트를 처음 생성하고 웹 페이지에 접속 했을 때, 위와 같은 에러가 발생하는 경우를 종종 발견할 수 있다. 주로 storage와 bootstrap 폴더의 파일에 에러가 발생한다. 원인은 Permission denined로 권한 관련 설정이 제대로 이루어지이 않아 발생하는 문제이다. 2. 해결법 에러가 발생하는 폴더의 하위 파일까지 권한을 755로 변경한다. chmod 755 -R [에러가 발생한 경로] # app, routes 등을 포함하는 프로젝트 폴더의 명은 test_project라고 가정 # storage일 경우 chmod -R 755 test_project/storage # bootstrap일 경우 chmod -R 755 test_project/bootstrap app key..

인터페이스는 구조체와는 다르게 메서드들의 집합을 나타낸다. 인터페이스에서는 메서드 자체의 내부 로직을 구현하지는 않지만 해당 메서드를 호출하여 사용한다. 1. 인터페이스 정의 package main import "fmt" type IFruit interface { // 메서드 나열 // setFruitInfo() int // 해당 메서드의 반환값이 존재할 경우 setFruitInfo() // 반환값이 존재하지 않을 경우 } /* type [인터페이스명] interface { 메서드 나열... } */ func main() { } 인터페이스를 선언할 때는, 위와 같이 자료형 부분에 interface라고 써주며 메서드들을 나열하면 된다. 반환값이 존재할 경우, 해당 메서드 뒤에 반환 자료형을 입력하면 된다...

구조체는 서로 다른 타입의 필드 또는 동일한 타입을 가진 필드들을 하나로 묶은 것을 뜻한다. 1. 구조체 정의 type fruitStruct struct { name string price int } /* type 구조체명 struct { [구조체 변수명1] [구조체 변수 타입1] [구조체 변수명2] [구조체 변수 타입2] } */ 위와 같은 fruitStruct라는 구조체 변수를 정의하고 해당 구조체 안에 name(이름)과 price(가격)의 각각 다른 자료형을 가진 필드들을 포함하고 있다. 2. 구조체 선언 pacakge main import "fmt" type fruitStruct struct { name string price int } func main() { var fruit fruitStru..

몇몇 웹사이트의 게시글을 확인하면 URL이 "/post/3" 또는 "/post/how%20to%20laravel"과 같은 형식으로 되어있는 사이트도 존재한다. URL에 PK(Primary Key)값이 포함되어져 있거나 공백이 %20으로 표현되어 URL이 쓸모없이 길어지게 되며, 해당 글이 무엇을 의미하는지 대략적으로 파악하기 힘들다. 이를 해결하기 위해 슬러그(slug) 방식을 적용한 사이트를 종종 찾아 볼 수 있다. 슬러그 방식이란 URL이 "https://www.msn.com/뉴스-기사-입니다" 와 같이 공백부분이 -(dash) 기호로 이어져 URL이 표시되는 방식을 의미한다. 슬러그 방식으로 URL을 구성할 경우, 사용자가 해당 포스트 또는 해당 내용을 가진 링크가 무슨 내용을 내포하고 있는지 직관..

1. 포인터란? Go에서는 메모리의 주소값을 변수에 저장하는 포인터 변수를 직접 활용할 수 있도록 지원한다. 메모리 주소는 항상 16진수로 이루어지며 포인터 변수로 메모리 주소를 저장하면 0x 형식의 16진수로 값이 저장된다. 기존에 변수를 선언할 때는 변수명을 지정한 후, 변수값을 할당하여 변수를 선언하였다. 하지만 포인터를 선언할 때는, &와 * 연산자를 사용하여 변수값의 주소를 포인터에 저장시킨다. 2. 포인터 선언 var test *int // 포인터 선언 변수를 포인터로 선언할 때는 자료형 앞에 * 연산자를 붙이면 된다. 단순히 포인터 선언을 했을 경우에는 nil 값이 들어가게 된다. nil은 다른 언어들의 null과 같은 개념이다. 2-1. 메모리 할당 var test *int = new(in..

기존에 예약 작업을 실행하기 위해서는 SSH 터미널에 크론을 생성한 후, 예약 작업을 설정하였다. 하지만 라라벨에서는 이 예약 작업 부분을 소스 코드에서 관리할 수 있는 Take Schedule이라는 기능이 존재한다. app\Console\Kernel.php 파일에 코드를 입력하여 예약 작업을 실행시킬 수 있도록 편리한 기능을 제공한다. 1. Kernel.php 파일에 예약 작업 추가

Linux의 crontab은 일정 간격으로 정해진 명령어를 실행하는 리눅스의 명령어이다. 여기서 일정 간격이란 시간을 뜻하는 것으로써 분단위에서 월단위로 명령 실행 간격을 정한 후 명령을 실행한다. 1. crontab 정보 관련 명령어 crontab -e : 예약된 작업을 수정한다. 기본 설정된 에디터가 실행되며 작업 내역을 수정할 수 있다. (edit) crontab -l : 예약된 작업 목록을 확인한다. (list) crontab - r : 예약된 작업을 삭제한다. (remove) 위의 작업들을 터미널에 입력하면 실행할 수 있다. 작업을 삭제하는 crontab -r은 터미널에 입력 후, crontab -l로 작업 목록을 확인하면 작업 목록이 삭제되어 비어있는 것을 확인할 수 있다. 2. 작업 추가 #..

서버를 운영하다보면 다른 서버의 DB내용을 가져오거나 서버에 문제가 발생하여 DB의 내용에 오류가 발생하는 등의 문제가 발생할 수 있다. 만약의 일을 대비하여 DB의 내용을 백업 및 복원하여 데이터를 보관하고 있을 경우, 위의 경우에 대해 발빠르게 대처할 수 있다. 1. 특정 데이터베이스 백업 mysqldump -u [사용자 아이디] -p [데이터 베이스 이름] > [백업 결과 파일명] 특정 DB의 내용을 백업하여 저장하고자 할 경우, 위와 같이 터미널 창에 입력하면 된다. mysqldump -u root -p test_db > /workspace/test.sql root사용자의 test_db 데이터베이스 데이터들을 /workspace/test.sql로 백업(export)한다는 것을 뜻한다. 위와 같이 ..