Android Studio (안드로이드 스튜디오) 에서 레이아웃을 짜려고 보니 아래 사진과 같이 TextView가 있음에도 나타나지 않는 현상이 발생했다.


이런 경우 디자인이 안보이기 때문에 작업을 수행할 수 없다.


버전 : Android Studio 3.1.3




어디서 에러가 났는지 확인해보니


Render problem


Failed to load AppCompat ActionBar with unknown error.





[ 해결 방법 ]


app > bulid.gradle


수정 전

compileSdkVersion 28

targetSdkVersion 28

implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'


수정 후

compileSdkVersion 27

targetSdkVersion 27

implementation 'com.android.support:appcompat-v7:27.0.2'


소스를 보면 알겠지만 Sdk 버전을 낮춰주는 것이다.






소스를 수정한 뒤, File > Invalidate Caches / Restart 에서 Invalidate and Restart 를 선택해주면


아래와 같이 정상적으로 작동하는 것을 알 수 있다.




여러 가지 시도를 해본 결과 포스팅에서 설명한 방법으로 해결했다.


혹시 더 정확한 방법을 아신다면 댓글 바랍니다.

  1. 감사합니다 2018.07.06 18:24 신고

    덕분에 해결했습니다 왜 오류나게 만들어놓고 수정을 안하는지 모르겠네요...ㅠㅠㅠ

  2. 감사합니다 2018.08.07 11:06 신고

    환경구축 하는데만 3시간째.. 계속 다른데서 오류남 이거는 덕분에 해결했네요


앱인벤터(app inventor)에는 스크린(Screen)을 추가할 수 있는 기능이 있지만 복사하는 기능은 없다.

그리고 스크린을 만들 때 이름을 지정할 수 있지만 수정하는 기능 또한 없다.




하지만 방법이 있다.


준비물


1. 노트패드 : https://notepad-plus-plus.org/


2. 7zip : https://www.7-zip.org/


굳이 노트패드가 아니라도 다른 편집기를 사용해도 된다. 메모장을 사용하지 않는 이유는 간혹 글자가 깨지는 등 인코딩 문제가 발생하기 때문이다.


7zip을 사용하는 이유는 aia 파일 내용을 수정하기 위해서이다.



1. 'Export selected project (.aia) to my computer' 을 클릭하여 수정할 aia 파일을 다운 받는다.




2. AIA 파일을 우클릭하여 [7-Zip] -> [압축파일열기] 을 한다.


3. [src] -> [appinventor] -> [ai_ID] -> [project name] 순서로 들어가면 아래와 같을 것이다. (스크린명이나 갯수, 아이콘 모양은 차이가 있을 수 있다.)



이제 파일을 간단한 수정을 통해 스크린을 복사, 수정할 수 있고 덤으로 블록, 디자이너들을 복사할 수 있다.

이는 여러 스크린에서 반복되는 블록, 디자이너가 있을 경우 매우 유용한 방법이다.


ex) Screen1의 디자이너와 블록을 Screen2에서도 사용하고 싶다.


Screen1의 내용은 아래 사진과 같다.




방법


1. 7zip안의 파일을 밖으로 끌어낸다.

2. Screen1.bky 파일을 노트패드를 이용하여 실행한 후 소스들을 전부 복사한다. ('Ctrl + a' 단축키를 사용하면 전체 선택을 할 수 있다)

3. Screen2.bky 파일에 붙여넣기를 한다.

4. Screen1.scm 파일을 노트패드를 이용하여 실행한 후 소스를을 전부 복사한다.

5. Screen2.scm 파일에 있는 내용을 지우고 위에서 복사한 소스를 붙여넣기를 한다.

6. Screen2.scm에서 $Name을 찾고 스크린 명을 고쳐준다. 

(Screen1에서 소스를 복사했기 때문에 Screen1이라 써있지만 우리가 사용할 스크린은 Screen2이기 때문이다.)

7. 수정된 Screen2.bky, Screen1.scm 파일을 다시 7zip 안으로 넣어준다. 파일을 압축파일로 복사 하시겠습니까? 란 문구가 나오면 '예(Y)' 를 선택한다.


