devflow.kr@:~#

STAX SR-207, SR-507, SRM-252A

MUSIC




정전식헤드폰의 대표인 STAX의 제품. 기나긴 헤드폰 기변에 종착지라하면 역시 정전식이라고 생각한다.


좋은기회에 저렴하게 새 SR-207과, 중고 SRM-252A를 구할 수 있게되어, 정전식 입문을 시작했으며 지금은 SR-507을 구매해 사용중이다.


전용앰프가 필수라는 사항이 유일한 단점일 정도로 정말로 마음에 들었다.


일단 관심이 생겨도 디자인이 심히... 좋지않고, 한국에 공식수입처가 있기는한데, 유난히 높은 가격 정책이고, 일본에서 직구에 성공하더라도 A/S도 힘들고, 일본 내수 베이직 앰프를 제외하고 대부분 별도의 변압 개조를 해야하고(베이직 앰프를 사용해 중상급기에 도란스를 써도 되는진 모르겠다만) ,청음은 힘들기(공식수입처에서는 가능하다던데... 가보진 않았다), 때문에 정말 입문이 까다로운 헤드폰 이다.



아무튼, 투명한 음색, 넓은 해상도, 완벽한 저음, 고음으로 음감에 아주 최적의 헤드폰이다...


STAX의 플래그쉽모델인 SR-009도 구매해볼 생각이 있다.. 아직은 만족하고있어 생각만.. 사실은 가격이 가격인지라 정말 생각만하고있다.









저작자 표시 비영리 동일 조건 변경 허락
신고

Audeze LCD-2

MUSIC



16년 12월부터 17년 3월까지 사용한 LCD-2, Audeze에서 준비한 블랙프라이데이 이벤트로 B-stock(리퍼, 환불 제품)을 $499에 구매할 수 있던 좋은 기회여서 구매하게 됐다.


그런데 Audeze측에서도 생각치 못한 인기로 인해, 사이트가 마비도 됐고, 할인 이벤트 상품 올려놓고 휴가라도 갔는지, 생각 이상의 주문을 받게되었다.

이로인해, Audeze에서 준비한 b-stock 상품을 가뿐히 넘어 Audeze측에서는 새 제품도 어쩔 수 없이 내놓게되었다.

다만 그렇게 출고되는 제품들은, 기존 Rosewood, Bamboo 등 사용자의 반발을 느껴서인지? 아니면 부속품 재고 떨이인지 모르겠지만 다양한 조합으로 구매자에게 무작위로 지급되었다.


무작위로 지급된 상품들은 일단 모두 같은 Fazor 방식의 드라이버(Audeze의 가장 최근의 자력평판형 드라이버)가 적용되었으나, 헤드밴드를 제외한 하우징과 이어패드가 이것저것 짬뽕되었다.


하나하나 페이즈를 따져보자면,


1. B-STOCK 상품 (로즈우드, 밤부 + 람스킨, 검은색 벨루어) 공식적으로 판매하고 있는 조합.

2. 실버 알루미늄(Adorama 특전) + 람스킨 가죽 혹은 벨루어 패드

3. 블랙 알루미늄(LCD-X의 하우징으로 생각된다) + 갈색 벨루어


위와 같이 순차적인 생산으로 예상된다.


다만 Audeze사의 아쉬운 부분이 있는데, 아무래도 작은기업이라 그런지 이 정도의 주문량을 처리하는데 1달 이상이 소요됐으며, 일부 회원들의 결제가 보류되거나 오류가 있다면 해결하지 않고 바로 취소해 다시 주문할 수 없도록 한 것.


하지만 이러한 상황에서도 새 제품 LCD-2를 $499에 세관, 배송비(배송대행), 환율까지 하면 약 67만원 쯤 청구 되었던걸로 기억한다. 이러한 가격에 구매할 수 있다는 것은 엄청난 매리트였다. 앞으로도 없을 가격이다.


또 B-stock 제품에도 불구하고 정식판매품과 같은 A/S를 받을 수 있다. (당연하지만 해외 본사로 보내야한다)




