지난 금요일 퇴근길에 잘쓰던 스마트폰이 버튼을 눌러도 화면이 안켜지고 버벅거린다.


껏다 켰더니 몇시간 괜찮다가 다시 발생


주말에 집에 있는 오전에는 괜찮다가 오후에 외출하니 또다시 발생.


도데체 뭐가 문제인가??? 리셋해야하나??


잘 쓰던게 갑자기 문제가 생긴거니 분명 최근 새로 설치하거나 업데이트 한 앱들중에서 문제를 일으킨 범인이 있을터


최근에 업데이트를 했던 앱을 하나씩 삭제를 해봤는데도 증상 발생..


아..내가 모르는 뭔가가 있구나.



구글링을 해보니 제대로 삭제되지 않은 백그라운드 프로세스가 그런 문제를 일으킬 수 있다고 한다.

- 구글링 키워드 : 안드로이드 시스템 배터리


http://www.itworld.co.kr/news/86950


처음엔 Wakelock detector를 설치해보려고 했는데 루팅을 해야 한다고 해서 포기


그다음엔 시스템 모니터링..분명 CPU를 많이 사용할테니 표시가 나겠지.



의심되는 앱이  '해피포인트' 가 보였다..CPU제법 사용하고 있는게 보인다.


삭제하고나니 배터리에 평화가 찾아왔다.


하지만 사용을 해야 하니 재설치가 필요했는데


구글 플레이 스토어에서는 패키지가 잘못되었다면서 설치가 되지 않았다.


아마도 업데이트 과정에서 앱이 엉켰고 그로인해서 배터리 문제가 생긴것으로 보인다.



검색해보니 플레이 스토어 캐시를 삭제 하라고 해서 해봤는데 잘 안되었다.


마지막 방법으로


웹페이지에서 원격 설치를 눌렀는데 정상 설치가 되었다.



업데이트 과정에서 (아마도 델타 업데이트 때문일것이라는 글들이 보였다) 정상적인 앱이 이런 문제를 일으키기도 하는구나.


내생각으론

업데이트 '해피포인트' 앱의 주변 혜택 알림 기능에 문제가 발생하였고 한장소에 가만히 있을 때는 괜찮아 보였지만

이동을 하게되면 과부하 상태가 되었던것으로 판단되었다.


재설치한 앱에서 혜택 알림 기능을 일단 꺼두었다.


'지식창고 > 안드로이드' 카테고리의 다른 글

구글 Play 북으로 epub보는 방법  (0) 2015.07.16
안드로이드 스트리밍 음악 앱  (0) 2012.07.17
카드 사용 관리 앱  (0) 2012.07.17

늘 하던대로 가상 머신에 윈10을 설치 했다.


보통은 로컬 계정을 생성하고 MS계정으로 연동을 하는데


오늘은 그냥 MS계정으로 생성을 했다.


MS계정 아이디에 숫자가 들어가는데....그게 빠진채로 사용자 폴더가 생성되었다.


푸하하하..뭐 이런 버그라니..




ProGit번역본이 새로 나왔다고 해서 스마트폰에서 볼 방법이 없을까?


epub뷰어를 뭘 쓰면 되지?


검색해보니


http://www.clien.net/cs2/bbs/board.php?bo_table=cm_ebook&wr_id=3995


구글 Play북 으로 보면 따로 뭘 안깔아도 될테니..이걸로 쓰자..


그런데...어떻게 열지?


어디 특정 경로에 넣으면 인식하나?


설정 어딘가에 있나?



아..도데체 어쩌란거지?


클릭을 하니......Play 북에서 처리 할 수 있게 업로드를 한다.


아..구글 서버로 올려서 동기화 처리를 해주는가 보다.


자세한 문서도 있네.

https://support.google.com/googleplay/answer/3097151?hl=ko


그런데 정작..progit epub는 에러 발생..왜 안되지?


'지식창고 > 안드로이드' 카테고리의 다른 글

Android 시스템 배터리 문제  (1) 2015.09.01
안드로이드 스트리밍 음악 앱  (0) 2012.07.17
카드 사용 관리 앱  (0) 2012.07.17

참고 포스팅 : http://blog.lael.be/post/73  


가장 잘되어 있는 글인데 몇가지 내가 설정하다가 문제 생긴 부분에 대하여 기술한다.


11번.