이제 test.aia 파일을 다시 앱인벤터에 저장해주면 되는데 현재 test.aia 라는 프로젝트가 존재하기 때문에 수정 전 프로젝트를 삭제하고 저장을 해야한다.

또는 프로젝트 수정을 위해 aia 파일을 컴퓨터로 저장하기 전 'save project as' 를 사용하여 다른 이름으로 저장하고 사용해도 된다.


컴퓨터에 저장된 aia 파일을 'improt project (.aia) from my computer'을 클릭하여 가져와준다.



그리고 프로젝트를 열어보면 스크린, 디자이너, 블록 모두 복사 된 것을 확인할 수 있다.


이를 응용하여 스크린 이름 변경, 스크린 추가 및 수정 등을 할 수 있다.


cmd에서 ipconfig를 입력하면  자신의 아이피 주소를 알 수 있다.

그리고 msinfo32.exe 를 입력하면 컴퓨터의 시스템정보를 알 수 있다.


그런데 cmd에 명령어를 입력해도 아무런 결과가 나타나지 않을 때는 환경변수 값을 수정해야한다.


%SystemRoot%\system32;


를 환경변수 path 값에 넣어주면 된다.

요즘같은 글로벌한 시대에 해외직구라는 단어는 한번쯤 들어봤을 것이다.


그러나 해외직구를 이용하는사람보단 이용하지 않는 사람이 많다.


이유는 A/S 등이 있겠지만, 단지 어려워서, 할줄몰라서, 두려워서인 사람도 있을 것이다.


필자도 같은 이유로 이용하지 않다가 이번에 필요한 제품이 생겨서 이용하게 되었다. 그 방법을 공유하고자 한다.


이번에 사용한 사이트는 '아마존' 이라는 사이트이다. 아마존은 세계 최대의 쇼핑 중개자이다.





아마존 : https://www.amazon.com/



아마존 사이트에 들어가면 sign in 을 눌러서 로그인 화면으로 간다.


로그인을 할때는 아이디(이메일주소)와 비밀번호를 입력한다.


아이디가 없으면 회원 가입을 해야한다.



이름과 이메일주소, 패스워드를 입력하면 회원가입이 된다.


자주 사용하는 주소는 미리 저장해두는게 좋다.


full name : 영문 이름

street address : 주소, 세부주소

City : 도시

State / Province / Region

Zip code : 우편번호

Customs ID Number : 개인 통관 번호

Phone number : 전화번호



영문 주소를 모르거나 개인통관번호를 발급받지 않거나, 기억이 나지 않을 경우 아래의 링크를 참고한다.


도로명주소 안내시스템 : http://www.juso.go.kr/openIndexPage.do


개인통관고유부호 발급 : https://unipass.customs.go.kr/csp/persIndex.do



저장된 주소를 확인할 수 있고 수정, 삭제가 가능하다.



이번에 구매하게 된 커세어 보이드 프로이다.




한국으로 배송이 되는지 꼭 확인해야한다.







보안을 위해 비밀번호를 입력한다.


Deliver to this address를 눌러서 배송받을 주소 정보를 선택한다.




물론 새로운 주소를 사용할 수 있다.



3개의 라디오버튼이 있는데 간단하게 비유하자면 일반, 빠른, 특급 배송이며 아래로 갈 수록 배송비가 급격히 증가한다.



카드 영문이름과 카드 번호, 유효기간을 입력한다.

이때, 자신의 카드가 해외결제가 가능한 카드여야한다.

Add your card를 선택하면 카드 정보를 저장할 수 있다.



KRW를 선택하면 엉뚱한 비용이 발생할 수 있으니 꼭 위 사진과 같이 해준다.



Order total에 보이는 금액은 배송비를 포함한 실제 결제 금액이다.

주문, 배송정보까지 모두 확인했으면 Place your order 버튼을 눌러서 주문을 마무리한다.




성공적으로 물건 구매를 완료한 모습이다.


해외직구는 어렵지 않다.


국내에 원하는 물건이 없거나 국내에서보다 해외에서 더 저렴한 물건이 있다면 이용해보는 것도 좋을 것 같다.




그누보드5가 나온지도 어느덧 수년이 흘렀다.


그러나 그보다 이전에 그누보드로 만들어진 사이트들은 그누보드4가 대부분이며