하지만 아쉽게도, 자력평판형의 가장 큰 문제인 무게를 감당을 못해, 중고로 판매해버렸다. 500g을 우습게 보면안된다. 아무리 무게분배가 잘 되었어도 그걸 지탱하는건 착용자의 목이기 때문에 장시간 착용시 압박감을 이길 순 없었다. (Audeze 측에서도 누워서 들으라고! 권장하고있다.)


최적의 음감을 위해선 절대 착용감을 우습게 보지말았으면 한다.

 

 

 

하지만 그런 단점이 있지만 소리하나는 정말 내가 좋아하는 소리이다. 소리가 대체적으로 어둡고 제대로 들려주는 극저음. 음악 장르를 많이 타는것도 아니다. 고음도 제대로 울려주니 말이다.



지금은 판매해서 없지만, 자주 생각나는 헤드폰이다.

 

 

 

청담동에 위치한 S모시기 청음샵에서 Audeze 제품들을 들어볼 수 있으니 꼭 들어보길 바란다. LCD-2는 꼭!

저작자 표시 비영리 동일 조건 변경 허락
신고

Shinhan S Bank / JB Detection Bypass

REVERSING



Shinhan S Bank 5.1.0 5.1.0(2016.07.12) bypass the jailbreak detection

tested on iOS 9.3.3, iPhone SE, Pangu 9.3.3 JB v1.0 (semi-untethered);


Flex 3 Beta.


Target Class : SHBAppInfo

Target Method : callCustomeAlert

just pass-through

NOT TESTED FOR FULLY-FUNCTIONAL.

MAY CAUSE SIDE-EFFECTS.

저작자 표시 비영리 동일 조건 변경 허락
신고

우분투 apt-get 오류

NEWS

W: Unknown Multi-Arch type 'no' for package 'compiz-core'
W: Unknown Multi-Arch type 'no' for package 'compiz-gnome'
W: Unknown Multi-Arch type 'no' for package 'compiz-core'
W: Unknown Multi-Arch type 'no' for package 'compiz-gnome'
W: You may want to run apt-get update to correct these problems


와 같은오류 발생시. apt의 source list가 현재 우분투 버전에 맞지않아 발생하는 오류일 수 있다.


Ubuntu Sources List Generator 를 통해 버전에 맞는 source list를 적용해야한다.

저작자 표시 비영리 동일 조건 변경 허락
신고

Google Proximity Beacons

ANDROID

https://newcircle.com/s/post/1755/2015/08/31/google-proximity-beacons---part-1

https://newcircle.com/s/post/1761/2015/09/11/google-proximity-beacons---part-2

저작자 표시 비영리 동일 조건 변경 허락
신고

Retrofit 한국어 API 문서

ANDROID

크리스마스 기념으로 Retrofit의 API 문서를 번역하였다.

번역 실력이 매우 구져서 걱정이다.


아래 링크에서 볼 수 있다.


http://devflow.github.io/retrofit-kr/

저작자 표시 비영리 동일 조건 변경 허락
신고

[Linux] locale: Cannot set LC_CTYPE to default locale: No such file or directory

WINDOWS

# locale -a


locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory

...


위와같은 문제가 발생시. /etc/locale.gen 에서 주석을 해제한것을 확인하세요.


이 문제는 설정된 locale을 찾을 수 없어 발생합니다.


제 경우에는 "es_US.UTF-8" 를 "/etc/locale.gen"에서 코멘트를 해제 했지만,
정작 코멘트를 해제해야 할것은 "en_US.UTF-8" 였습니다. 이 와같은 실수가 없는지 확인하시고, 아래의 명령어를 실행해 주시면 됩니다.


# locale-gen


(X 세션을 재시작해야 적용될 수 있습니다.)


저작자 표시 비영리 동일 조건 변경 허락
신고

Arch Linux Req. Packages

WINDOWS

for personal memo.



#base
#base-devel

#gnome

#gnome-extra
bijiben
brasero
cheese
file-roller
gedit
gnome-calendar
gnome-color-manager
gnome-documents
gnome-logs
gnome-maps
gnome-music
gnome-photos

gnome-sound-recorder
gnome-tweak-tool
gnome-weather
nautlius-sendto
orca
seahorse

#gstreamer0.10-plugins
*