chmod 711 /home
chmod -R 700 /home/*

/home경로 에 다른 사용자가 사용중인경우 권한이 모두 700으로 바뀌는 문제가 발생하니

우분투를 처음 설치하고 아파치 설정하는 경우가 아니라면 하지 않는것이 좋다.

사용자 계정의 권한 설정은 마지막에 적어둔것으로 한다.


11-1 php 이외의 확장자도 사용할 계획이라 설정안함


15번 추가보안 설정

security.conf


// 전부 막기

<Directory />
AllowOverride None
Order Deny,Allow
Deny from all
</Directory>
// 허용할 경로 풀기
<Directory /var/www/html/>
AllowOverride None
Order Allow,Deny
Allow from all
</Directory>


사용자 계정 사용하기

sudo a2enmod userdir

sudo vim /etc/apache2/mods-available/userdir.conf


<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root

<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all

Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all

Require all denied
</LimitExcept>
</Directory>
</IfModule>


이것을 하지 않으면 : You don't have permission to access를 보게 된다.

사용자 계정의 public_html의 권한설정

chmod -R a+rX ~/public_html

chmod a+rx ~


homestead에서 사용한 명령창은 이제 사용하지 않는다.


사용하는 에디터로 프로젝트 파일을 연다.



laravel.app로 접속하면 WelcomeController에서 index 를 실행시킨다.




view는 리소스에 있다.



기본 라우팅 도움말

http://xpressengine.github.io/laravel-korean-docs/docs/5.0/routing/


blade템플릿 도움말

http://xpressengine.github.io/laravel-korean-docs/docs/5.0/templates/



Route::get('/test/{msg}',function($msg)
{
    return 'Hello '.$msg;
});




라라벨 한글메뉴얼 http://xpressengine.github.io/laravel-korean-docs/docs/5.0/homestead/


개발환경을 로컬에 구축 하는 가장 손쉬운 방법으로 Vagrant가 있는데


이걸 사용한 환경을 Laravel에서 제공한다.


VirtualBox에 미리 설치된 리눅스 이미지를 다운로드 받고 관리 해주는 툴이 Vagrant다.




VirtualBox를 설치하고 Vagrant를 설치 한다.


vagrant로 homestead를 다운받자


vagrant box add laravel/homestead


다운로드 되는 동안 환경 설정을 하자.


적당한 위치에 홈스테드 설정 파일을 받는다.


git clone https://github.com/laravel/homestead.git Homestead


메뉴얼대로  bash init.sh 를 실행시킨다.  (윈도우는 GitBash 사용)


메뉴얼대로 SSH키를 생성한다.

ssh-keygen -t rsa -C "you@homestead"


사용자 디렉토리에 .homestead 에서 Homestead.yml이 설정파일이다.


https://scotch.io/tutorials/getting-started-with-laravel-homestead


설정 파일은 위의 링크를 참조 하는게 좋다.


git으로 clone을 받은 경로와 실제 laravel소스가 위치할 경로는 별개로 잡는게 관리상 편리하다.


그냥 한번 해볼꺼면 기본 상태로 그냥 하고 차후를 생각해서 관리 를 할꺼면 폴더 구조를 잠시 고민한다.


내경우엔 위의 경로를 참고해서 프로젝트를 따로 관리하기로 했다.

folders:

 - map: /Users/dummy/projects

   to: /home/vagrant/Sites


sites:
- map: laravel.app
to: /home/vagrant/Sites/test/public


homestead이미지 다운로드가 완료되면 clone받은 homestead경로에서 명령창을 연다


vagrant up


필요한 환경을 구성하면서virtualbox를 구동시킨다.


vagrant ssh를 하면 가상머신으로 로그인한다.


윈도우에서는 putty에서 127.0.0.1:2222로  접속 하거나

기본상태로는 192.168.10.10의 내부 네트워크 아이피를 부여받으므로 해당 아이피로 접속한다.



이제 본격적인 Laravel설치

http://xpressengine.github.io/laravel-korean-docs/docs/5.0/installation/.


기본상태라면

/home/vagrant/Code의 경로가

clone받은 homestead의 Code 경로 공유되어 있을것이다.


나는 Sites로 설정을 했으니

cd Sites


laravel전역설치

composer global require "laravel/installer=~1.1"


프로젝트 생성은 둘중에 편리한 방법으로 진행을 한다.


프로젝트 생성

laravel new test


전역설치 하지 않고 프로젝트 생성

composer create-project laravel/laravel test--no-dev --prefer-dist -vvv



host에서 브라우져를 켜고  192.168.10.10으로 접속하면

라라벨 초기 화면이 보일것이다.


아이피보다는 도메인으로 접속하는게 편리 하므로 설정을 한다


/etc/hosts

192.1568.10.10 laravel.app











https://github.com/eclipse-color-theme/eclipse-color-theme/issues/206


언제 부턴가 컬러테마를 적용한것이 기본값으로 적용되었다.


해결방법을 찾아서 해봤는데 잘된다.


테마를 클래식으로 바꾸고 재시작 - > 다시 다크테마로 선택을 하면 컬러테마가 유지된다.

Early 2011 맥북 프로인 관계로 썬더볼트는 있지만 USB3.0 이 없다.


외장 하드디스크를 USB로 연결하면 답답하기 그지 없던 차에 중고로 수소문해서 겨우 겨우 어뎁터를 구해서 그나마 쾌적하게 잘 쓰고 있었는데


맥에서는 아무런 문제가 없었는데  부트캠프인 윈도우7 에서는 잘 쓰다가 대용량 파일 복사(라고 해봤자...100M 정도)를 하면 항상 그러는것도 아니고 어쩌다가 화면이 아예 멈추는 현상이 벌어졌다.



강제 종료말고는 방법이 없어서 구글링, 검색어는  'bootcamp 1394 freezing'


https://discussions.apple.com/thread/4175086?start=0&tstart=0


동일 증상을 호소하는 사람들이 다행이 있었다.


해결 방법도 나와 있다.


드라이버를 lagacy로 바꾸고 쓰기 캐쉬를 활성화


하지만 나의 경우에는 블루스크린을 보는 상황이 만들어졌다.


드라이버는 원래대로 원상복구 하고 쓰기 캐쉬만 살려놨는데 그뒤로는 별 문제 없이 잘 사용중이다.


 If running Vista or Windows 7 you can also enable write caching.
 
 To do this, simply follow these steps:
 
 1. Open "My Computer" or "Computer" from your "Start" menu or button.
 2. Right-click the external hard drive from the list and select "Properties".
 3. Click the "Hardware" tab.
 4. Highlight the drive you're having problems with from the drive list and click on "Properties".
 5. Click on the "Policies" tab.
 6. You will see two buttons: "Optimize for quick removal" and "Optimize for performance".
 7. If not selected, select "Optimize for performance" and click on "OK". If running Vista or Windows 7 also check "enable write caching on the disk".
 8. Click on "OK" and exit.




ps. 이것도 완벽하지는 않네요.

오늘 프리징 현상이 한번 일어났습니다. 그래도 기존보다는 빈도가 아주 낮네요.


ps. 프리징이 종종 발생하여  usb를 사용하기로 했다. 속도보다는 안정성이 우선이다.


설치 과정은 윈도우 8과 비슷하다. (당연한가?)


윈도우 8 을 사용중인 노트북이 있고 윈도우 계정으로 사용중이였다. 윈8에서도 새로 설치 하거나 하면 인증 하라고 나오는데


윈도우10도 마찬가지로 인증을 한다,  (아..캡쳐를 해둘껄..누군가 해서 올리겠지)


계정에 설정된 전화번호, 이메일 중에서 선택을 하라고 나오는데


전화번호가  ******23  이런식으로 표시되고 하단에 23을 포함한 뒷자리 4자리를 입력하라고 나온다.


입력하고 나면 해당 전화 번호로 인증 문자가 전송되고 , 그걸 입력하면 다음으로 넘어간다.


그랬더니.  윈도우8에서 사용하던 바탕화면과 작업표시줄 배치가 그대로 나타난다.(좌측 배치로 사용중)

윈도우 10만의 새로운 무엇인가가 짜잔!! 할 줄 알았더니 그게 아니였다. 


윈도우8의 타일 배치를 가져오겠냐고 해서 아니요..했더니..타일이 안보인다..이거 어떻게 하지?

재부팅하니 나오긴했다..훔..동기화 방법을 찾아봐야 할듯






여기서 바탕화면을 바꾸면 집에서 사용중인 윈8의 바탕화면이 바뀌는지는 테스트 해봐야겠다.


계정 연동이 된다는게 좋은건지 나쁜건지 알 수 가 없다.

윈8 방식의 그 타일 화면을 어떻게 불러오는지는 아직 알 수가 없다..이대로 그냥 쓰는건가?


어라?항상 MSN이 떠서 구글로 바꿔주곤 했는데  IE의 시작 주소도 가져온다. IE 는 11



미묘하게 뭔가 바뀐 탐색기, 윈8에서의 복잡함이 정리된것 같다.


미묘하게 배치가 바뀐 탐색기



윈8 보다 좋아 진것도 같고 아닌것도 같고.. 좀 더 써봐야겠다.



가상 데스크탑이 들어간건 반갑지만 아직은 부족하다. 맥에서 사용하던 거랑은 차원이 낮다.


가상데스크탑간에 프로그램 이동 방법을 아직 못찾았다. (없는건지 못찾은건지)


테스트 해본다고 껏다 켯다.


시작메뉴에 윈8에서 설치 했던 앱이 설치되어 있다. (개인설정에서 동기화를 켜놨음)


VMWare Tool 설치 하니 동영상도 봐줄만 한 속도다. 그런데.. 하드웨어가 바뀌었다고 인식을 했는지 인증을 하라고 나온다.



Verify누르면.....동작 안한다 ㅡ.ㅡ;;


어쩐다...


해결 방법을 찾았다. 


계정에 들어가서 Disconnet 하고 재부팅하고, 다시 계정을 스위칭 하니 인증을 하고 넘어간다.



자바로 간단한 API 웹 프로그래밍을 해야 해서 알아보다 보니


http://sparkjava.com/ 이 경량화 이면서 자바 초보인 내가 알아보기 쉽게 되어 있어서 선택했는데


문제는 배포방법을 모르겠어서 삽질이 시작되었다.


이클립스에서의 실행은 아주 쉽다.


이클립스용 Gradle를 설치해주고 (마켓에서 설치) 새로운 GradleProjet를 생성한다.




build.gradle에 sparkjava dependencies 를 넣어준다.


http://mvnrepository.com/artifact/com.sparkjava/spark-core/2.0.0


그리고 최종적으로는 war로 배포를 할것이니 war플러그인도 설정






테스트용 클래스를 하나 생성하고 코드를 sparkjava 홈페이지에서 그대로 가져온다음 실행을 누른다.

아..그전에 프로젝트 팝업메뉴Gradle -> Refresh All , Gradle -> Enable Dependency Managment





http://localhost:4567/hello 에 접속하면 끝!


개발은 이상태로 계속 하면 된다.


문제는 이렇게 개발한것을 어떻게 배포를 하느냐 인데

자바 초보인데다가 웹프로젝트도 처음이고 war파일을 톰캣이나 jetty에 wabapps경로어 넣으면 된다 정도의

아주 기초적인 지식만 가지고 하루종일 구글링을 해보고 밤잠 설쳐 가면서 삽질을 했는데 도데체 모르겠는것이다.


결국은 maven까지 깔아서 해봤는데도 잘 안되었다.

( 이 과정에서  gradle이 얼마나 쉬운지 체험했다.)


안되면 처음부터 천천히 보자..공식문서에는 다음과 같이 나온다.


Other webserver

To run Spark on a web server instead of standalone first of all an implementation of the interface spark.servlet.SparkApplication is needed. In the init() method the routes should be initialized. In your web.xml the following filter needs to be configured:

어쩌라고?



자세히보니 init()을 하란다....


어쩌라고?????



다시 구글링..


범인은 가까운데 있다지..ㅡ.ㅡ;;


Git의 Test코드에서 sample을 찾아 볼 수있었다.


다른 웹서버에서 사용하기 위한 web.xml 설정과

https://github.com/perwendel/spark/blob/master/src/test/webapp/WEB-INF/web.xml


이를 사용하기 위한 샘플 코드

https://github.com/perwendel/spark/blob/master/src/test/java/spark/servlet/MyApp.java



이대로 지금 작업중인 HelloSpark에 추가를 한다.


src/main/webapp/WEB-INF/web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>
    <filter>
        <filter-name>SparkFilter</filter-name>
        <filter-class>spark.servlet.SparkFilter</filter-class>
        <init-param>
            <param-name>applicationClass</param-name>
            <param-value>org.gradle.Spark</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>SparkFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

자바 코드도 수정을 한다.


아까 테스트한 Hello World에 github에서 가져온 소스를 덧붙인다.

package org.gradle;
import static spark.Spark.*;
import spark.servlet.SparkApplication;

public class Spark implements SparkApplication{

    public static void main(String[] args) {

        staticFileLocation("/public"); // Static files
        get("/hello", (req, res) -> "Hello World");
    }

    @Override
    public void init() {
        // TODO Auto-generated method stub
        before("/protected/*", (request, response) -> {
            halt(401, "Go Away!");
        });
        get("/hi", (request, response) -> {
            return "Hello World!";
        });
        get("/:param", (request, response) -> {
            return "echo: " + request.params(":param");
        });
        get("/", (request, response) -> {
            return "Hello Root!";
        });
        post("/poster", (request, response) -> {
            String body = request.body();
            response.status(201); // created
                return "Body was: " + body;
            });
        after("/hi", (request, response) -> {
            response.header("after", "foobar");
        });
        try {
            Thread.sleep(500);
        } catch (Exception e) {
        }
    }
}

이클립스 메뉴에서 Window->Show View -> Other 에서 Gradle Tasks를 추가 하고

작업중인 프로젝트를 선택한 후 build를 더블클릭하면 build\libs 경로에 HelloSpark-1.0.war 파일이 생성되며

이것을 톰캣이나 다른 jetty 서버에 배포를 하면 된다.


ps.

staticFileLocation("/public"); // Static files

이함수는 임베디드 jetty에서는 아무데서나 써도 되지만 war로 배포 하겠다고 한다면

꼭 main에서 실행해야 한다. 이것 때문에 하루 삽질!