그중에는 utf-8도 있겠지만 euc-kr로 만들어진 사이트도 많이 있다.


이러한 사이트들이 사이트 리뉴얼을 하는 등의 이유로 그누보드5로 넘어와야 할 수 있는데 그동안 쌓인 게시판 글 등 DB문제로 골머리를 앓는 사람도 있을 것이다. 이번 포스팅에서는 그누보드4에서 그누보드5로 이전하는 방법에 대해 알아보겠다.


다행히 그누보드5에서는 그누보드4에서 쉽게 이전할 수 있도록 방법을 제공하고 있어서 크게 어려운 점은 없을 것이다.


이 글에서 사용하는 버전

그누보드4 : 4.37.38 (euc-kr)

그누보드5 : 5.2.9.8 (utf-8) // 그누보드5는 euc-kr을 지원하지 않으므로 무조건 'utf-8' 이다.


버전은 어느 것을 사용하던 자유이다.


이 글을 보고 실전에 바로 사용하는 것은 권하지 않으며, 연습용 사이트에서 충분히 연습해보고 사용하길 권장한다.


우선, 옮겨야할 사이트를 보겠다. 총 3개의 게시판으로 이루어져 있으며 게시글은 그림과 글로 작성되있다.





이제 하나씩 해보도록 하자.


먼저 그누보드4의 DB를 백업한다.


필자는 phpmyadmin에서 백업을 했다. 


혹시 phpmyadmin에 접근하는 방법을 모르겠다면, 호스팅한 사이트에서 찾아보도록 한다. ex) 닷홈일경우 : 마이닷홈 -> 상세보기 -> 제공내역


phpMyAdmin에 접속하면 아래와 같은 화면이 보일텐데 빨간색 네모를 클릭해준다.



여기서 g4_로 보이는 것들이 그누보드4의 데이터베이스들이다. 


 xe로 시작하는 것들은 XE(前, 제로보드)의 DB이다. 필자가 XE도 같이 사용해서 보이는 것이며 그누보드만 쓰는 이들에게는 없을 것이다.


아무튼 이 화면에서는 내보내기(export)를 눌러준다.





내보내기 방법으로는 '퀵, 커스텀' 2가지가 있는데 대부분의 경우 퀵을 사용해도 상관없으나 


필자와 같이 제외하고 싶은 DB 테이블이 있다면 커스텀을 사용해서 체크를 해제해줘야한다.


그누보드5는 utf-8을 쓰기 때문에 파일 문자셋은 utf-8로 설정한다. (아마 자동으로 설정되었을 것이다.)


이외의 것들은 특별한 경우가 아니면 건드리지 않아도 되며 실행버튼을 눌러준다.




'실행' 버튼을 누르면 sql 확장자의 파일이 다운받아진다.




이제 그누보드5를 설치한다.


(그누보드5의 설치순서는 크게 상관이 없으나 그누보드4의 DB를 옮기기 전에는 어떠한 DB관련 작업도 해서는 안된다.)


설치를 할때는 MySQL 정보를 정확히 입력해준다.




그누보드5 설치를 완료했다. 그러나 빈 껍데기만 있을 뿐 게시글이 존재하지 않는다.



이제 본격적으로 그누보드4에서 작성되었던 DB들을 옮기기 시작한다.


phpMyAdmin 에서 가져오기(import)를 눌러주고 파일 선택을 클릭하여 이전에 다운받은 DB 파일을 선택한 후 실행을 눌러준다.

 


만약 이런 오류가 발생한다면 당황하지 않고, g4_로 시작하는 테이블들을 지워준 후 다시 실행한다.




그러면 이렇게 2가지 버전의 DB가 동시에 존재하게 된다.



다음으로는 그누보드4의 config.php 파일을 그누보드5로 복사한다. 위치는 자유이며 필자는 g4conf 라는 디렉터리(폴더)를 만들어서 그 안에 넣었다.


넣기 전에 반드시 config.php 를 utf-8로 인코딩해주고 코드도 수정해준다.





이제 그누보드5 안에 포함되있는 DB 이전 프로그램을 사용할 차례이다.