#xorg-fonts
*

#xorg-drivers
xf86-input-evdev
xf86-input-synaptics
xf86-video-atio
xf86-video-fbdev
xf86-video-vesa

#xorg-apps
*





저작자 표시 비영리 동일 조건 변경 허락
신고

Kakaotalk on Ubuntu Trouble Shooting

WINDOWS

카카오톡(KakaoTalk)을 Ubuntu(Debian)에서 사용시 문제해결



# 자세한 방법(예를들어 gdiplus를 설치하는 방법등)은 검색을 통해 알아보세요.

# 이 포스팅은 절대적인 해결방법이 아닙니다. 사용자 환경에 따라 해결방법이 다를 수 있습니다.

  (저의 해결방법 또한 작동하지 않거나, 나열한 오류가 발생하지 않을 수 있습니다.)

# 해결하시거나 잘못된 정보는 댓글/메일을 통해 제보 부탁드립니다.



 색인 (클릭하면 이동합니다)

  A. 기본

  B. Trouble Shooting

  C. 알려진 오류

  D. 더 나은 방법



A. 기본


1) 테스트/사용 환경 : Ubuntu 15.04 Native / KakaoTalk 2.0.7.935 / Wine 1.7.35 (Windows 7) / PlayOnLinux 4.2.9

2) Wine은 반드시 32bit 환경으로 설정하기. (PlayOnLinux 사용시 동일)

3) Wine의 버전을 변경 후 시도

4) Wine의 Debug기능을 이용 로그 확인

5) 설정 변경할때마다 Wine을 완전히 종료 후 시도.

6) Wine의 Override된 라이브러리목록

  - gdiplus (native)

  - jscript.dll (native, builtin)

  - riched20 (native, builtin)

  - winhttp (builtin, native)

  - wintrust (native)

7) Wine에 설치된 라이브러리 목록

  - 추가예정



B. Trouble Shooting


1) UI

 - gdipuls를 설치

 - winecfg의 Libraries탭의 Existing_voerrides 항목에서 gdiplus를 native로 변경

 - riched20 설치

 - 한글 폰트 설치

 - regedit을 이용하여 기본 폰트를 사용가능한  한글폰트로 변경


2) 알림

 - 알림 기능 끄기

 - wmp10(혹은 wmp9)와 wpcodecs 설치


3) 로그인

 - wine을 reboot.

 - wine을 모두 완전히 종료 후 재실행

 - crypto 설치


4) 네트워크

  - winhttp 설치 (native, builtin)


5) Themida 오류

  - Wine의 Libraries Override를 변경/삭제


6) 한글 입력 버그

  - 입력기를 iBus 대신하여 uim를 사용한다.




C. 알려진 오류(혹은 해결방법이 명확하지 않은 것들.)


1) 채팅 내용을 못불러옴

   - 이전에 잘 작동하였으면, 모든 KakaoTalk.exe를 종료후 wine을 reboot 후 다시시도.


2) 채팅창 깜빡임

   - 채팅창과 카카오톡 메인 윈도우의 포커스 문제로, 최대한 채팅창끼리의 겹치지 않도록 창 배치.

   - 다른 리눅스 창에 포커스를 잡다보면 문제가 없어짐.


3) 사진 & 파일 / 발신 불가 & 손상


4) 사진 & 파일 / 수신 불가 & 손상

 - 데이터 수신에 관해서는 대부분 KakaoTalk 재시작으로 해결



D. 더 나은 방법 (현재 저의 상태)


1) VMWare Player의 Unity Mode로 사용한다. 기존 Wine과 비슷한 환경에서 사용이 가능하다.


장점

 -  Native와 다를바가없는 작동환경. 오류가 없다!

 -  Windows를 Guest OS로 사용하기 때문에, ActiveX나 Windows에서만 사용가능한 기능들을 마음껏 사용할 수 있다.

 -  VMWare의 Unity 기능을 사용하며 마치 리눅스 프로그램인 것처럼 사용가능하다. (Wine과 같음)


