• 카테고리
    • 전체 글

    • 카테고리1
    • 카테고리2
    • 카테고리3
    • 카테고리4
  • 태그
  • 방명록

'분류 전체보기'에 해당되는 글 1250건

  • 2013.06.20 MS Access DB 한계 2
  • 2013.06.10 SKT T-Login (와이브로) 쓰면 바보다.... 3
  • 2013.06.05 갤럭시S3 3G 최적화 4
  • 2013.05.29 DataTable GetChange 사용법 1
  • 2013.03.24 우분투 설정 관련 메모
  • 2013.02.27 Java, Calendar의 before, after 1
  • 2013.02.26 넥서스S 자동 업데이트 소스 관련.
  • 2013.02.14 Windows 7 네트워크 위치 프로파일 편집하기.

MS Access DB 한계

기술자료 2013. 6. 20. 20:11

정확히 하면 MS Access 2003 포맷 기준 MDB의 한계다.

최대 Object의 크기가 2G의 한계를 가지다 보니, 2G를 넘기면 더 이상 데이터 처리를 하지 못한다.

 

완전히 최초 DB에서 아래와 같이 테이블을 하나 만들었을 때 기준으로 본다.

ID(long 4 byte) + id1(long 4 byte) + id2(long 4 byte) + id3(long 4 byte) + datevalue(text * 10 ) + seriesvalue (double 8 byte )....

위 처럼 보았을 때 하나의 레코드를 약, 1~2K 정도로 본다. 최소 단위가 4K니 4K씩 잡아도 된다.

 

여튼, 무한대로 레코드를 넣었는데, 그 결과는...

 

약 2천 3백만 개의 레코드를 넣었더니 결국 무너졌다.

파일 사이즈가 약 2G 정도 되어서 그렇게 된 듯...

 

 

누가 나에게 1억개 되는 레코드를 핸들링 했다고 자랑스럽게 말하길래 진짜? 하는 마음에 돌려봤다. 뭐 1/5 채우고 자빠진 격...

뻥도.. 알고 쳐야지.. 아무한테나 막 내지른다고 완성되는 것은 아닌듯..

 

비정형 DBMS로 하면 모를까, 최소한 MS Access로는 안된다.  쾅!!!!쾅!!!

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

SKT T-Login (와이브로) 쓰면 바보다....

잡글 2013. 6. 10. 12:16

진짜 낚인 기분...

T-Login Wibro를 쓰는데, (SBR-100S) 제대로 안테나가 떠 있는 것을 구경해본 적이 없다.

 

 

저 위치에 불이 들어오는데, 깜빡이면 접속중, 녹색이면 그레이트한 신호, 주황색이면 상태가 영... 붉은색이면 끊길 위험 있음.. 인데... 녹색불은 3달 사용 중 딱 2번 봤고, (그것도 아주 잠시) 대부분은 주황색 아니면 붉은색이다.

 

게다가 내부 홈페이지에 들어가서 와이브로 신호를 보면 아주 가관이다. 안테나가 3개 이상 보는건 정말 레어하고, 대부분은 1개 ~2개가 전부!

 

그래서 지금까지 내가 이 와이브로를 써서 연결해서 데이터를 써본 용량은 1g가 안된다.

(뭐 찾아보니, 5월 16일날 이걸로 다운로드 한번 걸어본 적은 있다. 제대로 데이터가 떨어지는지... ㅋ 1.9G 썼다고 나오는데 ㅎㅎ)

 

3월 02일 ~ 3월 31일 6G (제일 많이 써봄 - 아시아나의 와이브로 안테나 있는 근처에서 해봤음 ㅋ)

4월 01일 ~ 4월 30일 332MB

5월 01일 ~ 5월 31일 1.9G ( 5월 16일만 1.9기가 안테나 근처에서 써보고, 그외는...  ㅋ)

6월 01일 ~ 6월 10일 3M

 

그러니까.. 와이파이 처럼 안테나 근처에서 하는거 아니라면, 쓸 수가 없다.

 

뭐 내 연결 기록은 개인정보니까, 일반 상담원이 접근이 안될테니, 내 말이 진실인지 거짓인지는, 그네들이
알아서 판단하겠지만.... ㅋ

 

 

