'Develop'에 해당되는 글 4건

  1. HTTP
  2. 클라우드(CLOUD) 컴퓨팅
  3. 클라우드 서버/웹 호스팅/서버 호스팅 차이점
  4. 안드로이드 탭

HTTP

보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.

클라우드(CLOUD) 컴퓨팅

유닉스시스템 프로그래밍 시간에 발표했던

클라우드 컴퓨팅에 대한 PPT자료


클라우드 컴퓨팅이란?-서비스 종류-비교 순으로 구성되어 있다.


(참고) 본 문서는 2014년 11월에 작성되었음. 

Baas.io 같은 경우 프로젝트에서 활용하기까지 했었지만 2015년에 서비스가 종료되었음.


클라우드_2011윤예지.pptx


'Develop > ETC' 카테고리의 다른 글

HTTP  (0) 2018.02.23
클라우드 서버/웹 호스팅/서버 호스팅 차이점  (0) 2016.09.26

-서버 호스팅 : 서버 하나를 통째로 호스팅, 즉 임대하는 것. 물리적인 서버 한개를 100이라고 치면 100 전체를 쓴다.

사용하는 서버의 한계가 하드웨어의 한계이므로 서버 스펙을 높이려면 물리적인 업그레이드를 해야한다.

장점은 서버 한개를 통째로 사용하는 것이므로 다른 사용자의 영향을 받지 않는다는 것.


-웹 호스팅 : 서버 하나를 유저들이 나눠 쓰는 형태. 정확히는 서버를 쓴다기 보다 서버에 있는 웹 서비스를 나눠 쓴다고 할 수 있다. 웹 호스팅 업체가 서버를 관리하며, 서버 구축과 설정을 업체가 관리해주기 때문에 사용자는 서버를 설치할 필요 없이 서비스만 관리하여 사용할 수 있다. 그래서 이름이 웹 호스팅. 

서버 한개를 100이라고 치면 웹 호스팅 업체가 서버 100을 모두 사용하고 그 위에 여러 개의 웹 서비스를 만들어서 사용자들에게 서비스만 호스팅을 한다. 비유를 하자면 서버 호스팅은 돼지 한마리를 통째로 파는 거지만(호스팅이지만 비유이므로)  웹 호스팅은 돼지고기를 요리해서 원하는 양 만큼 파는 것이다. 하나의 서버를 여러 명이 같이 이용하기 때문에 서버 호스팅과 장단점이 반대다. 물론 정해진 한계가 있겠지만 다른 사용자의 영향을 받을 수 있다. 더 좋은 예시(?)를 든다면 서버 호스팅은 컴퓨터 하나를 통째로 쓰는 것, 웹 호스팅은 컴퓨터에 실행되고 있는 프로세스 하나를 쓰는 것. 한 프로세스가 점유율이 폭주하게 되면 다른 프로세스가 힘들어지기 마련이다.


-클라우드 서버 : 서버 호스팅과 웹 호스팅을 섞어 놓은 형태라고 할까. 서버 하나를 유저들이 나눠 쓰는 것은 웹 호스팅과 비슷하지만  관리자가 서버를 구축하고 서비스만 호스팅 하는 것과 다르게 가상화 된 서버를 호스팅한다. 즉, 하나의 서버 환경이 여러 개의 가상화 된 서버로 나눠져있고 유저는 이것을 사용할 수 있다. 서버 호스팅과 다르게 서버 스펙을 높이는 방법이 간단하다.(클라우스 서버 호스팅 업체의 서버 한계까지가 아니라면.. 물론 그정도까지 호스팅 할 일이 없겠지만) 하지만 웹 호스팅 처럼 서버를 관리해주는 것이 아니라 가상화 된 서버만 주는 것이기 때문에 서버 환경 구축은 사용자의 몫이다. 이것저것 제한이 많은 웹 호스팅과 다르게 서버에 능숙한 사용자라면 자유롭게 사용이 가능한 것이 장점이라면 장점이다. 이것 역시 비유를 하자면 클라우드 서버는 돼지 한마리를 원하는 양 만큼 생고기로 파는 것이다. 요리는 사용자의 몫!

그리고 각자 분리된 영역만큼 서버를 사용하므로 다른 사용자의 영향을 받지 않고, 할당된 만큼의 서버를 모두 사용할 수 있다. 서버 한개를 100이라고 치면 사용자가 원하는 만큼 20, 10, 50 처럼 나누어서 함께 사용한다.  웹 호스팅에서 사용한 예시를 활용한다면, 컴퓨터 한 대에 5개 정도의 가상머신을 설치해서 사용자가 각각의 가상머신을 사용할 수 있는 것. 컴퓨터의 디스크 용량이 300G라면 사용자 1은 50G 사용자 2는 70G를 신청하여 그만큼 할당 받아 사용할 수 있고, 용량 추가가 필요하면 할당 받을 숫자만 바꾸면 추가가 가능하다. 가상으로 분리된 환경이기 때문에 다른 가상환경의 프로세스가 영향을 끼칠 일이 없다. 점유율이 폭주해도 그 가상머신의 100%만 쓸테니까. 다만, 하드웨어 제어같은 가상 환경을 벗어난 기능은 사용 할 수 없다. 가상 서버 호스팅과 별차이가 없어서 요샌 거의 동일어로 쓰인다.





