지식메모

반응형




xml 작성 중 error: Apostrophe not preceded by / 계속 이런 에러가 났다 


왜 그런고 하니 어퍼스트로피 이 원인이었다.


본문은


creates a profile to share a friend's sending 


이러하였고 그래서 어퍼스트로피 전에 역슬래시를 추가해주었다.


creates a profile to share a friend\'s sending 


문제가 해결되었다!



반응형
반응형




안드로이드 시스템 언어설정을 변경하면 앱도 같이 변경하게 하고 싶었다.


프로젝트 폴더를 보면 


values 라는 폴더가 있는데 이 폴더가 기본 폴더이다.


내가 필요한 건 영어였기 때문에


values-en 폴더를 만들었다.





국가별 코드는 아래 링크에서 확인할 수 있다


http://developer.android.com/reference/java/util/Locale.html


위 링크에서 Field 항목에서 확인할 수 있다.


영어는 이렇게 나온다


public static final Locale ENGLISH

Added in API level 1

Locale constant for en.



values-en 폴더를 만들었다면 이제 string,xml 을 영어로 바꿔줘야 한다.


 values 폴더 내 string.xml 은 한글로


values-en 폴더 내 string.xml 은 영어로 작성한다.



이렇게 해주면 시스템 언어가 한글이면 values 폴더를 따르게 되어 한글로 나타나고


영어면 values-en 폴더를 따르게 되어 영어로 나타난다.


예를 들면


 values 폴더 내 string.xml

 values-en 폴더 내 string.xml 

 <string name="app_name">안드로이드 앱</string>




  <string name="app_name">AndroidApp</string>




이렇게 작성해준다면 그림과 같이 알아서 영어로 나타난다.


그래서 layout 폴더에 각 액티비티에 해당하는 xml 파일에 다음과 같은 코드를 추가해준다.


 android:text="@string/app_name"


<TextView       

         android:id="@+id/text2"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="@string/app_name"

         />




이런 식으로 "@string/해당 string name" 을 지정해주면 

values, values-en 폴더를 생성해 두었기 대문에 자동으로 분기가 되어 

한글이면 한글, 영어면 영어로 변경된다.



하지만 xml이 아닌 JAVA 로 언어셋팅을 해주었다면 어떻게 해주어야 할까



아래 코드를 통해 JAVA에서도 분기가 가능하다



Locale locale = getResources().getConfiguration().locale;
String language =  locale.getLanguage();



위 코드로 현재 시스템 언어가 어떤건지 값을 알아낼 수 있다.


만약 영어로 변경했다면 language 에는 "en" 스트링 값이 저장될 것이다.


그렇다면 이 값으로 분기를 해준다.


EditText et_star = (EditText)findViewById(R.id.edit);
	if(language.equals("en"))
		et_star.setText("Hello!");
	else
		et_star.setText("안녕하세요");





이렇게 language.equals("en") 영어라면 


et_star.setText("Hello!");

 Hello! 를 셋팅 


그게 아니라면 


et_star.setText("안녕하세요");

안녕하세요 를 셋팅 


할 수 있다. 


이렇게 해서 다른 언어도 분기 가능하다.



자유로운 언어 변경을 위해서는 xml 파일에서 string.xml 을 통해 문구를 설정 하는게 편하다는 것을 배울 수 있었다.



그런데 한가지 문제가 있었는데 영어로 언어변경을 하면 앱 테마가 진저브레드? 시절로 바뀌는 문제가 있었다.


앱 사용에는 문제가 없었지만 이 부분도 한번 찾아봐야겠다.





반응형
반응형

 

삼성 갤럭시에서 간편한게 배경 지우는 방법

https://yonoo88.tistory.com/1346

 

갤럭시S10 갤러리에서 인물 배경 간편하게 삭제하는 방법

갤럭시S10 삼성 갤러리에서 인물 배경을 간편하게 지워주는 방법. 갤럭시S10만 되는게 아니라 삼성 폰을 쓰면 아마 대부분 되는 방법이다. 단 Android 버전이 너무 낮으면 지원을 안하는 기능임. Android 9나 10버..

