일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- For
- php
- Backbone.js
- Machine Learning
- Redis
- nginx
- rabbitmq
- docker
- nodejs
- mariadb
- python
- fastapi
- NCP
- phpredis
- laravel
- Babel
- Node
- linux
- Redux
- SQL
- React
- AWS
- CentOS
- javascript
- 블레이드 템플릿
- Switch
- Go
- deep learning
- 기초 수학
- webpack
- Today
- Total
목록프로그래밍 언어 (53)
개발일기
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 파일에 예약 작업 추가
Go에서는 Java, PHP의 try / catch와 비슷하게 에러를 처리해주는 panic() / recover()가 존재한다. panic() : 에러를 직접 발생시킬 때 사용한다. recover() : 에러 또는 panic()으로 인한 에러가 발생했을때, 예외처리를 해준다. 1. panic()을 사용한 에러 발생 package main import "fmt" func panicStart() { panic("Error Start!") } func main() { panicStart() fmt.Println("panicStart Func End") } /* 실행 결과 : panic: Error Start! */ panic()의 괄호 안에 에러 문구를 추가하면 된다. panic()을 통해 에러가 발생한 경우..
1. defer란? defer란 특정한 함수를 실행할 때, 해당 부분을 함수가 종료되기 직전에 실행시키는 기능을 뜻한다. 2. defer 정의법 defer test() // test는 함수명 defer test(a int, b int) // 매개변수로 추가할 수 있다. 함수를 정의할 때와 똑같은 방식이다. 함수를 정의했을 때 사용했던 func 대신에 defer라는 키워드를 사용한다는게 다른점이다. 3. 사용법 package main import "fmt" func test() { fmt.Println("test 함수 실행") } func initial() { fmt.Println("init 함수 실행") } func main() { defer test() initial() initial() initial..