여튼 지금 있는 곳이 서울시 강서구 등촌돈 인데... 현재 상태가 이렇다.

 

  

 

 

지금 혹시 인터넷 사용량 때문에 고민이여서 와이브로를 고민 중이라면,

일단 SKT는 제외하는게 답이다. 아니면 그냥 요금제를 충분하게 끌어올려서 3G든 4G든, 휴대폰 데이터를 테터링해서 쓰는게 답일듯...

 

와이브로는 이제 사장되고 있는 기술이고, 소규모로 대충 운영 중인 SKT는 일찌감치 끝난듯 싶고,
그나마 KT가 괜찮긴 한데... 앞서 이야기 했듯이 사장되는 기술이다 보니, 조만간 사업 접지 않을까 싶다.

 

 

아쓰... 위약금이 지랠이네;;;;

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

갤럭시S3 3G 최적화

기술자료/모바일 2013. 6. 5. 14:06

 


 


갤럭시 S3를 구입하고, 몇몇 최적화 방법에 대해서 고민을 해봤다.

  갤럭시 S3 LTE에 비해 갤럭시 S3 3G 모델은 메모리가 2G -> 1G로 축소되어 제공되었다. 1G 메모리가 그렇게 작은 크기는 아니지만, 젤리빈에, 삼성 어플에, 심지어 통신사(SKT) 어플까지 얹으니 디폴트로 뜬 용량이 대략 650M를 상회했다.

약간 하이레벨의 프로그램을 돌리거나, 몇가지가 동시에 동작되는 경우 전체적으로 느려지는 건 다반사고, 더욱이 젤리빈으로 넘어가면서 TouchWiz 라는 홈런처 프로그램은 메모리 부족인지는 모르겠지만, 간혹 게임 같은 프로그램을 돌릴 때 저절로 종료까지 되었다.

 

진정한 최적화는 구글 레퍼런스 폰( 넥서스 원, 넥서스S, 갤럭시 넥서스, 넥서스4 등등 )을 사용하는게 답이지만, 애석하게도 난 갤럭시 S3 그것도 3G 버전을 들고 있을 뿐이고.. 최대한 적응하는 수 밖에 없었다.

 

 

그래서 결국 하나씩 손보기 시작했다.

 

단, 최적화에서 다음의 조건을 충족할 수 있도록 했다.

  1. 펌웨어 변경 없이 한다.
  2. 하드웨어 리셋을 하지 않는다.
  3. 최대 500M 이하로 떨어뜨려 2~300M의 공간을 확보한다.

1번 조건은 삼성 정책 때문에 결정했다. 이놈의 삼성에서는 펌업을 하면, 카운트를 하도록 했다. 커스텀 펌웨어를 올린 횟수 만큼 자동으로 카운트가 올라가는데, A/S 받을 때 불이익을 주려고 하는듯 싶다. 물론 이 카운터도 리셋은 가능하지만, 귀차니즘이 한가득한 나로써는 그냥 자연스럽게 커스텀 펌웨어 업데이트를 안하게 만들었다.

 

2번 조건은, 지금까지 설정한, 받아온 이력을 고스란히 남겨보고 싶은 욕심 때문이다. 현재 전화 송수신 이력 부터 모든 문자 메시지까지 지금까지 쭉 사용한 전체 이력 정보 부터 설정 정보까지 그래도 남기고 싶어서다. 물론 A/S를 받거나 하면 홀랑 날려 먹기 충분한 정보지만, 최소한 이 최적화 한다고 날려먹고 싶진 않았다.

 

3번 조건은 최적화 한계치다. 안드로이드 운영체제인 젤리빈도 나름 규모가 있는 운영체제다 보니, 나름 용량을 차지한다. 게다가 1G 라고 했지만, 시스템 영역까지 빼고 나면, 780M 정도... 그렇다면, 최소 500M 안쪽으로 들어가야 200M 정도 확보가 되고, 그래야 게임같은 프로그램을 돌릴때 안정적이지 않을까 싶다.

 

 

이 모든 말을 한마디로 하자면, "순정 최적화" 라고나 할까....

 

 

순정 최적화의 결과물은 아래와 같다.

 