접근 방법은 그누보드5에 접속한 주소 뒤에 /g4_import.php를 추가하여 접속한다.


 관리자 아이디로 로그인 되있어야한다.


ex) http://도메인/g5/g4_import.php


아래와 같은 화면이 보인다면 성공이다.


이제 config.php 파일 경로를 상대경로로 지정해주고 확인 버튼을 누른다.






아래와 같은 화면이 보여야한다.




그리고 그누보드5 로 가보니 글은 있는데 그림이 없다.




왜냐하면 DB만 옮겼고 이외의 것들이 오지 않았기 때문이다.


그누보드4 에서 /data/file 안에 것들을 모두 그누보드5 의 /data/file 안으로 복사한 후 다시 접속해보면


아래처럼 그림까지 모두 출력되는 것을 볼 수 있다. 


 게시판들의 table 명이 같아야하며 table명이 다르다면 file 안의 디렉터리 이름을 변경해주면 된다.





XpressEngine (eXpress+press+Engine, 구 제로보드 XE)

: LGPL 기반 오픈 프로젝트로, 제로보드 4나 zb5와는 별개로 완전히 새로 개발한 웹 프레임워크이다.


제로보드의 다음 버전이라고 생각하면 될 것 같고 우리나라의 대표적인 CMS 툴 중 하나이다.

 XE 외에 CMS툴은 그누보드와 워드프레스가 있다.


이번에 포스팅할 내용은 XE의 설치방법이며 FTP 서버를 활용하겠다.


https://www.xpressengine.com/


먼저 XE 홈페이지에 들어가서 다운로드 메뉴를 클릭한다.



그리고 XE Core를 다운로드해준다. XE Core는 XE사이트의 기본 틀이다.




설치가 완료되면 압축을 풀면 되고 이렇게 여러 파일들이 XE 폴더에 있는 것을 볼 수 있다.





그리고 자신의 FTP 서버에 파일들을 올려준 뒤 다운받은 링크로 이동하면 아래와 같은 설치 화면이 나타난다.






필자는 FTP 정보 입력이 이미 되있어서인지 생략됬는데 해당 페이지가 보이면 정보를 입력해주면 되며


아래의 화면에서는 자신이 사용하면 DB를 선택하면 되는데 필자는 mysql을 사용했다.



DB에 대한 정보 입력을 하면 되는데 이때 호스팅을 한 사이트에서 정보를 확인해가며 입력한다.


DB 호스트네임은 모르겠다면 localhost를 사용하면 될 것이다.


DB Port와 테이블 접두사는 그대로 사용되도 된다.



이메일 주소, 비밀번호 등은 이번에 새로 만든다는 느낌으로 만들어주면 된다.



설치가 정상적으로 완료되면 아래와 같이 화면이 나타날 것이다.



  1. 2017.12.26 20:49

    비밀댓글입니다

  2. 2018.02.23 15:55

    비밀댓글입니다


지난 포스팅에서는 모달팝업(레이어팝업)을 다뤘었다.


모달(레이어) 팝업 : http://wishml.tistory.com/45


이번에 다룰 팝업은 잠깐 언급했었던 window.open() 을 이용한 팝업이다.



사실 이 방법은 필자는 별로 좋아하지 않는다. 왜냐하면 팝업이 차단되면 팝업창을 사용할 수 없기 때문이다.


그래도 알아두면 좋으니 계속 이어나가겠다.


이 방법은 '일반 페이지 + 팝업창 갯수' 만큼의 파일을 필요로 한다.


A 페이지와 B 페이지가 있다고 했을 때, A는 부모창, B는 자식창(팝업창) 이라고 생각하면 될 것 같다.


이번에도 역시 닫기 버튼이 있으며 오늘 하루 이 창 열지 않음 버튼을 클릭시 쿠키가 생성 및 유지되어 열리지 않는다.


window_popup_ex.zip



  1. 2017.12.27 11:42

    비밀댓글입니다


window.open()을 이용한 팝업을 이용할 경우 브라우저에서 팝업을 차단했을 때 열리지 않는다.


window.open 팝업 : http://wishml.tistory.com/46


그래서 요즘은 모달(레이어)팝업 이라고 하는 것을 많이 쓰는데 사용 방법을 공유하겠다.


