블로그 이미지
흰색앵초

calendar

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

Notice

2017. 3. 31. 16:27 프로그래밍/NodeJS
※ crpyto는 nodejs에 포함되어 있는 모듈이므로 따로 설치하실 필요가 없습니다. 그냥 사용하시면 됩니다


아래와 같이 사용하시면 되겠습니다.

var crypto = require('crypto');

/**
 * hash password with sha512.
 * @function
 * @param {string} password - List of required fields.
 * @param {string} salt - Data to be validated.
 */
var sha512 = function(password, salt){
    var hash = crypto.createHmac('sha512', salt); /** Hashing algorithm sha512 */
    hash.update(password);
    var value = hash.digest('hex');
    return {
        salt:salt,
        passwordHash:value
    };
};



출처 : https://ciphertrick.com/2016/01/18/salt-hash-passwords-using-nodejs-crypto/

posted by 흰색앵초
2014. 12. 16. 16:50 프로그래밍/Java
  public static Object getKeyFromValue(Map hm, Object value) {
    for (Object o : hm.keySet()) {
      if (hm.get(o).equals(value)) {
        return o;
      }
    }
    return null;
  }

출처 : http://www.java2s.com/Code/Java/Collections-Data-Structure/GetakeyfromvaluewithanHashMap.htm


posted by 흰색앵초
2014. 10. 21. 14:13 프로그래밍/Android


ImageView에 Flip 애니메이션을 주고 싶으면 아래와 같이 하시면 됩니다.


import android.animation.ObjectAnimator;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity {

	ImageView iv1;
	Button btn1;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		btn1 = (Button) findViewById(R.id.button1);
		iv1 = (ImageView) findViewById(R.id.imageView1);
		
		btn1.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				ObjectAnimator animator = ObjectAnimator.ofFloat(iv1, "rotationY", 0, 720); 
				animator.setDuration(2000);  
				animator.start();
			}
		});
		
	}
}

ObjectAnimator animator = ObjectAnimator.ofFloat(iv1, "rotationY", 0, 720);
이부분이 중요한데 순서대로 

iv1 << 애니메이션을 줄 이미지뷰를 넣으시고
"rotationX" << 줄효과 rotationY를 하면 Y축으로 rotationX를 하면 X축으로 회전하게 됩니다.
0 << 시작할 각도
720 << 애니메이션이 종료될 시점의 각도

를 넣으셔서 처리하시면 됩니다.

회전축을 정하고 싶으시면 imageView에 .setPivotX .setPivotY로 미리 지정해두면됩니다.

posted by 흰색앵초
2014. 10. 17. 11:50 프로그래밍/Android

이번 포스팅에서는 이미지를 Bitmap으로 만든 후 테두리를 라운드처리하는 방법을 알아보겠습니다.
소스를 보시면....


import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.BitmapFactory;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class MainActivity extends Activity {

	LinearLayout linearLayout1;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		linearLayout1 = (LinearLayout) findViewById(R.id.LinearLayout1);
		
		ImageView iv1 = new ImageView(getApplicationContext());
		
		Bitmap bm1 = BitmapFactory.decodeResource(getResources(), R.drawable.img1);
		Bitmap bm2 = getRoundedCornerBitmap(bm1);

		iv1.setImageBitmap(bm2);
		linearLayout1.addView(iv1);
		
	}
	
	public static Bitmap getRoundedCornerBitmap(Bitmap bitmap) {
	    Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
	        bitmap.getHeight(), Config.ARGB_8888);
	    Canvas canvas = new Canvas(output);
	 
	    final int color = 0xff424242;
	    final Paint paint = new Paint();
	    final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
	    final RectF rectF = new RectF(rect);
	    final float roundPx = 50; // 테두리 곡률 설정
	 
	    paint.setAntiAlias(true);
	    canvas.drawARGB(0, 0, 0, 0);
	    paint.setColor(color);
	    canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
	 
	    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
	    canvas.drawBitmap(bitmap, rect, rect, paint);
	 
	    return output;
	  }
	
	
}