단점

  - 별도의 Windows의 설치과정이 필요하다. (물론 정품인증에 대해서도 Native와 똑같은 취급을 받는다.)

  - 리소스의 사용량이 Wine에 비하여 큰 편이다. KakaoTalk의 권장사항을 모르겠지만 Windws 7 Ultimate x86 기준으로 기본 카톡실행 초기시 약 700MB(윈도우 : 400MB)의 램을 사용한다.

    이 또한 메모리가 동적할당이 되지않기때문에 Guest OS의 메모리를 1GB로 잡아버리면 약 1.3GB이상의 메모리가 잡혀버린다. 

    (메모리가 동적할당, 공유가 가능한지는 더 자세한 정보를 검색해볼 예정.)

    (XP를 설치해봐야하나... )

  - 귀찮다. 매번 VMWare 실행하고, GuestOS실행하고, KakaoTalk 실행하고, Unity모드로 변경...

 


How?

   VMWare Player의 Bundle을 다운로드

   가상 머신 생성

   윈도우 설치

   카카오톡 설치

   실행

   Virtual Machine  메뉴의 Enter Unity 항목 선택하여 Unity모드로 변경


 아래와 같이 작동한다.



   



   


저작자 표시 비영리 동일 조건 변경 허락
신고

Add Hangul / Hanja Key - UIM Byeoru(Korean)

WINDOWS


xmodmap -e 'remove mod1 = Alt_R'

xmodmap -e 'keycode 108 = Hangul'

xmodmap -e 'remove control = Control_R'

xmodmap -e 'keycode 105 = Hangul_Hanja'

xmodmap -pke > ~/.Xmodmap


위 명령어들을 터미널에서 실행 후,  uim에서 Byeoru의 On/Off 설정을 다시 추가해준다.



Ref: http://kwonnam.pe.kr/wiki/linux/xmodmap

저작자 표시 비영리 동일 조건 변경 허락
신고

About

NEWS






Name

   devflow


Location

   S.Korea


e-mail

   admin(at)devflow.kr

   regame(at)youdie.net


Github

   https://github.com/devflow



신고

이전안하기로해씀.

NEWS




ㅎ 걍 쓸라캄. 서버 대여는 싸다고해도 돈나가는게 많은거같음. 걍 스킨이나 바꺼야지

저작자 표시 비영리 동일 조건 변경 허락
신고

Picasso를 LinearLayout의 배경 설정으로 사용하기.

ANDROID

Picasso 라이브러리의 핵심기능 중 RequestCreator의 into() 함수에는 Target이라는 인터페이스를 파라미터로하는 함수가있는데, 이를 이용하면 간단하게 해결이 가능하다. Target을 implements하는 클래스로 만들어 주면 된다.


public class PicassoableLinearLayout extends LinearLayout implements Target {
    public PicassoableLinearLayout(Context context) {
        super(context);
    }

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

    public PicassoableLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }


    @SuppressLint("NewApi")
    @Override
    public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom loadedFrom) {

        int sdk = android.os.Build.VERSION.SDK_INT;
        if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
            setBackgroundDrawable(new BitmapDrawable(getResources(), bitmap));
        } else {
            setBackground(new BitmapDrawable(getResources(), bitmap));
        }
    }

    @SuppressLint("NewApi")
    @Override
    public void onBitmapFailed(Drawable drawable) {
        int sdk = android.os.Build.VERSION.SDK_INT;
        if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
            setBackgroundDrawable(drawable);
        } else {
            setBackground(drawable);
        }
    }

    @SuppressLint("NewApi")
    @Override
    public void onPrepareLoad(Drawable drawable) {
        int sdk = android.os.Build.VERSION.SDK_INT;
        if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
            setBackgroundDrawable(drawable);
        } else {
            setBackground(drawable);
        }

    }
}



저작자 표시 비영리 동일 조건 변경 허락
신고

DrawerLayout의 드래그 가능부분(엣지) 변경하기

