shift+arrow.exe

오토핫키로 만든 크롬도우미입니다.

-기능

 1.탭 전환 

  shift + 오른쪽방향키

  shift + 왼쪽방향키

 2.탭 종료

  shift + 위, 아래

프로그램종료는 shift + enter 입니다. 


오른쪽 알트를 삭제키로 바꾸는 프로그램입니다.

Ralt to delete in bootcamp win10.exe


오토핫키로 컴파일했습니다.


종료키는 shift + R_alt


F3 을 CTRL + F3,

F4 을 ALT  + F4 로 바꿔주는 프로그램


오토핫키로 만듦

종료는 SHIFT F3, F4 입니다.

f3.exe

f4.exe


파일 : https://www.dropbox.com/sh/67lw02ertmnfpnx/AAARocelPBBN9JVO4KjsPGVca?dl=0

갤럭시 그랜드 독도룸 올리기~

검색해봐도 풀가이드가 없어 간단하게 정리해 봅니다. 참고용으로만 봐주세요. 저도 전문적인 지식이 없습니다.

//주의// 백업없이 진행 한다면 폰이 벽돌이 될 수도 있고 imei가 날아갈 수도 있습니다. 그리고 정식 as를 받지 못할 수 있습니다.

  (저는 백업없이 그냥 진행)

1. 삼성 usb통합드라이버 설치 (검색해서 설치하시면 됩니다)

2. 리커버리 설치 

Odin3_v3.12.5.zip 압축해제 후 Odin3 v3.12.5.exe 실행하면 창이 하나 나옵니다.

usb드라이버가 제대로 설치돼있고 usb를 이용해 폰과 컴퓨터를 연결하면 좌측 하단에 <ID:0/004> Added!! 라는

메시지가 나옵니다. 이러면 제대로 준비가 된 것입니다.

폰 전원을 끄고 볼륨하 + 전원 + 홈키를 5초정도 누르고 있으면 다운로드 모드가 나옵니다. 볼륨 상 키를 눌러서 진입합니다.

오딘 프로그램 우측 중간쯤에 ap를 누릅니다. GalaxyGrand_dokcovery.tar 파일을 선택합니다.

start를 눌러주면 설치완료 후 재부팅이 됩니다.

3.핸드폰 저장소에 파일 4개 넣기. usb와 컴퓨터가 연결되있고 핸드폰이 켜져있다면 핸드폰 저장소에 들어갈 수 있습니다.

처음 진입하는 디렉토리에 

dokdo_gapps_5.1.X

update_wifi_e250x

dokdo-7.3.0-OFFICIAL-baffinltektt

UPDATE-SuperSU-v2.82-20170528234214

를 복사해주세요.

4. 루팅하기

핸드폰 전원을 끈 후 핸드폰 전원+볼륨상+홈키 를 5초정도 누르고 있으면 리커버리에 진입합니다. 

리커버리에서 이동은 핸드폰의 볼륨키로, 확인은 핸드폰의 전원키로 하시면 됩니다.

apply update -> choose from internal storage에 가면 아까 넣은 파일을 찾을 수 있습니다. (없다면 경로를 조금 탐색 해보세요)

핸드폰 저장소에 파일 넣은 곳을 찾아야합니다.

UPDATE-SuperSU-v2.82-20170528234214.zip 파일을 찾아 실행하세요.

설치가 됐다면 메뉴로 나와 reboot을 합니다.

루팅이 제대로 됐다면 폰 부팅 후 앱목록을 보시면 supersu앱이 설치된걸 확인할 수 있습니다.

5.독도룸 설치

이제 다시 전원을 끄고 리커버리에 진입합니다.

wipe data/factory reset

wipe cache partition

차례로 실행하시고 

apply update -> choose from internal storage에서

dokdo-7.3.0-OFFICIAL-baffinltektt -> dokdo_gapps_5.1.X 을 차례로 설치하시고 바깥 메뉴로 나와 

reboot system now를 누르시면 됩니다.

이제 독도 부팅화면이 뜰겁니다~ 

6. 와이파이 고치기

만약 와이파이가 안되면 같은 방법으로 리커버리에 진입해서 update_wifi_e250x를 설치하시면 됩니다.


