JooStory.net

아이핀 유감

아이핀을 별로 쓰고 싶지 않지만 강제화된 서비스 안 쓰기 힘들더군요. 아프리카 TV를 자주 보는데 19금 방송을 보려면 아이핀을 반드시 사용해야 합니다. 아! 19금 이라는게 야한건 아니고 마녀사냥 정도입니다. 혹은 담배를 핀다거나 술을 마신다거나 하는 방송이죠.

아이핀을 자주 사용하지 않으니 비밀번호를 잊어버리는데 찾는 방법이 여간 귀찮은게 아닙니다. 아이핀 자체가 접근성이 그리 좋지도 않고, 편하지도 않아서죠. 그래서 왠만하면 19금 방송을 안봅니다. 아이핀 로그인 하기 귀찮아서…

오늘도 마녀사냥을 보기 위해서 아프리카TV를 보기 시작했는데 아이핀에 로그인 하라더라구요. 귀찮아도 꼭 봐야겠어서 로그인을 시도했습니다. 그런데 로그인이 안되는 겁니다. 마이핀인지 뭔지 나와서 추가인증을 하라더군요. (부글부글) ‘그래! 추가 인증하자!’ 하고 핸드폰을 가져와서 인증번호를 받으려는데 이런게 나왔습니다.

잘못 입력한 줄 알고 몇번이나 입력했지만 여전히 안됩니다. 어쩌나 하고 망연자실 하다가 방법을 찾아보자 하고 jtbc 홈페이지에 갔습니다. 그랬더니 떡하니 on-air를 제공하는겁니다. 아무 인증도 없이! 심지어 이거 유투브 라이브입니다.

일단 아이핀 서비스의 사용성이 나쁘고 사용이 잘 안되는 것도 문제지만 전 이런게 더 문제라고 생각합니다. 바로 국내 서비스에는 반드시 적용되어야 하지만 이런 외국 서비스에서는 적용 안되는 이런 허술함.

중국처럼 아예 막고 국내 서비스를 지켜주던지 국내 서비스에만 이런 제약이 마구마구 가해지고 외국 서비스는 훌쩍 피해가버리고 이러면 안되는거 아닌가요? 정말 아이핀, 마이핀 모두 유감입니다. 저는 이제 사용할 수도 없겠지만.

요즘 카카오 스토리를 슬며시 써보는 중인데 생각보다 친구들이 많이 써서 반응도 바로바로 오고 페이스북 같은 느낌도 들고 좋습니다. 다만 공유하기가 번거로운 느낌이 있어서 좋아요 버튼 비슷한 걸 만들어볼까 생각 중인데 일단 샘플을 써서 가능한 걸 확인은 해보았고 login, request, setAccessToken, getAccessToken을 적절히 사용하면 가능은 할 것 같습니다.

문제는 귀차니즘을 이기는 것 :)

vala Application

gitg 때문에 시작한 vala 공부를 오랜만에 했습니다. 문서가 그리 많지 않아서 공부하기가 쉽지 않았다는 핑계를 대고 싶네요.

처음엔 급하게 Window는 어떻게 만드는지, Button은 어떻게 만드는지 이런거부터 봤는데 아무래도 목적을 달성하기 위해서는 차근차근 보는게 좋을 것 같았습니다. 그래서 Application 부터입니다.

Application에서 크게 신경쓸 메소드는 3가지입니다. startup, shutdown, activate 인데 startup은 아직 Window를 만들기 전에 수행되는 것이고 menu를 만드는 등을 하면 됩니다. activate에서는 실제로 Window를 만듭니다.

public class Application : Gtk.Application {
    public Application() {
        Object(application_id: "net.joostory.hello",
           flags: ApplicationFlags.FLAGS_NONE);
    }

    protected override void startup() {
        base.startup();
        set_app_menu(make_menu());
        add_app_menu_actions();
        print ("startup\n");
    }

    protected override void shutdown() {
        print ("shutdown\n");
        base.shutdown();
    }

    protected override void activate() {
        base.activate();
        print ("activate\n");
        var window = new Window(this);
        window.show_all();
    }
}

다음은 메뉴입니다. 메뉴는 추가와 액션 연결이 따로 있는데 추가는 간단합니다.

   private GLib.Menu make_menu() {
        var menu = new GLib.Menu();
        menu.append("About", "app.about");
        menu.append("Menu1", "menu1");
        menu.append("Menu2", "menu2");
        menu.append("Menu3", "menu3");

        var section = new GLib.Menu();
        section.append("Section Menu1", "section.menu1");
        section.append("Section Menu2", "section.menu2");
        section.append("Section Menu3", "section.menu3");
        menu.append_section("Section", section);

        menu.append("Quit", "app.quit");
        return menu;
    }

메뉴에 대한 액션은 메뉴에 추가한 이름과 동일한 액션을 만들고 액션의 activate에 수행할 method를 연결해주면 됩니다. quit와 about dialog를 만드는 액션입니다.

   private void add_app_menu_actions() {
        var quit_action = new SimpleAction("quit", null);
        quit_action.activate.connect(this.quit);
        add_action(quit_action);

        var about_action = new SimpleAction("about", null);
        about_action.activate.connect(this.open_about);
        add_action(about_action);
    }

    private void open_about() {
        print ("Open About\n");
        var about = new About();
        about.show_all();
    }

추가된 메뉴들은 이런 모양으로 보이는데 액션이 연결된 메뉴만 밝은 색으로 보입니다.

오늘은 여기까지.