ANDROID
 public void setDrawerLeftEdgeSize( DrawerLayout drawerLayout, float displayWidthPercentage) {
        try {
            // find ViewDragHelper and set it accessible
            Field leftDraggerField = drawerLayout.getClass().getDeclaredField(
                    "mLeftDragger");
            leftDraggerField.setAccessible(true);
            ViewDragHelper leftDragger = (ViewDragHelper) leftDraggerField
                    .get(drawerLayout);
            // find edgesize and set is accessible
            Field edgeSizeField = leftDragger.getClass().getDeclaredField(
                    "mEdgeSize");
            edgeSizeField.setAccessible(true);
            int edgeSize = edgeSizeField.getInt(leftDragger);

            // set new edgesize
            Point displaySize = new Point();
            getActivity().getWindowManager().getDefaultDisplay()
                    .getSize(displaySize);
            edgeSizeField.setInt(leftDragger,
                    (int) (displaySize.x * displayWidthPercentage));
        } catch (NoSuchFieldException e) {
            // ignore
        } catch (IllegalArgumentException e) {
            // ignore
        } catch (IllegalAccessException e) {
            // ignore
        }
    }

단, 위 소스를 사용할시, 드래그 허용 퍼센트(화면의 X크기)가 DrawerView(드래그해서 튀어나오는 메뉴)의 Width보다 크다면, LongClick과, 드래그에 오묘한 현상이 일어나게 된다. 즉 slideoffest이 1.0f 이상이 나올 수 있다는 점이다. 이 점 생각해 적당하게 설정하기 바람

저작자 표시 비영리 동일 조건 변경 허락
신고

ViewPager의 Fragment 안에 DrawerLayout 사용시 문제.

ANDROID


ViewPager의 Fragment 페이지 안에서 DrawerLayout을 사용할시(ViewPager의 Swap기능은 OFF라고 가정.), 드래그해서 Drawer를 여는 부분에 문제가 생기게 된다.


이유는 ViewPager가 DrawerLayout의 바로 Parent가 되면 발생하는 문제이다. 


이때 DrawerLayout을 Root로 지정하지말아야한다. 간단하게 LinearLayout을 Root로 한 후, 바로 아래에 DrawerLayout이 되는 형태를 사용하여야 한다.



예) ViewPager -> Fragment -> LinearLayout -> DrawerLayout -> Content, DrawerView

저작자 표시 비영리 동일 조건 변경 허락
신고

Android 기기 식별에 대해

ANDROID

Identifying Devices

Suppose you feel that for the needs of your application, you need an actual hardware device identifier. This turns out to be a tricky problem.

In the past, when every Android device was a phone, things were simpler: TelephonyManager.getDeviceId() is required to return (depending on the network technology) the IMEI, MEID, or ESN of the phone, which is unique to that piece of hardware.

However, there are problems with this approach:

  • Non-phones: Wifi-only devices or music players that don’t have telephony hardware just don’t have this kind of unique identifier.

  • Persistence: On devices which do have this, it persists across device data wipes and factory resets. It’s not clear at all if, in this situation, your app should regard this as the same device.

  • Privilege:It requires READ_PHONE_STATE permission, which is irritating if you don’t otherwise use or need telephony.

  • Bugs: We have seen a few instances of production phones for which the implementation is buggy and returns garbage, for example zeros or asterisks.

Mac Address

It may be possible to retrieve a Mac address from a device’s WiFi or Bluetooth hardware. We do not recommend using this as a unique identifier. To start with, not all devices have WiFi. Also, if the WiFi is not turned on, the hardware may not report the Mac address.

Serial Number

Since Android 2.3 (“Gingerbread”) this is available via android.os.Build.SERIAL. Devices without telephony are required to report a unique device ID here; some phones may do so also.

ANDROID_ID

More specifically, Settings.Secure.ANDROID_ID. This is a 64-bit quantity that is generated and stored when the device first boots. It is reset when the device is wiped.

ANDROID_ID seems a good choice for a unique device identifier. There are downsides: First, it is not 100% reliable on releases of Android prior to 2.2 (“Froyo”). Also, there has been at least one widely-observed bug in a popular handset from a major manufacturer, where every instance has the same ANDROID_ID.

Conclusion

For the vast majority of applications, the requirement is to identify a particular installation, not a physical device. Fortunately, doing so is straightforward.

There are many good reasons for avoiding the attempt to identify a particular device. For those who want to try, the best approach is probably the use of ANDROID_ID on anything reasonably modern, with some fallback heuristics for legacy devices.