끝~~ 

그림도 없지만 그냥 기록+ 필요한 분 있을까바 올려봅니다. ㅎㅎ

------------------------------

후기, 확실히 순정보다 빠르네요. 하지만 가끔 재부팅이 되네요. 



기억의궁전 이란?? 기억의궁전이 뭔지 알려주는 기억의 궁전을 학습할 수 있는 어플입니다. 


'기억의 궁전 - 장소기억법'  - https://play.google.com/store/apps/details?id=hungry.ex_frag



 

장소를 이용한 기억법입니다. 장소를 이용한다는 것이 낯설겠지만, 

고대 그리스에서는 장소를 활용한 기억법이 인기였다고 합니다. 


memory journey, memory palace, mind palace technique 라고도 불립니다.

 

 



String s="hoho"


s.subString(0,2).subString(0,1)


객체에 . 을  찍어서 계속 계속 메소드를 호출 하는 것을 본적이 있습니다.


이것이 바로 자기 부르기!!


return this; 라는 생소한 문법을 볼 수 있습니다. 


public class test {
public static void main(String args[]){
self s=new self();
s.addOne().addOne().addOne().addOne().print();
}

}
class self{
int num=0;
self addOne(){
num+=1;
return this;
}
void print(){
System.out.println(num);
}
}


틀린점이나 보충할 사항은 항상 수정하겠습니다.


싱글턴 패턴은 언제 사용하는 것일까???

오직 하나의 클래스 인스턴스만 공유되어야 할 때 사용했었다.



static 으로 유일한 변수, 메소드를 공유할 수 있다.


class의 모든 것을 하나만 공유하는 방법은 없을까??  이것이 바로 singleTon이다.

public class test {

    public static void main(String args[]){
Sing s=Sing.getInstance();
System.out.println(s.num);
s.num+=5;
Sing s2=Sing.getInstance();
System.out.println(s2.num);
}

}
class Sing{
int num=99;
private static Sing s;
static Sing getInstance(){
if(s==null)
s=new Sing();
return s;
}
}


자주 쓰는 찾아가는 기능을 2가지 소개할께요


1. 인스턴스 이름에서 Ctrl + B  또는 F4 를 누르면 루트로 찾아갑니다.

2.XML파일에서 Ctrl + B 역시 파일을 띄워 줍니다.

R.layout.activity_alarm_row2

 다른 파일로 전환 후엔 Ctrl + tab(탭 전환) 으로 처음 파일로 돌아가면 편해요.





소스창 빈칸에 우클릭 -> GOTO 에 있는 기능들입니다~

개인적으로 많이 사용하는 단축키라서 소개해봤습니다. 


안스에 왜 지금까지 몰랐을까 싶을 정도로 편한 기능이 있네요.


Navigation Between Bookmarks

FunctionShortcutUse this shortcut to...
Go to Bookmark <number>Ctrl+NumberNavigate to a numbered bookmark with the corresponding number.
Toggle BookmarkF11Turn anonymous bookmark on or off.
Toggle Bookmark with MnemonicCtrl+F11Turn bookmark with mnemonic on or off.
Show BookmarksShift+F11Open Bookmarks dialog to manage existing bookmarks and navigate between them.

 

북마크 기능입니다.

라인을 기억합니다. 일단 소스코드에 아무때나 갑니다.

F11은 이름없이 설정. Ctrl + F11은 알파뱃이나 숫자로 설정.   왼쪽에 마크가 생기죠~~

위 표의 첫번째 Go to Bookmark 는  Ctrl+ F11(숫자키로  지정)시 이동할 수 있습니다. 

개인적으로 이 기능이 제일 편하네요. 


추가된 북마크를 관리할 때는

  1.  SHFIT + F11 
  2.  ALT + 2

둘중 하나를 쓰시면 됩니다.


(ALT + 2 -> 북마크 -> ALT+DELETE 로 북마크 지울 수 있습니다)


ALT + 2 눌리면 FAVOLITE 기능도 있는데요. 파일을 기억하는 것입니다.    

해당 파일을 끌어 땡겨서 넣으시면 됩니다.


이제 틈틈이 젯브레인에 가서 업데이트나 설명좀 읽어봐야겠네요.