489M 정도. 물론 작업 관리자 뜨면 2~30M가 늘어나긴 하지만, 선방이라고 생각된다.

 

 

 

단, 이 글을 읽고 난 뒤, 최적화를 할 때, 난 왜 안돼???? 라고 반문하기 전 스스로를 살펴봐야 한다.

최적화가 성공적으로 되려면, 불필요한 사항들을 내려서 얻어 낸 것이라는 점이다. 즉, Google Play가 되었던, 어둠의 경로가 되었던, 수만가지의 앱들을 설치하고, 이런 저런 이유로 다양한 앱들을 활성화 시키면 최적화의 의미가 없다.

최적화는 정말 효율적으로 활용하기 위한 방편일 뿐이지, 정답이란 없기 때문이다. 수많은 앱들이 동작시키면서 동시에 최고의 성능을 바란다면, 차라리 최신예 최고급 모델을 사서 쓰는게 답이다.

 

 

불필요한 앱 없애기

먼저 자신이 보유한 앱들을 돌아보면서 불필요한데, 설치되어 있는 앱들은 삭제한다. 간혹 실행도 하지 않으니 상관 없지 않나? 라고 말씀하시는 분들이 있는데, 앱들 중에는 서비스를 등록해서 메모리를 일부 잡아 먹는 일종의 상주형 앱들이 은근히 많다.

 

특히 알림 메시지를 뿌리는 앱들이 대표적인데, 대부분의 게임과, 대부분의 정보성 앱들이 그렇다. 그 외에 상시적으로 데이터를 송/수신 해야 되는 앱들(메일, 실시간 정보 수집 앱 등등) 역시 서비스로 항상 떠 있다.

 

그러므로, 스스로 생각할 때, 1주일 내로 실행된적이 없는 앱들은 과감하게 지운다. 내장 저장소도 비워지지만, 무엇보다 서비스들이 사라지므로 이 또한 큰 효과를 가져온다.

 

여튼 불필요한 앱들은 모두 언인스톨을 하던 삭제를 하던지 해서 확실하게 끝내도록 한다.

 

 

불필요한 기본 앱 없애기

통신사를 거쳐서 판매된 국산 폰들의 최악의 문제점은 사용자가 사용하지도 않을 앱들을 마치 선심 쓰는 양 마구 잡이로 억지로 넣고는 삭제하지도 못하게 만든 점이다. 앞서 말한 불필요한 앱들의 대부분이 바로 이런 앱들이지 않을까 싶다.

 

오른편에 보이는 항목들이 필자 개인적으로 사용하지 않은 앱들로써, 마구 종료시켜버린 앱들이다. ( 삭제가 안됨 )

 

사용중지를 시키는 방법은 설정 -> 애플리케이션 관리 -> 전체 를 선택하면 앱들의 목록이 쭉 나오는데, 그 중 사용 중지 시킬 앱을 클릭해서 들어가서 "강제 중지 -> 사용 안함" 을 클릭한다.

 

 

 

 

홈 런처 변경하기

요즘은 다양한 홈 런처들이 존재한다. 윈도우의 Explorer 같은 것인데, 바탕화면 부터 앱을 실행하기 위한 단계를 나타내는 화면이다.

 

화면 꾸미기 좋아하시는 분들은 이 홈 런처를 이것 저것 깔아서 돌려보는데, 이거 최적화의 큰 걸림돌이다. 게다가, 삼성에서 기본으로 제공하는 TouchWiz는 정말이지 꽝이다 싶다. 화면을 편하게 볼 수 있는 것도 아니면서 앱 관리하는 기능도 불편하고, 게다가, 느리고 무겁기 까지 하다.

 

이것도 걷어내야 하는데, 개인적으로 쓰는 런처가 있으면 1가지만 선택해서 사용하는 것을 권장한다.

 

필자는 작고, 가볍고, 빠른 노바 런처를 사용한다.

 

 

노바 런쳐 개발자들의 머리에 총알이 들어가서 무겁고 쓸데없이 기능만 많은 쓰레기 런쳐로 변신할 수도 있지만, 개인적으로는 현재까지 나온 런처중 가장 가볍고 기본기 충실하다고 생각된다.

 