출저 : http://android-developers.blogspot.kr/2011/03/identifying-app-installations.html

저작자 표시 비영리 동일 조건 변경 허락
신고

Android WebView clearHistory 사용하는 법

ANDROID

WebView에서 History를 지워야할 때 가 있는데 아무곳(필자의 예로써 onBackPressed)에서는 작동을 하지 않습니다. 아니 정확히는 작동을 합니다. 하지만 반드시 WebViewClient의 onPageFinished에 넣어 줘야합니다. 아래는 해당 히스토리를 제거하는 코드입니다.


        webView.setWebViewClient(new WebViewClient(){
            @Override
            public void onPageFinished(WebView view, String url) {
                if(isClearHistory){
                    isClearHistory=false;
                    view.clearHistory();
                }
                super.onPageFinished(view, url);
            }
        });


중략


    private void LoadPage(String url){
        webView.loadUrl(url);
        isClearHistory = true;
        webView.setVisibility(View.VISIBLE);
    }


(참고로 위 코드는 LoadPage가 호출될때마다 히스토리를 클리어하는데 필자의 경우에는 특별한 경우이기 때문에 이런 방법을 사용한 것입니다. 개발자의 입장에 맞춰 수정하길 바랍니다. )

저작자 표시 비영리 동일 조건 변경 허락
신고

PHP(PCRE), JS, PY 정규식 온라인 테스트

PHP



http://regex101.com/


간단하게를 넘어서 확실하게 정규식을 테스트해볼 수 있는 사이트입니다. 각 언어 별 정규식 차이가 있기때문에 선택할 수 있습니다. Explanation에 설명도 있으며 포럼엔 많은 예제들이 있습니다. 또한 Code Generator를 통해 바로 코드로 변환할 수 있습니다. 유용한 사이트이며 이용에 아무런 제약(광고또한) 없습니다.


정말 괜찮은 사이트입니다.

저작자 표시 비영리 동일 조건 변경 허락
신고

Android WebView 텍스트(Input) 입력시 확대/리사이징 문제

ANDROID

WebView에서 ViewPort Metatag를 가지고 있어도. Form이나 기타 TextField(input)을 입력할때 확대가 되는 버그가 발생하는데.


이때 viewport meta tag의 값을 아래와 같이 설정해 주면 TextField가 Focus되도 확대가 되지 않아 정상적으로(Y스크롤만 진행)됩니다.


width=device-width, initial-scale=1.0, user-scalable=no, height=device-height, maximum-scale=1.0, target-densityDpi=device-dpi


참고로 필자는 아래와 같은 WebView 세팅을 설정하였습니다.


        set.setJavaScriptEnabled(true);
        set.setJavaScriptCanOpenWindowsAutomatically(true);
        set.setBuiltInZoomControls(false);
        set.setSupportMultipleWindows(false);
        set.setSupportZoom(false);
        set.setBlockNetworkImage(false);
        set.setLoadsImagesAutomatically(true);
        set.setAllowContentAccess(true);
        set.setUseWideViewPort(false);
        set.setLoadWithOverviewMode(false);
        set.setDomStorageEnabled(true);
        set.setAppCacheEnabled(true);


위에서 굳이 필요한거만 꼽자면, setLoadWithOverviewMode, setUseWideViewPort,setSupportZoom,setBuiltInZoomControls 정도가 되겠습니다.


해당 이슈가 발생하는 이유는 WebView에서 TextField가 포커스를 잡히게되면 Soft Keyboard가 활성화되어 WebView가 Resize되기 때문입니다. 하나의 다른 해결방법으로 Manifest에 android:windowSoftInputMode="adjustPan"를 설정하면 되는데, 필자의 경우에는 Fixed 레이아웃안에 TextField가 포함되어있기 때문에, WebView가 리사이징되지 않으면 Soft Keyboard가 WebView를 가려 더욱 큰 문제가 발생하기 때문에 위와같은 Meta tag를 수정하는 방법을 사용하였습니다.



저작자 표시 비영리 동일 조건 변경 허락
신고

도메인 연장.

NEWS

2015년으로 연장

저작자 표시 비영리 동일 조건 변경 허락
신고

티스토리 툴바