오늘 마우스를 놔두고 가서 트랙패드로 안스를 만졌는데, 이거 알았으면 편했겠네요. 헤헤


출처:

https://www.jetbrains.com/idea/help/navigation-between-bookmarks.html?search=bookmarks



픽셀서치에는 색깔, 좌표값이 필요합니다.


F12:: ;마우스좌표값

mousegetpos, xx, yy

PixelGetColor, color, xx, yy

msgbox, 커서는 X%xx% Y%yy% `n, %color%  있습니다.

Clipboard=%xx%, %yy%, %color%

return


실행하면 현재 픽셀값, 좌표값이 나옵니다.


-mousegetpos

mousegetpos는 현재 마우스의 좌표값을 xx, yy 라는 변수에 저장합니다.


-pixelgetcolor

pixelgetcolor에서 color라는 변수에 xx,yy좌표의 색깔값을 저장합니다.


전 강의에서 본 msgbox는 아시죠.  


-clipboard

clipboard는 클립보드(임시저장소)에 값을 저장하는 것입니다.  ctrl+v 를 하시면 저장된 값을 붙여넣기 하실 수 있습니다.


그런데 변수?? 가 뭘까요 


값을 담을 수 있는 통이라고 생각하시면 됩니다.


그리고 msgbox에서 보고 싶다면 %%로 감싸야합니다. 일단 이쯤하고 넘어갑시다. 

(사실 제대로 이해하실지 걱정이 많네요 ㅠ.ㅠ;)  





이제 우리는 좌표와 색깔을 알 수 있습니다.  바탕화면으로 가서 크롬에 마우스커서를 올리고 f12를 눌려 좌표와 색깔을 가져옵시다!!


잘 되나요??


이제 이 값을 이용해서 픽셀서치를 할 겁니다.

37, 218, 0x4450DD


아,, 그전에  좌표의 개념을 잡고 가볼께요.


모니터 왼쪽상단에서 F12 핫키를 실행시켜 봅시다. 0,0 에 가까운 값이죠??

중간에서도 한번~

오른쪽 끝에서도 한번~   1920, 1200 에 가까운 값이죠??


네~ 맞아요 모니터의 해상도만큼의 크기의 사각형안에  가로, 세로 값에 점이 있는것이죠.


f5:: PixelSearch, Px, Py, 0, 0, 100, 300, 0x4450DD, 3, Fast if ErrorLevel MsgBox, 못찾았어요.. else MsgBox, 찾았습니다. X%Px% Y%Py%. return


-pixelsearch

pixelsearch, 의 px, py는  찾은 좌표를 저장할 변수의 이름입니다.


그 다음 0, 0, 100, 300 은  0 , 0  ~ 100, 300  만큼의 모니터 좌표를 검색하라는 뜻입니다.

제 컴퓨터 크롬의 좌표가 37, 218이니   당연히 찾을 수 있겠죠?


다음 0x4450DD라는 색깔을 넣습니다. 


다음 3은 정확도라고 보시면 됩니다. 현재 색상값에서 3개만큼 변한 값도 찾아준다는 뜻이죠. 

255가 맥스값입니다.  1로 갈수록 정확도가 높아지겠죠??


다음 fast는 빨리 찾는 옵션입니다.  지우면.. 느립니다. 역시 정확도와 관계되겠죠?


-찾았을 경우, 못찾았을 경우

if ErrorLevel 

에러레벨에서는 못찾았을 경우입니다.

else 밑에

우리가 할 행동을 쓰면 되겠죠~?


자 그럼 여러분이 찾은 좌표로 바꿔서 입력해주시고 실행해주세요~~


잘 되시나요??


이제 크롬을 클릭할 것입니다.


else 아래를 수정합니다.

else{

MsgBox,찾았어요

MouseClick, left, px, py,2

}


-mouseclick

mouseclick, 클릭할버튼, x좌표, y좌표,  클릭횟수 입니다.


참고) px, py 는 소문자고   위 스크립트의 Px, Py 변수는 대문자 이네요~   오토핫키는 대소문자를 구분하지 않습니다.



원래 특정사이트 접속후 로그인까지 진행하려고 했으나,,.,. 여기서 마무리 해야겠네요. ㅠ.ㅠ 다음 시간에 만나요


%먼저 오토핫키 설치하기를 보고 오토핫키와 편집기를 설치해주세요.


목표

  •  스크립트 만드는 법 배우기
  • 픽셀서치, 메시지박스, 마우스클릭, 좌표와색상 찾기 


1.폴더를 하나 만드시고 마우스우클릭-> AutoHokeyScript 를 선택해주세요


2. 스크립트 파일의 이름(아무거나 상관없습니다) 을 지정하고 엔터.

3. 파일을 마우스 우클릭-> Edit Script 클릭




4.sci편집기에 들어왔습니다. 





#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.

; #Warn  ; Enable warnings to assist with detecting common errors.

SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.

SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.


다음과 같은 네줄이 적혀있을 것입니다. 기본적인 세팅이니 일단은 신경쓰지 않으셔도 됩니다.


제대로 되는지 테스트 해보기 위해서, 아래에 핫키를 지정하고 메시지 박스를 띄워봅시다. 


f6:: 

msgbox, 안녕 오토핫키야

return


위 내용을 스크립트에 적은 후 Run script 아이콘을 눌려줍니다. 단축키(F5)







이제 오토핫키가 작업표시줄에서 실행 된 상태입니다.


f6을 눌려보시면 메시지 박스가 나옵니다.

나오나요?? 잘하셨습니다.


이제 소스를 살펴봅시다.


f6:: 

msgbox, 안녕 오토핫키야

return


-핫키


f6::    f6을 핫키로 지정한다는 뜻입니다. f7:: 이라고 하면 f7이 핫키가 됩니다.


! Alt
^ Control
+

Shift   


두가지 키를 조합해서 핫키를 만들수도 있습니다. 


!1::

은 alt + 1 을 눌렸을 때 동작하는 핫키가 됩니다.


키보드의 거의 모든키를 핫키로 지정할 수 있습니다. 자세한 건 다른 강의에서 한 번 다루도록 하겠습니다.


-메시지박스

msgbox, 원하는 메시지 


원하는 글자를 메시지박스로 출력해줍니다.


-return

끝을 나타낸다고 생각하시면 됩니다.  






잘못된 예제를 하나 실행해봅시다.


위 예제에서 적은 내용을 지우고 

다음 스크립트를 적고 저장을 해줍니다. File-> save  또는  단축키 ctrl + s

f6::

msgbox, 난 f6


f7::

msgbox, 난 f7

return

저장 후 reload (다시 불러오기) 를 꼭 해주셔야 합니다.


작업표시줄의 오토핫키 아이콘을 마우스우클릭-> Reload This Script




reload 후 f6을 눌러 실행해봅시다.


뭐가 잘못됬나요?? 


f6:: 핫키 이후에 return이 없어 끝을 인식하지 못하고 f7까지 실행하게 됩니다. 

return의 중요성 아시겠죠~



그리고 reload는 핫키로 지정해 놓으면 편리합니다.


f7::

Reload

return


스크립트를 수정하고  ctrl+s 로 저장한 다음, f7를 눌려주면 reload가 됩니다.

작업표시줄까지 찾아가려면 불편하잔아요~



이번 강좌는 여기서 마치도록 하겠습니다. 잘못된 점은 댓글로 지적해주세요.





윈도우7, 64비트 기준


초보자를 위한 강좌를 시작하겠습니다.



먼저 오토핫키를 설치하세요

AutoHotkey111901_Install (1).exe


그 다음 편집기를 설치해주세요

SciTE4AHK300601_Install.exe



편집기를 열었을 때 뜨는 업데이트를 해주세요

https://chrome.google.com/webstore/detail/allow-copy/abidndjnodakeaicodfpgcnlkpppapah

이미지 투명하게 만드는 툴1. http://www.online-image-editor.com/

2. https://pixlr.com/editor/

안드로이드, node.js 간의 소켓통신에 쓰이는 모듈입니다.


하지만..... 문제가 좀 있습니다.


socket.disconnect(); 


메모리폭주..


검색을 해보니 해결법이 있네요~!!

websocket1.3.0을 추가해서 jar파일을 rebuild 해야합니다.


jar 실행하기 -> http://www.wikihow.com/Create-JAR-File 설명이 잘 돼있어요



짜잔...

rebuild한 파일 

mySocketIo.jar



참고

https://github.com/Gottox/socket.io-java-client/issues/52

https://github.com/TooTallNate/Java-WebSocket

https://github.com/Gottox/socket.io-java-client/issues/4

리스트뷰의 row에 이미지뷰를 설정하고, 펼쳐질 때, 닫힐 때마다 그림을 설정하는 소스.


i use fragments.


1.frag04.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ExpandableListView
android:id="@+id/exp_list"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:groupIndicator="@null">

</ExpandableListView>
</RelativeLayout>

frist, in order to hide for orginal arrow, add android:groupIndicator="@null" 


2.parent_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/rank"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:textSize="20dp"
android:paddingBottom="3dp"
android:gravity="center_horizontal"
/>
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textSize="29dp"
android:textColor="#ffff8f19" />
<TextView
android:id="@+id/공갈"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:textSize="10dp"
android:textColor="#33000000"/>
<TextView
android:text = " "
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10dp"
android:paddingRight="10dp"
android:textColor="#33000000"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/flag"
android:scaleType="fitXY"
android:layout_width="85dp"
android:layout_height="70dp"
android:paddingLeft="30dp"
/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="7dp"
android:paddingLeft="10dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/team"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:paddingLeft="15dp"
android:textSize="10dp"
android:textColor="#33000000" />
</LinearLayout>
<TextView
android:id="@+id/position"
android:textSize="18dp"
android:paddingLeft="10dp"
android:paddingTop="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:text=""
android:textSize="18dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
/>
<TextView
android:id="@+id/goal"
android:textSize="18dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:text="어시 "
android:textSize="18dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
/>
<TextView
android:id="@+id/assist"
android:textSize="18dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:text="패스 "
android:textSize="18dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
/>
<TextView
android:id="@+id/ps"
android:textSize="18dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:text="블럭 "
android:textSize="18dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
/>
<TextView
android:id="@+id/block"
android:textSize="18dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/공갈레이아웃"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
<ImageView
android:id="@+id/arrow"
android:src="@drawable/arrowdown"
android:scaleType="fitXY"
android:layout_width="30dp"
android:layout_height="30dp"/>
</LinearLayout>


</LinearLayout>

add the ImageView instead of original arrow 

<ImageView
android:id="@+id/arrow"
android:src="@drawable/arrowdown"
android:scaleType="fitXY"
android:layout_width="30dp"
android:layout_height="30dp"/>


and add the two image in drawable folder (arrowdown, arrowup)

3.ExpandListAdapter

package expandablelistview.volley.adapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.android.volley.toolbox.ImageLoader;

import org.androidtown.actionbar.R;

import java.util.ArrayList;

import expandablelistview.volley.app.MyApplication;
import expandablelistview.volley.model.Child;
import expandablelistview.volley.model.Group;

/**
* Created by park on 2015-06-02.
*/
public class ExpandListAdapter extends BaseExpandableListAdapter {

private Context context;
private ArrayList<Group> groups;
private ImageView arrow;

ImageLoader imageLoader = MyApplication.getInstance().getImageLoader();

public ExpandListAdapter(Context context, ArrayList<Group> groups) {
this.context = context;
this.groups = groups;
}

@Override
public Object getChild(int groupPosition, int childPosition) {
ArrayList<Child> chList = groups.get(groupPosition).getItems();
return chList.get(childPosition);
}

@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}

@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {

Child child = (Child) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) context
.getSystemService(context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.child_item, null);
}

if (imageLoader == null)
imageLoader = MyApplication.getInstance().getImageLoader();

TextView tv = (TextView) convertView.findViewById(R.id.country_name);
ImageView iv =(ImageView) convertView.findViewById(R.id.flag2);

tv.setText(child.getName().toString());
iv.setImageResource(child.getImage());

return convertView;
}

@Override
public int getChildrenCount(int groupPosition) {
ArrayList<Child> chList = groups.get(groupPosition).getItems();
return chList.size();
}

@Override
public Object getGroup(int groupPosition) {
return groups.get(groupPosition);
}

@Override
public int getGroupCount() {
return groups.size();
}

@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}

@Override
public View getGroupView(final int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
Group group = (Group) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater inf = (LayoutInflater) context
.getSystemService(context.LAYOUT_INFLATER_SERVICE);
convertView = inf.inflate(R.layout.parent_item, null);
}
arrow= (ImageView)convertView.findViewById(R.id.arrow);

if (isExpanded) {
arrow.setImageResource(R.drawable.arrowup);
}
else {
arrow.setImageResource(R.drawable.arrowdown);
}

TextView rank = (TextView) convertView.findViewById(R.id.rank);
TextView name = (TextView) convertView.findViewById(R.id.name);

ImageView flag = (ImageView) convertView.findViewById(R.id.flag);
TextView age = (TextView) convertView.findViewById(R.id.age);

TextView team = (TextView) convertView.findViewById(R.id.team);
TextView position = (TextView) convertView.findViewById(R.id.position);

TextView goal = (TextView) convertView.findViewById(R.id.goal);
TextView assist = (TextView) convertView.findViewById(R.id.assist);
TextView ps = (TextView) convertView.findViewById(R.id.ps);
TextView block = (TextView) convertView.findViewById(R.id.block);


rank.setText(group.getRank());
name.setText(group.getName());

flag.setImageResource(group.getFlag());
age.setText(group.getAge());

team.setText(group.getTeam());
position.setText(group.getPosition());

goal.setText(group.getGoal());
assist.setText(group.getAssist());
ps.setText(group.getPs());
block.setText(group.getBlock());

return convertView;
}

@Override
public boolean hasStableIds() {
return true;
}

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}

}

in public View getGroupView 

add the line

arrow= (ImageView)convertView.findViewById(R.id.arrow);
if (isExpanded) {
arrow.setImageResource(R.drawable.arrowup);
}
else {
arrow.setImageResource(R.drawable.arrowdown);
}

4.finish



square.c

간단한 규칙을 찾아낼 수 있는 능력이 필요하다.

생각보다 꽤 오래 걸렸다.

등비, 등차 공식을 다시 한번 유도해 보는 연습을 해보자.


------------------------------------------


#include<stdio.h>

#include<stdlib.h>



int main(void)

{

FILE* fp=fopen("input.txt", "rt");

FILE* fo=fopen("output.txt", "wt");

int i,j,k;

int length, num, count, even;

int temp, temp2, temp3;

if(fp==NULL)

{

printf("파일이 없어요\n");

return 1;

}


fscanf(fp, "%d", &length);

fscanf(fp, "%d", &num);


if(length%2 == 0)

even = 1;

else 

even = 0;


if(num ==1)

{

count = 1;

temp = count;

for(j=0;j<length/2;j++)

{

for(i=0;i<temp;i++)

{

fprintf(fo, "%d ", count);

count++;

}

fprintf(fo, "\n");

count+=temp;


temp++;

for(i=0;i<temp;i++)

{

fprintf(fo, "%d ", count);

count--;

}

fprintf(fo, "\n");


temp++;

count+=temp;

}

if(even == 0) // 홀수

{

for(i=0;i<temp;i++)

{

fprintf(fo, "%d ", count);

count++;

}

}

}

else if(num == 2)

{

count = 0;

temp = 1+ (length-1)*2; // 가로로 적을 횟수 정하는 것이요

temp2 = 0; // 1번이 빈칸이고   ++한다..

for(i=0;i<length;i++)

{

for(j=0;j<temp2;j++)

fprintf(fo,"  ");

for(j=0;j< (temp-(temp2*2));j++)

fprintf(fo,"%d ", count);

fprintf(fo,"\n");

temp2++;

count++;

}

}


else if(num == 3)

{


temp = (length/2)+1; //가로 개수

temp2 = length/2; //공백 개수

temp3 = -1;//공백조정하기


for(i=0;i<length;i++)

{

count = 1;

for(j=0;j<temp-temp2;j++)

{

fprintf(fo,"%d ", count);

count++;

}

fprintf(fo,"\n");

if(temp2 == 0)

temp3*=-1;

temp2 += temp3;

}

}


fclose(fp);

return 0;

}


square.c

사각형그리기 1번이랑 똑같구만요

------------

#include<stdio.h>


int main(void)

{

FILE* fp=fopen("input.txt", "rt");

FILE* fo=fopen("output.txt", "wt");

int i,j,k;

int length, num, count, even;

int temp;

if(fp==NULL)

{

printf("파일이 없어요\n");

return 1;

}

count = 1;


fscanf(fp, "%d", &length);

fscanf(fp, "%d", &num);


if(length%2 == 0)

even = 1;

else 

even = 0;


if(num ==1)

{

for(i=0;i<length;i++)

{

for(j=0;j<length;j++)

fprintf(fo, "%d ",count);

fprintf(fo, "\n");

count++;

}

}

else if(num == 2)

{


for(i=0;i<length/2;i++)

{

for(j=0;j<length;j++)

{

fprintf(fo, "%d ",count);

count++;

}

fprintf(fo, "\n");

count--;

for(j=0;j<length;j++)

{

fprintf(fo, "%d ",count);

count--;

}

count++;

fprintf(fo, "\n");

}

if(even == 0)

{

for(j=0;j<length;j++)

{

fprintf(fo, "%d ",count);

count++;

}

}

}

else if(num == 3)

{

for(i=0;i<length;i++)

{

temp = count;

for(j=0;j<length;j++)

{

fprintf(fo, "%d ",temp);

temp+=count;

}

fprintf(fo, "\n");

count++;

}

}


fclose(fp);

return 0;

}


cal.c

파일 입출력이 포인터형식이라는 것을 까먹어 애를 먹었다. 파일의 위치를 기억하고 있는 포인터!!

생각보다 소스가 복잡하네.?!?!

----------------------------------

#include<stdio.h>

int main(void)

{

int i, j, count, even=0;

int height, wide, repeat;

FILE* fp=fopen("input.txt", "rt");

FILE* fo=fopen("output.txt", "wt");


if(fp == NULL)

{

printf(" 파일이 없습니다");

return 1;

}

fscanf(fp, "%d %d", &height, &wide);


if( height%2 == 0)

even = 1;

count =1;

repeat = height/2;


for(i=0; i<repeat; i++)

{

for(j=0;j<wide; j++)

{

fprintf(fo, "%d",count);

if(j == wide-1)

fprintf(fo, "\n");

else

fprintf(fo, " ");

count++;

}


count += wide-1;


for(j=0;j<wide; j++)

{

fprintf(fo, "%d",count);

if(j == wide-1)

fprintf(fo, "\n");

else

fprintf(fo, " ");

count--;

}


count += wide+1;

}

if(even == 0)//홀수이면

{

for(j=0;j<wide; j++)

{

fprintf(fo, "%d",count);

if(j == wide-1)

fprintf(fo, "\n");

else

fprintf(fo, " ");

count++;

}

}


fclose(fp);


return 0;

}




C언어의 메모리 공간은 크게 스택, 힙 그리고 데이터 영역으로 나뉜다.

[아마 JAVA의 메모리 공간 구성도 비슷하다 (메시힙)]


-데이터 영역

전역 변수, static 변수가 할당되는 영역이다. 프로그램의 시작과 동시에 할당되고 프로그램이 종료되어야만 소멸된다.

-스택 영역

지역 변수, 매개 변수가 저장되는 영역이다.

-힙 영역

프로그래머가 관리하는 메모리 영역이다.  

 

Q) 배열은 왜 상수로 선언해야 할까??

.

.

.

.

.

.

.

.

.

.

.

.

A) 스택과 데이터 영역에 할당될 메모리의 크기는 컴파일시 결정되기로 정해 놓았어요

 

1.포인터와 배열의 관계

포인터는 주소를 저장한다.

포인터는 변수이다.

배열의 이름은 주소를 저장한다.

배열의 이름은 상수이다. 바꿀 수 없다.

배열의 이름은 포인터라는 중요한 결론! arr[i] = * ( arr + i );

2.문자열 표현 방식의 이해

char str1[5] = "abcd" ;    //변수로 표현

char *str2 = "ABCD";       //상수로 표현   - 이 경우 수정할 수 없다.

 

 

 

 

 

 

 

+ Recent posts