yonoo88.tistory.com


전에 포토샵으로 인물배경 투명으로 만들기를 했었는데요

관련링크

http://yonoo88.tistory.com/518

 

좋은 사이트를 알게되어서 써봅니다.

 

포토샵 없이 인물배경 투명하게 만들기 입니다.

 

우선

 

https://pixlr.com/editor/

 

위 링크로 들어갑니다.

 

무료 툴을 제공하는 사이트인데요.

 

무료치고는 포토샵만큼의 기능을 갖추고 있습니다.

 

사전에 먼저 이미지를 마련해두어야겠죠.

 

 

그럼 위와 같은 화면이 뜨는데 컴퓨터로부터 이미지 열기를 클릭합니다.

 

 

 

저는 지난번 포스팅했던 지단이미지를 준비했어요

 

 

 

좌측에 요술봉 도구가 있습니다. 선택한다음 배경을 클릭 하면 점선으로 선택되어집니다.

 

 

 

 

 

 

선택되어지면 우클릭을 한 다음 반전선택을 합니다.

 

그럼 인물만 점선으로 선택되어집니다.

 

그리고 Ctrl + X 키로 잘라내기를 해줍니다.

 

움짤로 부가설명!

 

 

이렇게 잘려나갑니다.

 

 

 

그 다음에는

 

파일 > 새 이미지 선택한 후 투명에 체크 하고 확인해줍니다.

 

 

 

그리고  Ctrl + V 로 아까 잘라냈던 이미지를 붙여넣어 줍니다.

 

 

 

 

 

 

그리고 다시 파일 > 저장 클릭 후

 

형식에서 PNG를 선택해주고 확인 클릭!!

 

 

 

 

그럼 투명 배경으로 된 인물사진이 완성!!!

 

 

단 저번 포스팅 처럼 배경이 단색으로 된 이미지여야만 손쉽게 만들 수 있습니다.

그렇지 않다면 일일이 지우개로 지워줘야 하거든요.

 

포토샵없이도 간단한 작업으로 인물투명배경을 만들 수 있습니다!!

반응형
반응형




이번에 새로 노트북을 구입하였는데 프리도스상태라 윈도우를 설치해야 했습니다.


그런데 윈도우 CD가 없어서 난감해지는 바람에 방법을 찾다가 알게 되어 남겨봅니다.


우선 요즘 윈도우를 다운 받을 수 있는 곳은 많습니다.

뭐 다들 아시는 토렌ㅌ..


그치만 솔직히 정품도 아니고 수정본들이 많더라구요.


그래서 순정을 알아보던 중 마이크로소프트에서 제공을 한다는 사실을 처음 알았습니다.


아래 링크로 이동합니다.

한글

http://windows.microsoft.com/ko-kr/windows-8/create-reset-refresh-media

영문

http://windows.microsoft.com/en-us/windows-8/create-reset-refresh-media


그럼 다음과 같은 화면이 나타납니다.




아래에 미디어 만들기를 클릭합니다.


그럼 mediacreationtool 파일이 하나 다운로드 됩니다.


이걸 실행시켜줍니다.


그럼 윈도우 8 이 뜨면서 실행되는데 다음과 같은 화면이 나타납니다.

언어와 원하는 버전 아키텍처는 64비트로 선택해줍니다.





설치파일 저장위치를 선택합니다.

우선 USB로 선택해보겠습니다.


USB는 4기가 이상이어야 하고 안 내용은 모두 삭제되니 미리 백업해두세요





다음을 누르면 설치파일을 다운로드 합니다.

시간이 대략 3~40분 정도 소요됩니다.




다운로드가 완료되면 확인과정을 거치구요. 이부분도 좀 기다려주세요





파일을 준비합니다.





이제 자동으로 알아서 USB에 저장됩니다.





끝! USB로 이제 윈도우를 설치 할 수 있습니다.




USB를 살펴보면 다음과 같은 파일이 들어있습니다.


정말 간단하네요!

그럼 이번에는 DVD로 굽는 법을 알아보겠습니다.

ISO로 선택하시고 동일하게 진행하시면 됩니다.