노바 런처를 설치하고, 기본 런처로 설정해주면 된다.

 

 

정리

운영체제가 업그레이드 되면 당연히 메모리나, CPU, GPU 자원을 더 많이 소모하는 건 어쩔 수 없다. 기능도 기능이고, 기타 자동으로 제공되는 서비스들을 지원하다 보면 필연적일 수 밖에 없다. 하지만, 그렇다고 매번 이 폰을 최신예 기종만을 가져다 쓸수도 없는 노릇이다.

 

진정 최적화 하려면, 운영체제 부터 다이어트 하고, 불필요한 앱들을 청소해야 하는데, 이것을 하려면, 커스텀 펌웨어를 스스로 만들어서 업데이트해야 한다. 하지만, 이 작업을 하기에는 컴파일이라든가, 제품 구성/패키징까지 의외로 난이도가 높다. 차선으로 이런 문제를 안고 있는 사용자들의 커뮤니티를 통해서 만들어진 커스텀 펌웨어를 구하는  방법이 있긴하다. 하지만, 100인 100색이라고, 자신의 입맛에 100% 맞을리 없으니, 이 또한 커스텀 펌웨어를 이것 저것 갈아타는 악순환에 빠질수도 있다. 더욱이 보안 패치 같은 중요한 업데이트에서 누락될 수 있는 문제도 있다.

 

결국 순정으로 돌아가는데, 그러면 다시 최적화 문제로 빠지게 된다.

 

일단, 스스로의 폰에 어느정도 만족하면서 기능을 최대한 활용하는 방법을 고민하다 보면 자연스럽게 최적화를 구성할 수 있을 것이다.

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

DataTable GetChange 사용법

기술자료/.NET 2013. 5. 29. 13:20

요 근래 C#으로 데이터 베이스를 다루는 작업이 늘어가고 있다.

그런데, 단순히 Select / Insert / Update / Delete의 문제는 단순 쿼리 작성으로 해결은 할 수 있었는데,
문제는 변경된 사항만 적용하는 점이다.

 

Select를 해서 가져온 DataTable을 Grid 같은 곳에 DataSource로 붙인 것 까지는 좋은데,
이 Grid에서 데이터를 변경해서 나온 값을 가지고 뭔가 하려고 하니, 도데체 무엇이 변경되었는지를
찾는게 하나의 일이 되버렸다.

 

그렇다고, 전수 검사하는 것도 웃기기도 하고...

 

하지만, 태생이 DB 출신인 DataTable이 변경점 하나 없이 동작한다는 것은 말이 안될 것 같고 해서 이리 저리 사이트 돌아다면서 확인해보니, 역시 있었다.

 

DataTable.GetChanges()

 

이 메소드를 사용하면, DataTable 내의 데이터 변경 점을 모두 가져올 수 있었다.

 

사용방법은 아래와 같다.

 

준비

 

먼저 GetChanges를 호출하는 방법부터 확인하자.

 

이를 위해서 데이터를 준비한다. (여기서의 모든 예제는 SQLite를 사용한다. )

 

 

 

SQLiteConnectionStringBuilder sbConnectionString = new SQLiteConnectionStringBuilder();
sbConnectionString.DataSource = "test.db";
string sConnectionString = sbConnectionString.ToString();
SQLiteConnection conn = new SQLiteConnection(sConnectionString);
conn.Open();

// DB에 테이블을 생성
SQLiteCommand cmd = new SQLiteCommand(conn);
cmd.CommandType = CommandType.Text;
cmd.CommandText = "CREATE TABLE  IF NOT EXISTS T_CATEGORIES ( ID INTEGER PRIMARY KEY NOT NULL, NAME TEXT )";
cmd.ExecuteNonQuery();

// 테이블에 테스트 데이터 추가.
cmd = new SQLiteCommand(conn);
cmd.Transaction = transaction;
for (int i = 0; i < 100; i++)
{
	cmd.CommandType = CommandType.Text;
	cmd.CommandText = "INSERT INTO T_CATEGORIES(NAME) VALUES ( 'Category" + i.ToString() + "');";
	cmd.ExecuteNonQuery();
}