소스는 BitmapFactory를 이용해서 이미지를 Bitmap화 한다음 아래의 getRoundedCornerBitmap을 이용해서 테두리를 라운딩 처리해주는 방식으로 처리되어있습니다. 라운드 처리한 Bitmap을 다시 ImageView에 적용해서 레이아웃에 추가해 보여주는 식의 간단한 예제입니다. 혹시나 필요하신 분이 있으면 도움이 되셨기를 바랍니다. 슝~

참조 : Rounded corner bitmaps on Android

비슷한 포스팅 : ImgaeView 테두리 라운드처리

posted by 흰색앵초
2014. 10. 10. 15:34 프로그래밍/Android

안드로이드에서 간혹 ImageView나 혹은 다른 View의 너비나 높이를 구해야할 때가 있습니다. 그렇지만 가끔 값이 제대로 리턴되지 않고 0으로 반환되는 경우가 있는데 이는 뷰가 완전히 그려지기 전에 값이 리턴되기 때문입니다. 해결책은 아래와 같습니다.


frameLayout1.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
	public void onGlobalLayout() { 
		//뷰가 불러지고 나서 처리할 코드 입력
		Toast.makeText(getApplicationContext(), ""+imageView1.getWidth(), Toast.LENGTH_LONG).show();
		frameLayout1.getViewTreeObserver().removeGlobalOnLayoutListener(this); //  젤리빈 미만에서 사용
		// frameLayout1.getViewTreeObserver().removeOnGlobalLayoutListener(this); 젤리빈 이상에서 사용
	}

위와 같이 특정뷰가 다 그려졌는지 체크한 뒤에 원하시는 코드를 입력하셔서 컨트롤 하신 뒤에 해당 리스너를 삭제처리해서 사용하시면 됩니다.


posted by 흰색앵초
2014. 10. 9. 16:07 프로그래밍/Android

웹상에서 이미지의 우선순위를 조정할 때는 z-index를 사용하면 됩니다만, 안드로이드에는 아쉽게도 z-index가 없습니다. 그래서 아쉬운데로 컨트롤하기 위해서는 아래와같은 방법으로 컨트롤해주면 됩니다.


imgView1.bringToFront();


위와같이 .bringToFront()를 사용하면 메소드를 사용한 이미지뷰에 가장 우선순위를 줘 맨위에 보이도록 컨트롤이 가능합니다.


posted by 흰색앵초
2014. 10. 5. 16:50 프로그래밍/Android

ImageView(이미지뷰)의 테두리에 라운드를 주고 싶을땐 아래와 같이 처리하면됩니다.

먼저 ImageView를 상속받아 아래와 같이 재정의 하는 Java 클래스를 만들어줍니다.

※ RadiusImageView.java 


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Path;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.widget.ImageView;

public class RadiusImageView extends ImageView {

// 라운드처리 강도 값을 크게하면 라운드 범위가 커짐
    public static float radius = 18.0f;  

    public RadiusImageView(Context context) {
        super(context);
    }

    public RadiusImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public RadiusImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        Path clipPath = new Path();
        RectF rect = new RectF(0, 0, this.getWidth(), this.getHeight());
        clipPath.addRoundRect(rect, radius, radius, Path.Direction.CW);
        canvas.clipPath(clipPath);
        super.onDraw(canvas);
    }
}


※ 레이아웃 xml 파일 (ex:activity_main.xml)

    <com.example.image_crop2.RadiusImageView

        android:id="@+id/iv1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignParentTop="true"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="48dp"

        android:src="@drawable/img5" />


위의 xml값을 보시면 패키지명.RadiusImageView로 선언해서 ImageView와 같은 방식으로 쓰시면됩니다.


※ 프로그래밍에서 참조해서 컨트롤을 하시려면...


public class MainActivity extends Activity {

	RadiusImageView iv1;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        iv1 = (RadiusImageView) findViewById(R.id.iv1);
        
    }
}

위와 같이 RadiusImageView로 참조해서 사용하시면 됩니다.

출처 : http://stackoverflow.com/questions/18229358/bitmap-in-imageview-with-rounded-corners

비슷한 포스팅 : Bitmap 테두리 라운드처리하기

posted by 흰색앵초
2014. 10. 5. 12:09 프로그래밍/Android