그 다음에 저장위치를 지정하고 파일명을 지정해주시면 자동으로 진행됩니다.






모든 과정이 끝나고 마침을 클릭합니다.





해당경로로 가보니 ISO파일이 생성되어 있네요!!





아마 진짜 오래전 CD롬이 아닌 이상 요즘은 다 DVD 읽고 쓰기가 가능하기 때문에 DVD만 준비하시면 될 것 같습니다.


이제 DVD로 구워야 되는데요.

이것 역시 간단한 툴이 있습니다.


http://wudt.codeplex.com/


위 링크에서 다운로드를 클릭합니다.





그럼

Windows7-USB-DVD-Download-Tool-Installer-en-US

이란 파일이 다운받아집니다.


설치를 하고 실행시켜줍니다.



ISO가 저장된 경로에서 ISO 파일을 선택해줍니다.



여기서는 USB에 저장할지 DVD에 저장할지 선택하는데요

DVD를 선택해줍니다.

물론 USB를 선택하면 여기서도 ISO파일을 USB에 저장할 수 있습니다.




DVD를 씨디롬에 넣어주고 Begin burning을 클릭합니다.





그럼 알아서 굽습니다.

음 스멜~





이제 끝났습니다. 

윈도우 DVD는 이제 제껍니다.






이런 식으로 윈도우 씨디가 없을 때 직접 만들 수 있습니다.

세상 많이 좋아졌네요


단!! 정품 윈도우 제품키가 있어야 하겠죠!


그럼 저는 윈도우를 설치하러 가겠습니다!


혹시 몰라 관련파일 첨부합니다


mediacreationtool

mediacreationtool.exe


USB/DVD 저장 툴


Windows7-USB-DVD-Download-Tool-Installer-en-US.exe











반응형
반응형





if문이 자꾸 늘어나고 또 나중에 수정할 때 건드리는 부분이 많아져서 어떻게 할까 고민하던 중 

Map을 이용하여 하는 방법에 대해 알게 되었다.


즉 이러한 if 문을



	public static BitmapDrawable getSeasonBitmapDrawble(Context context, String str_season){

		BitmapDrawable img_season = null;
		if(str_season.equals("13")){
		   img_season =BitmapDrawable)context.getResources().getDrawable(R.drawable.year13);
		}else if(str_season.equals("15")){
		   img_season =BitmapDrawable)context.getResources().getDrawable(R.drawable.year15);
		}else if(str_season.equals("여름")){
		   img_season =BitmapDrawable)context.getResources().getDrawable(R.drawable.summer);
		}else if(str_season.equals("봄")){
		   img_season =BitmapDrawable)context.getResources().getDrawable(R.drawable.spring);
		}
		        return img_season; 
		}



Map의 key, value를 사용하여 바꿔보는 것이었다.


살펴보니


img_season =BitmapDrawable)context.getResources().getDrawable(R.drawable.year13);


이 부분이 반복적이었다.


그리고 하나 새로운 사실을 알게 되었는데


R.drawable.year13


이 이미지 값이 int 형이었다는 것이다. 그냥 보고 String 인 줄 알았었다.


그래서 HashMap 선언시 <String, Integer>로 해주었다.


<13,R.drawable.year13>


이런 식으로 저장하기 위함이었다.



일단 값들을 HashMap에 넣어놓았다.



static HashMap<String, Integer> map = new HashMap<String, Integer>(); //HashMap 선언
	public static HashMap getMap() {
        
        map.put("Special", R.drawable.special);
        map.put("봄", R.drawable.spring);
        map.put("여름", R.drawable.summer);
        map.put("가을", R.drawable.fall);
        map.put("겨울", R.drawable.winter);

        map.put("09", R.drawable.year09);
        map.put("10", R.drawable.year10);
        map.put("11", R.drawable.year11);
        map.put("12", R.drawable.year);
        map.put("13", R.drawable.year13);
        map.put("14", R.drawable.year14);
        map.put("15", R.drawable.year15);
        
        
        return map;
}


그리고 이미지 세팅을 위한 코드