여기서 사용하는 것은 html, css, javascript 그리고 jquery와 쿠키유지를 하기 위해서 제이쿼리 플러그인 중에서 쿠키 플러그인을 사용하겠다.




팝업창이 이렇게 있을 때 닫기버튼을 누르면 팝업창이 사라지고, 

'오늘 하루 이 창 열지 않음' 버튼을 클릭하면 하루동안 쿠키가 유지되어 팝업창이 나타나지 않는다.


예제를 통해 직접 다뤄볼 수 있도록 파일을 첨부했으며 조금만 수정하면 실제 사이트에서 바로 적용이 가능하다.


popup_ex.zip



그누보드를 설치 할 때 아래의 과정을 거쳐야한다.




그리고 가끔 이런 문구를 만날 수 있다.



Warning: mysqli_connect(): (HY000/1045): Access denied for user '(아이디)'@'localhost' (using password: YES) in (경로)/lib/common.lib.php on line 1435

Connect Error: Access denied for user '(아이디)'@'localhost' (using password: YES) 


mysqli_connect(): (28000/1045) 이든 mysqli_connect(): (HY000/1045) 이든 대부분의 경우 DB의 아이디와 비밀번호가 틀렸을 때 이 페이지를 볼 수 있다.


직접 서버를 만들었다면 DB 아이디를 다시 한번 확인해줘야 하며 웹호스팅의 경우에는 호스팅한 업체(사이트)에서 다시 한번 확인해야한다.


(닷홈)


이처럼 호스팅 업체에서 사이트의 DB정보를 볼 수 있다.


간혹 웹호스팅을 신청하고 생성할 때 DB 설치를 하지 않는 곳도 있는데 이런 경우에는 DB를 새로 만들어 줘야한다.


(호스팅어)


+ 가비아(Gabia)를 사용할 경우 조금 다르다.



이처럼 host 와 DB 앞에 db를 추가해줘야 한다. 


ex)

Host : db.abc.com

User : aaa

Password : pass123

DB : dbaaa




[1차 티스토리 배포]

 http://wishml.tistory.com/36



신청 인원

15명


당첨자

3명


당첨자 명단

1. 강*휘님 (ica******@naver.com)

2. 대***스님(pun*****@naver.com) (초대장 회수)

3. 김*희님 (seo*****@naver.com)


초대장 발송 기간

12월 10일 ~ 12월 12일

※ 주의사항 : 발송 후 48시간 내에 블로그를 개설

(48시간 내에 블로그를 개설하지 않을 시 초대장의 소멸을 방지하기 위해 회수 예정)



+ 이미 초대장을 받으신 분들이 있어서 당첨자를 새로 뽑았습니다.

  1. 2017.12.10 14:46

    비밀댓글입니다

  2. 2017.12.10 14:47

    비밀댓글입니다

  3. 2017.12.10 14:47

    비밀댓글입니다

  4. 2017.12.10 14:47

    비밀댓글입니다

  5. 2017.12.10 14:49

    비밀댓글입니다

  6. 2017.12.10 14:49

    비밀댓글입니다

  7. 2017.12.10 14:49

    비밀댓글입니다

  8. 2017.12.10 14:52

    비밀댓글입니다

  9. 2017.12.10 14:52

    비밀댓글입니다

  10. 2017.12.10 14:52

    비밀댓글입니다

  11. 2017.12.10 14:52

    비밀댓글입니다

  12. 2017.12.10 14:53

    비밀댓글입니다

  13. 2017.12.10 16:28

    비밀댓글입니다

  14. 2017.12.10 23:03

    비밀댓글입니다

  15. 2017.12.10 23:39

    비밀댓글입니다

  16. 2017.12.12 20:27

    비밀댓글입니다

  17. 2017.12.17 19:37

    비밀댓글입니다

  18. 김부장 2017.12.18 13:10 신고

    안녕하세요 블로그를 운영해보려합니다
    이런게 처음이라 너무 어렵네요 ㅎ

    초대장 신청은 이렇게 댓글로 하면되는건지 몰라 일단 댓글 남깁니다

  19. 2017.12.23 16:26

    비밀댓글입니다

  20. 2017.12.27 11:55

    비밀댓글입니다

+ Recent posts

티스토리 툴바