Ubuntu에서 Nginx + PHP + MariaDB 설치.
·
Computer/Server
소개Ubuntu 서버에 웹 개발 환경을 구축하는 것은 많은 개발자와 시스템 관리자에게 필수적인 작업입니다.이 가이드에서는 Ubuntu의 모든 버전(16.04, 18.04, 20.04, 22.04 등)에서 작동하는 Nginx, PHP, MariaDB 설치 방법을 단계별로 알아보겠습니다.특히 Ubuntu 코드네임을 자동으로 감지하여 적용하는 방법을 통해 어떤 버전에서도 쉽게 설치할 수 있습니다.준비 사항Ubuntu 서버 (16.04 이상)root 또는 sudo 권한이 있는 사용자 계정인터넷 연결1. APT 저장소 최적화하기1.1 기존 APT 저장소 초기화먼저 기존에 등록되어 있는 APT 저장소를 초기화합니다:sudo cat /dev/null > /etc/apt/sources.list1.2 카카오 미러 저장소..
Laravel 컨트롤러 라우팅 시 "Class ... does not exist" 에러 발생 원인과 해결
·
Computer/PHP
상황 (Laravel 8 경험 사례)오랜만에 새로운 프로젝트를 Laravel 8로 시작.테스트 코드를 먼저 작성하는 방식으로 개발해보려 했는데, 시작부터 막혔다.라우트에 다음과 같이 컨트롤러를 연결하고 테스트를 실행했다.Route::get('/', 'BaseController@index')->name('site-index'); 그랬더니:Expected response status code [200] but received 500.The following exception occurred during the request:ReflectionException: Class "BaseController" does not exist in ... 컨트롤러를 못 찾는다는 게 이해가 안 됐다.Laravel 5.x를 쓸..
mysql 5.7 설치 후 root password 확인.
·
Computer/MySQL
/etc/my.cnf 에서 로그 파일 경로 확인 log-error=/var/log/mysqld.log 해당 로그 파일에서 temporary password 검색. cat /var/log/mysqld.log | grep "temporary password" 그러면.. [Note] A temporary password is generated for root@localhost: HTpk:ldnY1b, 이런식으로 나오는게 있다. 이번에 생성된 비번은 HTpk:ldnY1b, 로그인 해서 비번 바꾸면 됨. 비번은 영어대문자, 소문자, 특수문자 섞어서 8자리 이상 되어야 하는듯 싶다. 안그러면 ERROR 1819 (HY000): Your password does not satisfy the current policy..
Microsoft Translator API 사용하기.
·
Computer/PHP
구글 번역 API는 유료니까 패스. MS Bing API를 써 봅시다~~ MS Live 계정이 있어야 됨. 그냥 gmail이나 naver메일 이런걸로 가입 ㄱㄱ https://datamarket.azure.com/dataset/bing/microsofttranslator 200만자 까지 무료로 쓸 수 있는거 있음.. 캡쳐 하기 귀찮으니..https://www.conory.com/xe_product_manual/47924 이 문서 참고. 젤 마지막꺼는 저 글 쓴분이 개발한 애드온 사용할때 쓰는거니까 패스.. PHP 예제는https://blogs.msdn.microsoft.com/translation/walkthrough/phptranslator/여기서.. CURL 써서 번역해 주는거임. Step2, Ste..
NFS mount : reason given by server: Permission denied 발생시..
·
Computer/Server
상황NFS 클라이언트에서 서버 공유 디렉토리를 마운트하려는데 아래와 같은 에러가 발생했다.mount.nfs: access denied by server while mounting SERVER:NFSShare시도했던 것들 (하지만 원인이 아니었던 것들)이 문제를 해결하려고 다음 순서로 확인했지만, 모두 원인이 아니었다.서버 디렉토리 권한을 777로 변경 — 효과 없음디렉토리 소유자를 nobody:nobody로 변경 — 효과 없음NFS 포트 고정 후 방화벽 예외 처리 — 방화벽은 애초에 비활성 상태였음iptables 규칙 점검 — 초기 설정에서 이미 전부 주석 처리되어 있었음 (참고로 이 부분 때문에 별개의 다른 오류를 겪기도 했다)진짜 원인명령어를 다시 살펴보다가 서버 쪽 공유 경로 앞에 /가 빠져 있는 ..
jQuery 기반의 jqwidgets...
·
Computer/JavaScript
라이센스 하나 사면 Grid, Chart, Gauge, Button 등등 다양한 위젯을 사용 할 수 있다. (29가지 위젯..) 라이센스 구입비용도 그리 부담 되는 수준은 아닌거 같고.. 게다가 상용 목적이 아니라면 그냥 무료다. 이걸 사용해서 약 3주에 걸친 노력 끝에 계획했던 기능 하나를 만들었는데. jQuery부터 익숙하지 않은데 Grid까지 적용하려니 힘들다. 그래도 익숙해지면 꽤나 빠른 개발 속도가 나올거 같기도 하니 좀 더 해봐야지... 자세한건 http://www.jqwidgets.com 여기에... jqGrid하고는 다른것..
procedure, function, package에서 테이블 또는 뷰가 없다는 에러 메세지.
·
Computer/Oracle
procedure, function, package에서ORA-00942: 테이블 또는 뷰가 존재하지 않습니다라는 오류가 발생 할때.. 1. 메세지 내용 그대로, 생성하지 않거나, 잘 못 입력한 테이블이나 뷰가 존재 하는지 확인. 2. 모든게 정상인 경우, 다른 OWNER 소유의 TABLE / VIEW라면, GRANT를 확인 3. GRANT도 정상이라면.. procedure / function / package를 호출 하는 owner와, 권한을 부여받은 owner가 동일한지 확인.ex) A owner 소유의 tblA가 존재 하고, b owner에 해당 테이블을 사용하는 procedure를 작성하였을때, 이 procedure를 c 라는 owner가 호출 해서 사용하는 경우, b owner에 a.tblA에 대..
오라클 주요 Schema들..
·
Computer/Oracle
자주 써먹는 Schema들.. USER_OBJECTSUSER_TABLESUSER_COLUMNSUSER_VIEWSUSER_TRIGGERSUSER_SOURCE -- Function, Procedure, Package 좀 더 많은 스키마는 여기에서...http://whdvy777.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-%EA%B0%81%EC%A2%85-%EC%8A%A4%ED%82%A4%EB%A7%88-%EC%A1%B0%ED%9A%8C 추가로...접두사로 USER 를 사용 중인데.. 이건 해당 OWNER의 정보를 조회 할때 사용한다. 자기 자신의 정보 이외에, 자기가 권한을 가진(?) 다른 OWNER의 정보를 함께 조회 하고자 하는 경우ALL_USERS, ALL_TAB..
Jasperreport 4.7.0에서 Landscape가 역회전된 상태로 생성 될때..
·
Computer/iReport/Jasper
몇주에 걸쳐서 정보를 찾아보고 하다가..오늘 문득 생각난게 있어서 시도를 해 봤더니...일단은 의도한것처럼 나오긴 한다...좀 더 테스트를 해 봐야 할것 같긴 하지만..... 여하간...문제가 되었던건A4사이즈의 report 문서를 portrait 설정으로 PDF를 생성하면 정상적으로 생성 되는데,landscape로 바꿔서 생성하면, 90° 시계반대방향으로 회전한 상태로 생성이 되었다. (참고) 이걸 어떻게 해결 할까 머리를 쥐어 뜯다가..문서 포맷은 portrait으로 놔두고, 사이즈만 가로세로 바꿔서 생성하면 어떨까 싶어서 해 봤더니.. 원하는 결과가 나왔다. 하하하....몇주간 머리 쥐어뜯은게 허무해지는 순간이다...
jQuery에서 ajax 사용 시, json 처리 방법 (JAVA)
·
Computer/JavaScript
데이터가 배열인 경우.. -- JAVA StringBuffer sb = new StringBuffer(); sb.append("["); for(Iterator it = listVo.iterator(); it.hasNext();) { VO vo = it.next(); sb.append("["); sb.append("'"+vo.getCol1()+"',"); sb.append("'"+vo.getCol2()+"',"); sb.append("'"+vo.getCol3()+"',"); sb.append("'"+vo.getCol4()+"'"); sb.append("]"); if(i++ < size-1) sb.append(","); } sb.append("]"); response.setContentType("text/j..