// 테이블의 내용을 Select
DataTable dtResult = new DataTable();
dtResult.AcceptChanges();
cmd = new SQLiteCommand(conn);
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT * FROM T_CATEGORIES";

// DataTable에 Select한 내용을 채우기.
SQLiteDataAdapter atapter = new SQLiteDataAdapter();
atapter.SelectCommand = cmd;
atapter.Fill(dtResult);

코드 상에서는 SQLite 개체를 쓰기는 했지만, OleDB가 되었던 MS SQL Server Client가 되었던,
요점은 ConnectionString을 구해와서 Connection을 맺고, Command를 만든 뒤, Adapter 개체를 생성해, DataTable에 Fill 하는 것이다.

 

일단 위의 코드를 사용하면, SQLite를 이용하여 test.db 안에 있는 T_CATEGORIES 라는 테이블의 모든 데이터를 dtResult 라는 곳에 채우는 것이다.

 

일단, dtResult 라는 DataTable을 만들었으면 조작을 시작해보자.

 

 

INSERT

 

데이터를 추가해보자.

DataRow newRow = dtResult.NewRow();
newRow["ID"] = dtResult.Rows.Count;
newRow["NAME"] = "New Category!";
dtResult.Rows.Add(newRow);

데이터 추가 로직은 간단하다. NewRow() 메소드로 DataTable의 Column에 맞게 구성된 DataRow를 확보한 뒤, 그 안에다 적절한 데이터를 넣는다. 그리고 난 뒤, RowCollection 에다 Add 를 한다.

 

이렇게 하면 dtResult라는 DataTable안에 새로운 데이터가 추가된다.

 

그렇다면 변경된 정보는 어떻게 확보할까?

그 때 GetChanges() 라는 메소드를 쓴다. GetChanges() 메소드를 사용하면, 전체 데이터 중에 변경점에 해당하는 값들을 모두 가져올 수 있다.

DataTable dtChanged = dtResult.GetChanges(DataRowState.Added);
foreach (DataRow row in dtChanged.Rows)
{
	if(row.RowState == DataRowState.Added)
	{
		foreach (DataColumn col in dtChanged.Columns)
		{
			Debug.Write(row[col].ToString());
			// 여기서 INSERT 구문을 작성한다.
	        }
		System.Diagnostics.Debug.WriteLine(" ");
	}
}

GetChanges()를 실행할 때, 파라미터를 하나 넣는데, 그 안에 넣는게 바로 DataRowStatus다.
만일 Insert 된 사항이 있으면 Added를 Update된 사항은 Modified, Delete된 사항이 있으면 Deleted를 아예 변경된적이 없는 경우에는 Unchanged를 넣으면 된다. 물론 복합적으로 사용도 된다. "|" 표시를 하면 복합적으로 검색해서 넣어준다.

DataTable dtChanged = dtResult.GetChanges(DataRowState.Added|DataRowState.Deleted| DataRowState.Modified);

변경 점들이 담긴 Table에서 Row들을 하나씩 꺼낸다. 이 정보를 이용해 INSERT 구문을 만들어 DataBase 상에 INSERT 해주면 된다.

 

 

UPDATE

 

INSERT와 매우 유사하다.

다만 틀린 것은 새로 추가된 사항이 아니고, 변경된 점 대비 이전 값이라는 것도 한번 더 체크해야 된다는 점이 다르다.

DataTable dtChanged = dtResult.GetChanges(DataRowState.Modified);
foreach (DataRow row in dtChanged.Rows)
{
    if (row.RowState == DataRowState.Modified)
    {
        object beforevalue = null;
        object aftervalue = null;
        foreach (DataColumn col in dtChanged.Columns)
        {
            beforevalue = row[col, DataRowVersion.Original];
            aftervalue = row[col, DataRowVersion.Current];

            // UPDATE 구문을 작성한다.
        }
        System.Diagnostics.Debug.WriteLine(" ");
    }                                
}

이전 값을 가져올 때는 DataRow의 배열에서 DataRowVersion 값까지 같이 넣어주면 된다. 
이 때, Original을 선택하면 변경 전의 값을 가져온다. 

단, 이 구문은 INSERT된 항목에서는 사용하면 안된다.
INSERT에서는 Original 값이라는 것이 없기 때문이다!

 

 

