블로그 이미지
흰색앵초

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 흰색앵초
2015. 3. 2. 12:04 Ubuntu

ubuntu에서 apt를 이용해서 docker를 설치하게 되면 굉장히 구버전이 깔리게됩니다. 최신버전을 깔기 위해서는 아래와같이 하시면됩니다.


# apt-get update
# apt-get install apt-transport-https
# sh -c "echo deb https://get.docker.com/ubuntu docker main\ > /etc/apt/sources.list.d/docker.list"
# sudo apt-get update
# sudo apt-get install lxc-docker

위와 같이 실행하면 설치는 됩니다만 실행이 안됩니다. 이는 docker가 /usr/local/bin에 심볼릭 링크가 걸려있지 않기 때문인데 아래와같이 처리합니다.

# ln -sf /usr/bin/docker /usr/local/bin/docker

이제 docker라고 쳐보시면 실행이 됩니다. 끝-

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. 8. 21:01 Ubuntu

이번 포스트에서는 VMWare Player로 Ubuntu를 설치하는 방법을 알아보겠습니다.

먼저 아래의 주소를 이용하셔서 VMWare Player를 다운로드 받아주세요.

다운받으러 가기

※ VMWare Player는 비상업적인 용도로만 사용하도록 되어있는 프리웨어입니다.


다운로드 받으신 뒤 설치하시고 실행하시면 아래와 같은 화면이 나오게됩니다.


이제 가상머신을 만들면 되지만 우분투 이미지가 없으니까 받으러 갑시다.

보통은 우분투 공식홈페이지에서 받으면 되지만 속도가 굉장히 느립니다. 그래서 우리는 Daum 미러서버에서 다운을 받아보죠.

다음 우분투 다운로드 페이지 / 귀찮으니 14.04.1 LTS버전 바로 받기
※ 위의 14.04.1은 포스팅 작성시 최신버전이며 추후에 구버전이 되면 최신 LTS버전을 받아주세요.

위의 주소로 접속하시면 여러가지 우분투 이미지가 있는데 본 포스트에서는 14.04.1 Server를 까는 것을 전제로 합니다. 여기서 LTS란 Long Term Support의 약자로 릴리즈 후 3년간 지원해주는 버전을 말합니다. 

다운로드를 받으신 뒤에는 다시 VMWare Player를 실행하셔서...

1. Create a New Virtual Machine을 클릭.

2. 클릭 한 뒤로 위의 스크린샷과 같은 화면이 뜨면 Installer dis image file(iso)를 눌러주세요.

3. 다운로드 받으신 iso파일을 선택하신 다음에 Next.

4. 순서대로 이름, 아이디, 패스워드, 패스워드(재입력)을 입력해주세요.

5. 각종 셋팅값을 선택하시는 창들이 나오는데 모르시겠으면 Next~ Next~ .... Finish!

6. 자동으로 설치를 시작하게 됩니다. 인내심을 가지고 설치창을 구경해줍니다.


7. 기다리고 나면 위와같은 화면이 나오는데 가상머신을 만들때 입력하셨던 아이디와 패스워드를 입력하시면 로그인이 완료됩니다.

엄청 간단한 부분이지만 혹시나 모르실 분이 있을까봐 포스팅합니다. 한분이라도 도움이 되시길 바랍니다 (..

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 흰색앵초