참고 : 클리앙의 어느 댓글

'Develop > ETC' 카테고리의 다른 글

HTTP  (0) 2018.02.23
클라우드(CLOUD) 컴퓨팅  (0) 2016.09.26

안드로이드 탭

http://itknowhow.tistory.com/17


안드로이드 Tab의 모든것

 
1. CurrentTab이 변경이 되면 Intent가 Refresh 되도록 설정하는 방법

  • Intent에 아래와 같이 addFlags를 설정하면 TabChange때 새로 Activity를 생성한다.

  • TabHost.TabSpec spec = tabHost.newTabSpec("tab1").setIndicator(tabs[0]).setContent(intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));

2. TabBar 꾸미는 방법

  • Tab Source (버튼 디자인)

 

public class TabView extends LinearLayout
{

 ImageView image;
 TextView text;

 public TabView(Context context, int drawable, int label) 
 {

  super(context);
  // Tab Image Setting
  image = new ImageView(context);
  image.setImageResource(drawable);
  
  // Tab Label Setting
  text = new TextView(context);
  text.setText(getResources().getString(label));
  text.setGravity(0x01); /* Center */
  
  setOrientation(LinearLayout.VERTICAL);
  addView(image);
  addView(text);
  this.setBackgroundResource(R.drawable.tab_selecter);

 }

 
 public ImageView getImageView()
 {

  return image;

 }
 
 public TextView getTextView()
 {

  return text;

 }

}


  • TabBar에 Tab 넣기

 

tabHost.newTabSpec("tab1").setIndicator(new TabView(this, R.drawable.tab1, R.string.tab1)).setContent(intent);
커스텀한 뷰 객체에 이미지와 텍스트를 설정하고 tabHost에 넣는다. 

  • 현재 Tab의 위치가 변경되었을 때 호출되는 이벤트 함수

 

tabHost.setOnTabChangedListener(new OnTabChangeListener(){ ... }

  • 현재 Tab의 안에서 여러개의 Activity를 Navigation 처리하기

 

public class NavigationActivity extends Activity
{
          // 앞으로 가기 처리
          public void goNextHistory(String id, Intent intent)
          { 
                   NavigationGroupActivity parent = ((NavigationGroupActivity) getParent());
                   View view = parent.group.getLocalActivityManager()
                   .startActivity(id, intent).getDecorView();
                   parent.group.replaceView(view);
          }

          // 뒤로 가기 처리
          @Override
          public void onBackPressed()
          {
                   NavigationGroupActivity parent = ((NavigationGroupActivity) getParent());
                   parent.back();
          } 
}

public class NavigationGroupActivity extends ActivityGroup
{
           ArrayList<View> history; // View들을 관리하기 위한 List
           public NavigationGroupActivity group; // Activity들이 접근하기 위한 Group
           public int tabIndex;
  
           @Override
           protected void onCreate(Bundle savedInstanceState)
           {
                      super.onCreate(savedInstanceState);
                      history = new ArrayList<View>();
                      group = this;
           }

           // 동일한 Level의 Activity를 다른 Activity로 변경하는 경우
           public void changeView(View v)
           { 
                    history.remove(history.size() - 1);
                    history.add(v);
                    setContentView(v);
           }

           // 새로운 Level의 Activity를 추가하는 경우
           public void replaceView(View v)
           { 
                    history.add(v);
                    setContentView(v);
           }

           public void tabBack()
           {
                     if (history.size() > 1)
                     {
                              back();
                     }
           }
 
           // Back Key가 눌려졌을 경우에 대한 처리
           public void back()
           { 
                     if (history.size() > 1)
                     {
                              history.remove(history.size()-1);
                              setContentView(history.get(history.size()-1));
                              setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                              ContentsControll.tabRotation = 0;
                     } 
                     else
                     {
                              finish(); // 최상위 Level의 경우 TabActvity를 종료해야 한다.
                     }
           }

           // Back Key에 대한 Event Handler
          @Override
          public void onBackPressed()
          { 
                    group.back();
                    return;
          }
}
 





http://vissel.tistory.com/91



기본 소스를 보면 2개의 탭이 있는데요 화면 으로 누르지 않고 화면 안에서 소스로 이동할수 있거나 아니면

항목을 터치 이벤트에서 탭누르지않고 이동하려면.. 

 final TabHost tabHost = getTabHost();

       
        tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("메인")
    .setContent(new Intent(this, 아아.class)));

 

  tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("환경설정")
    .setContent(
      new Intent(this, 아아.class)
        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));
  
  
         tabHost.setCurrentTab(1); // 바로 이놈이 탭 을 이동 할 수 있는 비밀.

응용하자면 소스에서 처음 설정이    tabHost.setCurrentTab(0);으로 해놓으면 기본 셋팅이고 

버튼 이벤트에 푸쉬에다가    tabHost.setCurrentTab(1); 로 넣어주면 탭이 이동합니다 참쉽죠잉 . ㅋ 









http://androidhuman.tistory.com/151

http://blog.naver.com/PostView.nhn?blogId=liar1938&logNo=30171663892

http://blog.daum.net/dayhyub/67