DELETE

 

이번에는 삭제된 값이다.
삭제된 값을 얻어오는 것도 위의 UPDATE 와 별다르지는 않다.
다만! 현재 값이 존재하지 않는다는게 문제다.

 

만일 아래와 같이 짜게 되면 Exception을 발견하게 된다.

DataTable dtChanged = dtResult.GetChanges(DataRowState.Deleted);
foreach (DataRow row in dtChanged.Rows)
{
    if (row.RowState == DataRowState.Deleted)
    {
        object beforevalue = null;
        object aftervalue = null;
        foreach (DataColumn col in dtChanged.Columns)
        {
            beforevalue = row[col, DataRowVersion.Original];
            aftervalue = row[col];    // 에러 발생!
            aftervalue = row[col, DataRowVersion.Current];    // 에러 발생!

            // DELETE 구문을 작성한다.
        }
        System.Diagnostics.Debug.WriteLine(" ");
    }                                
}

주석 중 "에러 발생!" 이라고 적은 부분이 있는데, row[col] 혹은 row[col, DataRowVersion.Current]를 하게 되면,

"Deleted row information cannot be accessed through the row" 라는 Exception이 발생한다.
이미 삭제했기 때문에, 현재 값이라는 것이 존재하지 않기 때문이다.

 

즉 aftervalue 라는 것 대신 before value(DataRowVersion.Original)을 이용해서 이전 값을 이용해 DELETE 문을 위한 구문을 작성하면 된다.

 

 

 

정리

 

.NET Framework에서는 DataSet(DataTable)을 이용하여 OldDB 개체를 통해 직접 수정하면 데이터베이스 상에서도 반영되게 만들어 줄 수 있다. 즉 DataTable 혹은 DataSet을 Select 등을 활용해 가져온 뒤, DataGrid에서 값을 변경하면, 자동적으로 데이터베이스와 연동해서 바뀐 값이 바로 바로 변경되게 구성할 수 있다는 점이다.

매우 DB 친화적인 것처럼 보일 수 있겠지만, 실제로는 거의 써먹질 못한다.

그 이유 중 하나가 Select를 할 때, 보통 Join을 해서 여러 개의 테이블을 복합적으로 사용하는 경우가 많은데,
이 경우 복합적으로 만들어지는 DataSet(DataTable)은 자동적으로 Update, Insert, Delete를 해줄 수 없다.
결국 개발자가 변경 점에 맞추어 SQL Query문을 생성해서 실행해야 된다는 것이다.

 

이런 변경 점을 즉시 즉시 찾을 수 있다면, 별도로 Dirty Flag를 만들어 변경 점이 있는지 없는지 늘 체크할 필요도 없고,
이전 데이터와 비교한다고 생쑈를 부릴 필요가 없어진다.

( 필자의 프로젝트 수행한 것 중, 무식하게 비교 점을 찾는 프로그램이 있었다. 틈 나면 그 부분도 갈아 엎어야 할 듯...)

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

우분투 설정 관련 메모

카테고리 없음 2013. 3. 24. 13:05

우분투를 사용하려면, 몇 가지 조작이 필요하다.

그래서 그에 대한 메모 몇 가지만 남긴다.


1. HUD 활성화 버튼 변경.

     한글로 번역하면서 "허드" 라고 나오는데, 이 항목을 Keyboard 바로가기에서 찾아서 ALT+L 로 되어 있는 것을 지우거나 다른  키로 변경해야 한다. 안그러면 한글 버튼 누를때마다 나온다;;;


2. 우분트 트윗 설치.

    이 도구는 반드시 필요하다! 여러가지를 설정할 수 있는 강력한 도구.


3. HUD 내 기능 중 Shopping Lens 삭제

    HUD기능은 Windows Vista 이후로 나온 검색 기능을 확실하게 지원하는 기능인데, 자주 사용한 프로그램 목록에서 부터 각종 파일까지 쉽게 검색해준다. 하지만, 처음 아무런 설정 없이 사용해 보면, 왠 CD 목록들을 잔뜩 보여주는데, 뭐 물건 사라는건지... 작업에는 일체 도움이 안된다. 반드시 삭제하도록 한다.



