'Twitter > Mixero' 카테고리의 다른 글
[Mixero] 사용자 필터기능 (0) | 2010.08.02 |
---|
[Mixero] 사용자 필터기능 (0) | 2010.08.02 |
---|
트위터(http://twitter.com, http://twtkr.com은 드림위즈에서 만든 한국트위터 이용자용 페이지입니다.)는 트위터 사용자들을 follow하면서, 그들이 쓰는 140자 이내의 글들을 구독하는 것이 기본적인 기능입니다.
대체로 아는 사람보다는 모르는 사람들이 나를 follow하게 되어, 나도 그들을 follow하게 됩니다. 맞팔이라 부르지요. 그러다보니, 며칠 동안 타임라인(제가 follow한 사람들이 쓴 글과 내가 쓴 글이 나열되는 목록)을 지켜보다보면 좀 괴로운 타입들의 사람들이 있습니다. 인터넷 악플러들보다야 훨씬 괜찮지만,,,
제가 싫어하는 타입은,
"논리가 아니라, 짧은 지식, 선입견/편견과 자신의 감정에 휘말려서, 말도 안되는 이야기를 떠드는 사람들"
"매사에 이유없이 불평 불만이 많은 사람들"
"중요하지도 않은 내용인데 RT(retweet, 자기 팔로워들에게 모두 보여주기)를 남발하는 사람들" -> 멘션(mention)은 글쓴이와 받는 사람이 보기 위한 것인데, 그 글 앞에 RT 키워드를 달면, 널리 배포하게 되는 것이지요.
입니다.
트위터에서는 unfollow(내가 상대의 글을 안봄)하거나 block(아예, 상대가 내 글 자체도 못보도록 막음)하는 것이 일반적입니다. 그러나, 상대방이 알아차리게 되고, 보복차원의 unfollow와 block을 당하게 됩니다.
그런데, 뭐 굳이 unfollow와 block을 하고 싶지 않고, 그냥 트윗(글)들을 보고 싶지 않은 경우가 있지요.
Mixero는 이러한 목적, 즉 unfollow하지 않고도 보고 싶지 않은 사람들을 필터링할 수 있는 기능을 제공하는 트위터 프로그램입니다. PC/맥/iPhone용으로 제공됩니다.
Mixero의 홈페이지 설명에 의하면, Negative Filtering이라고 표현하더군요. 보통, 트위터 프로그램들은 해쉬태그(#로 시작하는 문자열)를 필터링해서 보는데 이것은 Positive Filtering인 것인데, 보고 싶지 않은 것들을 필터링하므로 Negative라고 부르는 것입니다.
[PC프로그램에서 필터링하는 예]
아래의 그림과 같습니다. 키워드에 사용자 아이디를 적어넣으면, 다른 사람이 그 사용자의 글을 RT해도 필터링이 되는 장점이 있습니다. 제가 팔로우하는 사람들 100여명 중 3~4명을 필터링하였습니다.
[Mixero] 다운 및 설치 (0) | 2010.08.02 |
---|
[Java] HashTable 의 정의 및 사용 (1) | 2011.01.27 |
---|---|
[Java] 디자인 패턴 (1) | 2011.01.27 |
[Java] Object와 byte[]사이의 상호변환 (4) | 2010.07.29 |
[Java] 프로젝트 Import와 Export 하기 (0) | 2010.07.26 |
[Java] JAVA 프로그래밍 관련 추천사이트 목록 (0) | 2010.07.24 |
MemoryStream
Saving-Rebuilding InkCanvas Strokes
Load/Unload images into/from DB table
C# Image to Byte Array and Byte Array to Image Converter Class
Recently I was looking for a class which could convert a System.Drawing.Image
to byte[]
array and vice versa. After a lot of searching on Google, I realised that it would be faster for me to write this class and also share it with the community.
The class which I wrote is called ImageConverter.cs. The class has two methods.
First method: Convert Image
to byte[]
array:
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
This method uses the System.Drawing.Image.Save
method to save the image to a memorystream
. The memorystream
can then be used to return a byte array using the ToArray()
method in the MemoryStream
class.
Second method: Convert byte[]
array to Image
:
public Image byteArrayToImage(byte[] byteArrayIn)
{
MemoryStream ms = new MemoryStream(byteArrayIn);
Image returnImage = Image.FromStream(ms);
return returnImage;
}
This method uses the Image.FromStream
method in the Image
class to create a method from a memorystream
which has been created using a byte
array. The image thus created is returned in this method.
The way I happen to use this method was to transport an image to a web service, by converting it to a byte array and vice-versa.
Hope this class is useful to the community as well. The code of ImageConverter.cs can be downloaded from the link at the top of this article.
Rajan Tawate
Founder
--------------
...
byte[] content = ReadBitmap2ByteArray(fileName);
StoreBlob2DataBase(content);
...
protected static byte[] ReadBitmap2ByteArray(string fileName)
{
using(Bitmap image = new Bitmap(fileName))
{
MemoryStream stream = new MemoryStream();
image.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
return stream.ToArray();
}
}
protected static void StoreBlob2DataBase(byte[] content)
{
SqlConnection con = Connection;
con.Open();
try
{
// insert new entry into table
SqlCommand insert = new SqlCommand(
"insert into Images ([stream]) values (@image)",con);
SqlParameter imageParameter =
insert.Parameters.Add("@image", SqlDbType.Binary);
imageParameter.Value = content;
imageParameter.Size = content.Length;
insert.ExecuteNonQuery();
}
finally
{
con.Close();
}
}
Some of us use OLEDB provider to communicate with SQL Server. In this case you should use the code below to store images into your DB. Pay attention to using '?
' instead of '@image
' in the SQL query.
protected static void StoreBlob2DataBaseOleDb(byte[] content)
{
try
{
using(OleDbConnection con = Connection)
{
con.Open();
// insert new entry into table
using(OleDbCommand insert = new OleDbCommand(
"insert into Images ([stream]) values (?)",con))
{
OleDbParameter imageParameter =
insert.Parameters.Add("@image", OleDbType.Binary);
imageParameter.Value = content;
imageParameter.Size = content.Length;
insert.ExecuteNonQuery();
}
}
}
catch(Exception ex)
{
// some exception processing
}
}
// get image
DataRowView drv = (DataRowView) _cm.Current;
byte[] content = (byte[])drv["stream"];
MemoryStream stream = new MemoryStream(content);
Bitmap image = new Bitmap(stream);
ShowImageForm f = new ShowImageForm();
f._viewer.Image = image;
f.ShowDialog(this);
You can use this technique to work with any type of binary data without using storage procedures. Good Luck.
<FORM style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px" id=aspnetForm method=post name=aspnetForm action=DisplayArticle.aspx>
This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.
A list of licenses authors might use can be found here
</FORM>
--------------------------
byte[] content = ReadBitmap2ByteArray(fileName);
StoreBlob2DataBase(content);
...
protected static byte[] ReadBitmap2ByteArray(string fileName)
{
using(Bitmap image = new Bitmap(fileName))
{
MemoryStream stream = new MemoryStream();
image.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
return stream.ToArray();
}
}
protected static void StoreBlob2DataBase(byte[] content)
{
SqlConnection con = Connection;
con.Open();
try
{
// insert new entry into table
SqlCommand insert = new SqlCommand(
"insert into Images ([stream]) values (@image)",con);
SqlParameter imageParameter =
insert.Parameters.Add("@image", SqlDbType.Binary);
imageParameter.Value = content;
imageParameter.Size = content.Length;
insert.ExecuteNonQuery();
}
finally
{
con.Close();
}
}
[C#] Windows 해상도 가져오기 (0) | 2010.11.16 |
---|---|
[C#] 마우스 좌표얻기 (1) | 2010.11.03 |
[C#] Image Scale 함수, 이미지의 크기를 퍼센트, 특정Size 별로 조정하기 (0) | 2010.11.01 |
[C#] form 이벤트 발생순서 (0) | 2010.10.22 |
[C#] C#에서 ConnectionString 작성법! (0) | 2010.09.17 |
와우 방문자 1만찍었...ㄷㄷㄷ (3) | 2010.11.19 |
---|---|
토탈 5000 뿌 ㅎㅎㅎ (0) | 2010.10.02 |
Total 1004 기념~~ (0) | 2010.08.18 |
정보처리산업기사 실기 합격 (0) | 2010.08.13 |
Total 500돌파! 아침부터 비쫄딱?! (0) | 2010.08.10 |
위치기반 서비스를 구현하기 위해서는 스마트폰 기기내의 GPS, 가속도 센서 등을 이용하여 현재위치정보를 얻습니다.
안드로이드에서는 Google Maps API (구글맵스API)와 안드로이드 위치 기반 관련 라이브러리(android.location.Library)를 이용합니다!
com.google.android.maps Package
Google Maps Service에 접근하는 인터페이스를 제공하는 패키지로써 주요 클래스는 맵을 표시하는 MapView 클래스와 MapView를 Activity를 관리하는 MapActivity 클래스 등으로 구성되어 있습니다.
android.location Package
GPS나 무선랜 등의 정보를 이용하여 휴대전화의 현재 위치 정보(위도,경도)를 얻기 위한 기능을 제공하는 패키지로써 시스템의 위치 서비스(Location Service)의 접근을 제공하는 LocationManager 클래스, 위치정보와 주소정보를 변환하는 Geocoder 클래스, GPS엔진 상태를 표현하는 GpsStatus 클래스 등으로 구성되어 있습니다.
|
Google Maps (구글맵스) API Key 발급 받기 :-)
Google Maps API 데이터를 받으려면 API Key를 발급받아야합니다. (무료)
1) SDK 디버그 서명증명서의 MD5 핑거프린터 확인하기
먼저 미리 설치해두신 JDK가 설치된 폴더의 bin폴더에 있는 Keytool를 이용해야합니다.
확인해주세용~
Keytool를 손쉽게 이용하기 위해서는 path가 등록되어야합니다.
내컴퓨터-속성-고급탭-환경변수-시스템변수의 path 항목에 JDK의 bin폴더가 지정되어있지 않으면, 지정해주세요!
지정이 되었으면 이제 keytool을 이용하여 MD5 핑거프린터를 확인해야합니다.
CMD창에서 다음과 같이 입력해주세요'-'
keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android
MD5의 핑거프린터를 확인하셨으면, 복사해서 보관해주세요~
2) Google에서 API Key발급받기
http://code.google.com/android/maps-api-signup.html 로 가셔서
MD5 핑거프린트를 [My certificate's MD5 fingerprint] 란에입력하시고 구글계정으로 들어가면 API Key를 발급받을수 있습니다.
<결과 >
제꺼는 왜 깨져서 나왔는지 -_ㅜ
암튼, 처음에 있는게 사용자 키 API Key입니다!
3) 안드로이드에서 Google Maps API를 사용하기
AndroidManifest.xml
Application에서 com.google.android.maps라이브러리 추가!
Permission에서 인터넷 추가!!
main.xml
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" //클릭(터치)으로 맵 이동 가능
android:apiKey="자신이 발급받은 apikey 입력"
/> |
HelloMaps.java (메인 엑티비티 )
package babyjaycee.blog.me;
|
<결과>
[출처] [안드로이드/android] 안드로이드에서 구글맵스API 사용하기|작성자 아잉
[Android] IP관련 정보 (Connection Refuse Error) (3) | 2010.08.02 |
---|---|
[Android] Http를 이용한 Post방식 데이터 전송 (1) | 2010.08.02 |
[Android] 이미지 개념 (Canvas,Bitmap,Drawable) (6) | 2010.07.29 |
[Android] layout_width, layout_height 코드에서 변경하기 (LayoutParams) (0) | 2010.07.28 |
[Android] 차트 관련 (chart) (1) | 2010.07.28 |
이미지에 관련된 전반적인 사항이니 참고하세요.
1. 기본적으로 resource에 저장되어 있는 이미지의 경우 Drawable이라는 오브젝트를 구해와서 화면에 그릴 수가 있습니다.
Drawable drawable = getResources().getDrawable(id);
drawable.setBounds(0,0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); // drawable을 어느 영역에 그릴 것인가?
onDraw(canvas canvas) {
drawable.draw(canvas);
}
setBounds에 설정한 값에 따라서 자동으로 이미지가 scaling이 됩니다.
원본 이미지 사이즈가 100*50인데 bounds를 (0,0, 200, 100)이라고 설정하면 가로 세로가 2배로 확대되어서 그려지겠죠.
2. 임의의 bitmap을 생성하고 bitmap에 원하는 내용그리기
다음과 같이 임의의 bitmap을 생성합니다.
Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
Config.ARGB_8888말고 Config.RGB_565도 있고 몇가지 있습니다.
원하는 걸로 생성하면 되는데 ARGB8888로 생성할 경우 투명값을 지정할 수가 있는 반면 RGB_565로 생성하시면 불투명한 이미지만 가능합니다.
이렇게 만들어진 bitmap에 직접 그림을 그리거나 다른 이미지를 그릴려고 하면 아래와 같이 새로운 canvas를 만들어야 합니다.
Canvas canvas = new Canvas();
canvas.setBitmap(bitmap);
그러면 향후에 canvas에 그리는 모든 작업은 bitmap에 반영이 됩니다.
3. Bitmap과 Drawable간의 변환
안드로이드에서는 bitmap을 직접 다루기보단 대부분 Drawable이라는 wrapping된 형태로 이미지를 처리하기 때문에
Bitmap의 경우 종종 Drawable로 변환해야 하는 경우가 있습니다.
이를 위해서 BitmapDrawable이라는 클래스가 존재하고 아래와 같은 식으로 사용이 가능합니다.
Drawable drawable = (Drawable)(new BitmapDrawable(bitmap));
BitmapDrawable은 Drawable로 캐스팅이 가능하죠.
4. canvas 처리
w*h크기의 drawable 오브젝트가 있을 때 setBounds를 이용하여 임의의 좌표(x,y)에 원형크기대로 출력할려면 아래와 같습니다.
obj.setBounds(x,y,x+w,y+h);
obj.draw(canvas);
이 방식의 귀찮은 점은 항상 w,h를 지정을 해줘야 하기 때문에 코드도 상당히 길어지고 지저분해보이는 경우가 많습니다.
(getIntrinsicWidth()/Height()로 항상 구하던지 별도의 변수에 값을 유지해야하죠)
그래서 위와 같은 방법보다는 아래와 같이 canvas의 좌표이동 변환식을 이용하는게 깔끔합니다.
obj.setBounds(0,0,w,h); // 얘는 drawable을 최초로 생성했을 때 한번만 지정하면 됨
canvas.save(); // 현재 변환식을 저장
canvas.translate(x,y) // 좌표이동과 관련된 변환식 적용
…
obj.draw(canvas); // drawable을 그린다.
…
canvas.restore(); // 원래 변환식으로 복구
canvas.translate(x,y) 를 지정할 경우 출력할 이미지를 (x,y)만큼 이동시켜서 그려줍니다. (좌표이동 행렬식이라고 생각하면 됨)
[Android] Http를 이용한 Post방식 데이터 전송 (1) | 2010.08.02 |
---|---|
[Android] 구글맵 API Key 받아서 구글맵사용하기 (0) | 2010.07.30 |
[Android] layout_width, layout_height 코드에서 변경하기 (LayoutParams) (0) | 2010.07.28 |
[Android] 차트 관련 (chart) (1) | 2010.07.28 |
[Android] 컨텐트 프로바이더(Content Provider) (0) | 2010.07.27 |
Object 에서 byte[]
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(bos);
out.writeObject(yourObject);
byte[] yourBytes = bos.toByteArray();
byte[]에서 Object
ByteArrayIntputSream bis = new ByteArrayInputStream(yourBytes);
ObjectInput in = new ObjectInputStream(bis);
Object o = in.readObject();
[Java] 디자인 패턴 (1) | 2011.01.27 |
---|---|
[Java] multipart/form-data 타입을 이용한 파일 전송지원 클래스 작성 (3) | 2010.07.30 |
[Java] 프로젝트 Import와 Export 하기 (0) | 2010.07.26 |
[Java] JAVA 프로그래밍 관련 추천사이트 목록 (0) | 2010.07.24 |
[JAVA] 열거타입 ( enum ) (0) | 2010.07.24 |
[Android] 구글맵 API Key 받아서 구글맵사용하기 (0) | 2010.07.30 |
---|---|
[Android] 이미지 개념 (Canvas,Bitmap,Drawable) (6) | 2010.07.29 |
[Android] 차트 관련 (chart) (1) | 2010.07.28 |
[Android] 컨텐트 프로바이더(Content Provider) (0) | 2010.07.27 |
[Android] 버젼별 이름의 특징? 작명의 비밀! (1) | 2010.07.27 |
상용
aiCharts
http://www.artfulbits.com/Android/aiCharts.aspx
상용 차트입니다.
갤러리 - http://www.artfulbits.com/Android/gallery/galleryCharts.aspx
우크라이나 회사 같습니다. 미국에서도 영업합니다.
온라인 결재 299달러 시작
오픈소스
achartengine
http://code.google.com/p/achartengine/
현재도 계속 개발중입니다.
종류
line chart
area chart
scatter chart
time chart
bar chart
pie chart
bubble chart
doughnut chart
chartdroid
http://code.google.com/p/chartdroid/
현재도 계속 개발중입니다.
androidchart
http://code.google.com/p/androidchart/
주식형 차트인데 2008년 이후로 업데이트 되지 않습니다.
http://shaffah.com/droid-analytic-google-analytics-for-android
이런 비슷한 오픈 소스 프로그램이 있나 해서 찾다가 본건데
개발자가 아니어서 사용성까지는 잘 모르겠습니다.
[Android] 이미지 개념 (Canvas,Bitmap,Drawable) (6) | 2010.07.29 |
---|---|
[Android] layout_width, layout_height 코드에서 변경하기 (LayoutParams) (0) | 2010.07.28 |
[Android] 컨텐트 프로바이더(Content Provider) (0) | 2010.07.27 |
[Android] 버젼별 이름의 특징? 작명의 비밀! (1) | 2010.07.27 |
[Android] EditText에서 키보드의 특정 키 입력을 막기 (0) | 2010.07.27 |