public static BitmapDrawable getSeasonBitmapDrawble(Context context, String str_season){
		
		BitmapDrawable img_season = null;
		img_season = (BitmapDrawable)context.getResources().getDrawable(getMap().get(str_season));
		
        return img_season; 
	}




img_season = (BitmapDrawable)context.getResources().getDrawable(getMap().get(str_season));


getMap().get(str_season) 이 부분으로 Map에서 str_season로 들어온 key 값을 찾아 int 형 value 값을 불러오도록 하였다.


하지만 값이 몇백 몇천개로 늘어났을 경우


이렇게 바꾼다고 해서 전보다 깔끔하고 보기 편해지긴 했지만 성능적인 면에서 더 좋아지는 건지에 대한 의문이 들었다.


어차피 이미지 세팅 할 때마다 getMap()을 거쳐야 하기 때문이다.


좀 더 좋은 방법이 없을까 찾아보았는데



private static HashMap<String, Integer> map;
 
    public static HashMap getMap() {
        if (map == null) {
            map = new HashMap<String, Integer>();
 
            map.put("Special", R.drawable.special);
            map.put("봄", R.drawable.spring);
            map.put("여름", R.drawable.summer);
            map.put("가을", R.drawable.fall);
            map.put("겨울", R.drawable.winter);
         
            map.put("09", R.drawable.year09);
            map.put("10", R.drawable.year10);
            map.put("11", R.drawable.year11);
            map.put("12", R.drawable.year);
            map.put("13", R.drawable.year13);
            map.put("14", R.drawable.year14);
            map.put("15", R.drawable.year15);
        }
                 
        return map;
    }



이렇게 해주면 처음 값이 불릴 때 map이 null 이기 때문에 map.put 이 실행되고 


다음에 다시 값이 불릴 때는 map에 값이 들어있기 때문에 if( map == null) 을 실행하지 않고 바로 map을 반환한다.


이렇게 되면 처음 한번만 실행되고 그 이후에는 갖다 쓰기만 하면 된다.


이런 방식을 싱글톤 방식?이 있다고 하는데 이것도 해당하는 건지 모르겟다.


그냥 이런 방법도 있구나 하고 알아볼 수 있는 시간이었다.




반응형
반응형




환경 

Cent OS 7

- br0 브릿지를 생성해 가상머신 인터넷에 사용하고 있는 중

- 유선인터넷



현상

잘되던 인터넷이 갑자기 되질 않음

ifconfig 로 확인해보면 디바이스에 아이피가 나타나지 않았음.

수동으로 설정을 해줘야 할 필요가 있는듯함


/etc/sysconfig/network-scripts/ifcfg-eth0


DEVICE="eth0"

TYPE=Ethernet

HWADDR=내 맥주소

ONBOOT="yes"

NM_CONTROLLED="no"

BRIDGE=br0


/etc/sysconfig/network-scripts/ifcfg-br0


DEVICE="br0"

TYPE=Bridge

NM_CONTROLLED="no"

BOOTPROTO=static

IPADDR=aa.bb.cc.dd

PREFIX=24

NETMASK=255.255.255.0

GATEWAY=10.12.46.1

DNS1=10.22.64.6

DNS2=10.22.64.7

ONBOOT="yes"


위 설정들은 그대로 유지되어 있는 상태


ONBOOT="yes" 로 되어있는 상황



해결방법


참고링크

https://kldp.org/node/89870


* 브릿지 설정 때문에 본인은 br0 디바이스로 설정, 브릿지 설정이 없다면 br0 말고 eth0 으로 시도


aa.bb.cc.dd는 실제 ip를 칭함


터미널에서 다음 명령을 수행

[root@localhost ~]# ifconfig br0 inet up aa.bb.cc.dd netmask 255.255.255.0 broadcast aa.bb.cc.255

[root@localhost ~]# route add -net 0.0.0.0 netmask 255.255.255.0 gw aa.bb.cc.dd dev br0

[root@localhost ~]# service network start

Starting network (via systemctl):  Job for network.service failed. See 'systemctl status network.service' and 'journalctl -xn' for details.
                                                           [실패]