맨 위의 설정을 제외하면 대부분의 내용은 http://www.noobslab.com/2012/10/important-thingstweaks-to-do-after.html 에 나온다. 내용을 참고해서 최적화를 하는게 답!

728x90
저작자표시 (새창열림)
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

Java, Calendar의 before, after

기술자료/ETC 2013. 2. 27. 13:10

Java에서 보면 DateTime 대신, Calendar를 주로 사용한다.
아마도 지역마다 다른 이유나, 음력 등을 이유로 Date 개체로 처리하기에는 한계가 있어,
Date를 더욱 막강하게 만든 것 같다.

현재 이런 저런 구성 중에, 특정 일자의 이전, 이후에 대한 판단이 필요한 경우가 발생하는데,
Date 클래스에 있는 befere, after 처럼 Calendar에도 존재한다.

문제는 매번 짤 때 마다, 이 before, after 함수의 의미를 헷갈릴 때가 너무 많아서,
여기에 기억 되새김질 겸해서 적는다.

 

{Calendar 개체}.before({비교대상})

이 기본 문법인데, 이것을 이해하는 방법은 애석하게도 미국인 식으로 생각해주어야 한다.

{Calendar 개체} before then {비교대상}

즉 저 before 라는 의미는 “{비교대상}보다 {Calendar 개체}가 이전 인가?”라는 의미와 같다.

 

역으로 after는 다음과 같이 이해하면 된다.

{Calendar 개체}.after({비교대상})

이 기본 문법인데, 이것을 이해하는 방법은 아래와 같다.

{Calendar 개체} after then {비교대상}

즉, “{비교대상}보다 {Calendar 개체}가 이후 인가?”라는 의미와 같다.

 

아래와 같은 예제 코드를 실행 해보면 대충 짐작이 갈 것이다.

public void testCalendarAfterBefore()
{
	Calendar cal = Calendar.getInstance();
	Calendar calTester = (Calendar) cal.clone();
	calTester.roll(Calendar.DATE, 1);
	System.out.println(calTester.before(cal));
	System.out.println(cal.before(calTester));
}

위의 예제를 실행하면 이와 같은 결과를 얻을 수 있다.

false
true

 

cal 에는 현재 시간이, calTester에는 +1일 날짜가 담긴다.
즉, calTester가 cal보다 1일 더 큰 날짜이다.

이것을 위의 예제를 영어로 해석한다면,

calTester before then cal

cal before then calTester

이것을 한국말로 보자면,

calTester는 cal 보다 이전 날짜인가? 당연 false.

cal은 calTester 보다 이전 날짜인가? 당연 true.

 

단! 주의할 점은 저 비교는 모두 <. > 이지, 같은 것은 false 이다.

public void testCalendarAfterBefore()
{
	Calendar cal = Calendar.getInstance();
	Calendar calTester = (Calendar) cal.clone();
	
	System.out.println(calTester.before(cal));
	System.out.println(cal.before(calTester));
}

처음 예제 와는 다르게 아예 두 개가 같은 날인 경우 비교가 되지 않는다.
그래서 결과 값은 모두 false로 떨어진다.

false
false

만일 이전/이후 뿐만 아니라, 같거나 이전, 같거나 이후 이렇게 하려면,
같은지 여부를 반드시 먼저 체크해준 뒤에 이전/이후를 구분하여 처리해야 할 것 같다.

 

이 정도 적었으니, 잊어 버리진 않을 것 같다 ㅎㅎ.

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

넥서스S 자동 업데이트 소스 관련.

기술자료/.NET 2013. 2. 26. 13:08