가끔 이미지를 특정부분만 크롭한다거나 반절로 잘라서 처리해야하는 경우가 있습니다. 그럴땐 아래와 같이 처리하면 됩니다.

※ 아래의 소스는 좌우로 반절로 자르는 예제소스입니다.

//Bitmap.createBitmap( Bitmap source, int x, int y, int width, int height )

Bitmap ori_img = BitmapFactory.decodeResource(getResources(), R.drawable.img4);
Bitmap bm1 = Bitmap.createBitmap(ori_img, 0, 0, ori_img.getWidth()/2, ori_img.getHeight());
Bitmap bm2 = Bitmap.createBitmap(ori_img, ori_img.getWidth()/2, 0, ori_img.getWidth()/2, ori_img.getHeight());

ImageView img1 = new ImageView(getApplicationContext());
img1.setLayoutParams(new LayoutParams(100, 100));
img1.setImageBitmap(bm1);
        
ImageView img2 = new ImageView(getApplicationContext());
img2.setImageBitmap(bm2);

소스를 보시면...

1. BitmapFactory를 사용해서 불러주시고(위의 예제소스는 res폴더의 리소스를 사용한 경우이고 파일을 부르시고 싶으시면 decodeFile을 이용해주시면 됩니다.)

2. Bitmap.createBitmap을 이용해서 원하는 대로 잘라주시면 됩니다. 순서대로 
(편집할 비트맵을 쓰시고 자르기 시작할 x좌표, y좌표, 좌표로부터의 너비, 좌표로부터의 높이)
를 입력해서 사용하시면 됩니다.

3. .setLayoutParams를 이용하여 자른 이미지의 크기를 지정합니다.

4. 그다음 이미지뷰에 .setImageBitmap을 사용하셔서 활용하시면 됩니다.



posted by 흰색앵초
2014. 9. 29. 19:39 프로그래밍/Android
가끔 액티비티가 아닌 다른 클래스에서 액티비티를 컨트롤 하고 싶을 때가 있습니다. 그럴땐 아래와 같은식으로 처리해주시면 됩니다.

MainActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

	Button button1, button2;
	TextView textView1;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		button1 = (Button) findViewById(R.id.button1);
		button2 = (Button) findViewById(R.id.button2);
		textView1 = (TextView) findViewById(R.id.textView1);
		
		ClickAdapter clickAdapter = new ClickAdapter(this);
		
		button1.setOnClickListener(clickAdapter);
		button2.setOnClickListener(clickAdapter);
		
	}

}

위와 같이 다른 클래스로 Context를 넘기시면 되구요.

ClickAdapter.java
import android.content.Context;
import android.view.View;

public class ClickAdapter implements View.OnClickListener{
	
	Context mContext;
	
	public ClickAdapter(Context context){
		mContext = context;
	}
	
	@Override
	public void onClick(View v) {
		switch(v.getId()){
		
		case R.id.button1:
			this.showText();
			break;
		
		case R.id.button2:
			this.hideText();
			break;
		}
		
	}

	private void hideText() {
		((MainActivity) mContext).textView1.setVisibility(View.INVISIBLE);
	}

	private void showText() {
		((MainActivity) mContext).textView1.setVisibility(View.VISIBLE);
		
	}

}

액티비티를 컨트롤하는 클래스에서 생성자에서 Context를 받은 뒤 위의 코드와 같이 처리해주시면 됩니다. 혹시나 궁금하신 분이 있을까 해서 정리겸 올립니다.

posted by 흰색앵초
2013. 8. 27. 15:34 프로그래밍/기타등등

ssh로 코딩이나 작업을 하다 보면 파일업로드가 필요할 때가 있습니다.

그런 상황이면 거의 대부분 FTP 클라이언트를 열어서 업로드 해야하는 귀찮음을 감내해야합니다만...

xshell에선 드래그앤 드랍으로 처리할 수 있습니다.

간단하게 패키지를 하나 설치하면 됩니다.

apt-get install lrzsz

설치 한 후에는 ssh창에 업로드할 파일을 드래그 앤 드랍하면 끝.

혹시나 모르시는 분들을 위한 팁!

posted by 흰색앵초
prev 1 2 3 4 next