실패가 떴지만? 이후 인터넷이 작동함 
ifconfig 로 br0 또는 eth0 디바이스를 다시 살펴보면 IP와 넷마스크 설정이 잡혀있음
단 재부팅하면 다시 안됨
그래서 위 작업을 다시 해줘야됨.


완벽한 해결법은 아님.

재부팅 해도 계속 되는 방법을 찾아야 함.







반응형
반응형




안드로이드 칼라배시 is not signed with any of the available keystores 


문제 해결하기


해결하기 앞서

필히 cmd 창에서 chch 65001 을 실행하여 변경해주어야 한다

그럼 다음과 같이 바뀐 다음에 실행해줘야 한다.




calabash-android run ~~~.apk를 실행하면


다음과 같은 문제가 발생하는 경우가 있다.




apk 사인이 되지 않았다고 하는데 사인을 해줘야 한다.

뭐.. 재서명 과정이라고 보면 될듯한데..




calabash-android resign [apk가 있는 경로]


또는 현재 위치가 apk가 있는 폴더라면 바로


calabash-android resign ~~~.apk


실행한다. 



아무 문제 없이 넘어가면 성공.




그렇지만 이렇게 호락호락하지 않을게 뻔하기 때문에 저대로 안될 수가 있다.


그럼 우선 사인을 하는데 필요한 파일


zipalign 


파일이 있는지 확인한다.



이 파일은 sdk 폴더에서 확인할 수 있는데


sdk > build-tools 폴더에 보면 설치된 API 레벨 마다 폴더가 있는데



각 폴더에 들어가 보면



맨 아래에 있는게 zipalign 파일이다.



만약 이 파일이 없다면


해결책이 될진 모르겠지만 꼼수로


https://developer.android.com/sdk/index.html#Other


위 링크에서 sdk를 다운 받아 설치 후 zipalign 파일을 찾아 각 API 폴더에 넣어준다.


혹시 몰라 첨부해놓음


zipalign.exe




그래도 안된다면 환경변수에 경로를 추가해주었는지 확인


시스템 변수에 ANDROID_HOME 이 없다면


ANDROID_HOME 을 추가하여 sdk 경로를 넣어주고







Path를 열어 zipalign 이 있는 경로를 추가해준다.


ex) ;%ANDROID_HOME%\build-tools\22.0.1





그리고 cmd 창을 새로 열고 chcp 65001 로 변경 후 


calabash-android resign [apk가 있는 경로] 를 실행하면


뭐가 쫙 나오면서 기기에 앱이 자동으로 설치될 것이다.



마지막 에러가 난 건 my_first.feature 파일의 스크립트를 아직 작성하지 못해 난거라

스크립트를 제대로 작성해야한다.


스크립트 작성법에 대해 알아봐야겠다.



반응형
반응형

 

엑셀을 쓰다보면 쓰지도 않는 구역에 행이 엄청나게 많은 걸 볼 수 있다. 이런 경우..

 

 

스크롤 좀만 해도 엄청나게 밀린다. 막 10030432 이런 식으로 몇백만 셀이 있는 걸 볼 수 있는데 그걸 지우는 방법이다. 

마지막 셀 위치를 설정하는 방법이다.

 

 

마이크로소프트 공식 답변

https://answers.microsoft.com/ko-kr/msoffice/forum/all/office-2013-%EC%97%91%EC%85%80/aa1ee909-c210-4986-a31b-cfb580c2da97

 

리디렉션 중

 

login.microsoftonline.com

 

 

그리고 마이크로소프트 고객지원의 설명

Excel에서 마지막 셀을 다시 설정하는 방법

https://support.microsoft.com/en-us/office/locate-and-reset-the-last-cell-on-a-worksheet-c9e468a8-0fc3-4f69-8038-b3c1d86e99e9?ui=en-us&rs=en-us&ad=us 

 

Locate and reset the last cell on a worksheet - Microsoft Support

Explore subscription benefits, browse training courses, learn how to secure your device, and more. Microsoft 365 subscription benefits Communities help you ask and answer questions, give feedback, and hear from experts with rich knowledge. Ask the Microsof

support.microsoft.com

반응형

+ Recent posts