넥서스(NEXUS) S 순정롬 업데이트 프로그램( http://www.hind.pe.kr/1166 )을 현재 제공하고 있습니다.

이 프로그램의 소스를 공개합니다.

공개 프로젝트는 네이버 개발자 센터에 위치해 있으며 URL은 http://dev.naver.com/projects/nexusupdattor 입니다.

해당 소스는 SVN을 통해 Up/Down이 가능합니다.

(물론 Commit은 저만 되어 있는데, 필요하신 분이 있으면 선택적으로 승인할 예정이니다.)

 

이 프로젝트는 MS Visual Studio 2010 으로 만들어졌습니다. (물론 Visual Studio 2010 Express C# 으로도 조작이 가능합니다. ). SVN 연동을 하기위해서는 AnkhSvn 이라는 프로그램이 설치되어 있으면 좋습니다.

코드 내용은 그렇게 어렵지는 않겠지만, 난독증을 유발한다면, 해당 부분을 캡쳐해서 저에게 전달 해주시면 답변 드리도록 하겠습니다.

image

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

Windows 7 네트워크 위치 프로파일 편집하기.

기술자료/OS 2013. 2. 14. 21:26

Windows 7에서는 기존에 설정된 네트워크와 IP 주소, 게이트웨이, 넷마스크 등의 값을 기반으로, 네트워크가 틀려지면 해당 네트워크에 대한 프로파일을 생성한다.

아마도 아무 의미없이 지나가겠지만, 새로운 네트워크에 접속하면 아래와 같이 선택하는 화면이 뜬다.

image

그래서 집/회사/공공 장소로 나누어 각 보안 설정을 나누어 특정 대역대에 접속하면, 그에 맞게 방화벽이나, 공유 설정등을 할 수 있다. 집은 모든게 열려 있고, 회사는 특정 멀웨어들의 포트들을 막고, 공공장소는 대부분이 막힌 그런 설정을 꾸밀 수 있다.

그런데, 어느날 친구가 안드로이드 폰으로 테터링을 했더니, 너 프로파일이 무척이나 많이 생겼다는 것이였다. 개인적으로는 저 프로파일이 수십개 생겨도 컴퓨터에 별 지장도 없거니와 큰 불편함이 없기에 그냥 쓰라고 종용했다.

그러다, 문득 "왜? 없지" 라는 질문을 스스로에게 던지고, 구글 사마에 물어보니..왠걸.. 있었다.

http://answers.microsoft.com/en-us/windows/forum/windows_7-networking/how-do-i-delete-or-clear-redundant-network/07834191-708d-45f9-9ef2-e779dd930ce3

image

뭐 솰라솰라 읽을 필요는 없고, 간단히 말하지만, 네트워크 프로파일의 아이콘을 클릭한 뒤, 하이퍼 링크로 제공하는 "네트워크 위치 삭제 및 병합"을 하면 되는 작업이다.

해당 메뉴는 다음과 같은 순서로 들어간다.

1. 제어판 열기 ( 시작 메뉴의 제어판을 클릭한다 )

image

2. 네트워크와 인터넷 열기 ( 만일 아이콘 배열을 했으면 3번 항목으로 건너 뛴다)

image

3, 네트워크와 공유센터 열기

image

4. 연결된 네트워크 중 아이콘 아무거나 클릭하기 ( 집, 회사, 벤치 어느거든 상관 없음 )

image

5. 하단의 "네트워크 위치 삭제 또는 병합" 클릭하기 ( 웹의 하이퍼링크 처럼 생긴 부분 )

image

6. 이제 원하는 네트워크를 삭제하거나 병합한다.

image

 

예전에는 이거 안되는 걸로 알고 있었는데 원래 기능이 있었던 것 같다. ( 답변이 2010년인거 보면, Windows 7 발표 후 얼마 안되서 이므로... )

이거 친구에게 안된다고 박박 우겼는데 미안할 따름이다 ;;;;;

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

  • «
  • 1
  • ···
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • ···
  • 157
  • »
250x250

블로그 내에 소스 코드 삽입 이사온 기념 스킨도... RSS 전문 기능 비활성화 관련. 스킨 바꾸어 보았습니다. 서버 파일 정리 좀 했습니다.

«   2026/03   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

Visual Studio Tutorial 오류 지름신 windows 친구 2010 Azure 인터파크 불만 MOSS 2007 WSS me2sms 비스킷 e-book 수 협업 좀 twi2me 것 moss SharePoint 블로그 매뉴얼 java me2dayzm me2photo 개발환경 Google Apps Engine Buscuit

  • Total :
  • Today :
  • Yesterday :

Copyright © 2015-2025 Socialdev. All Rights Reserved.

Copyright © 2015-2025 Socialdev. All Rights Reserved.

티스토리툴바