예전에 님프 코드 좀 봤는데
g_hash_table_iter_init (&iter, server->priv->services);
while (g_hash_table_iter_next (&iter, NULL, &service))
{
if (!g_strcmp0 (server->priv->last_focused_service,
nimf_service_get_id (service)))
nimf_service_change_engine_by_id (service, engine_id);
}
이 부분 있는데 서비스 ID 를 키로 쓰는데 특정 ID 가진 서비스 찾으려고 while 문 전체 비교하는데
해시 테이블 자체가 O(1) 룩업해서 한줄로 쓸 수 있고
왜 sort 안에서
static gint
on_comparison (gconstpointer engine_id_a, gconstpointer engine_id_b)
{
...
settings_a = g_settings_new (schema_id_a);
settings_b = g_settings_new (schema_id_b);
schema_name_a = g_settings_get_string (settings_a, "hidden-schema-name");
...
g_object_unref (settings_a);
}
객체 생성을 하는지
그리고 싱글톤 패턴내에도 댕글링 포인터가 있고
그래서 뭐 잘치는지는 모르겠음
C를 잘쓴다면 이해를 하겠는데, 그냥 저냥 보이는 아마추어 코드라.
님이 코드를 이해를 못해서 그래 ㅎㅎ
코드를 볼때에는 문법에만 매몰될 것이 아니라, 그 코드가 하는 일이 무엇인가를 봐야 하는 것이다. 그래서 님은 아직 멀은거다. 그래서 님 본문글의 의도가 나를 비하하려는 것이 목적이잖아. 그래서 님은 발전이 없는거다.
해당 댓글은 삭제되었습니다.
if (!g_strcmp0 (server->priv->last_focused_service, 이게 뭐하는 코드같아?
참고로 ibus, fcitx에서는 저러한 알고리즘 고안을 못하여 언어 전환 알림을 못하거나 버그가 있다. 제발 멀쩡한 나를 까는 짓은 하지 말자.
@나르시 그래서 해시테이블 전체를 매번 순회하면서 문자열 비교하는게 너는 맞다 생각함?
창 전환을 하면 focus out / focus in 신호가 발생되는데 그 순서는 정해져 있지 않아. 창2 포커스 인이 먼저 발생하여 한글 아이콘 알려는데 창1의 포커스 아웃이 발생하면 한글 아이콘 없어지면? 그런데 한글 입력이 되면?
그 버그가 있는게 문제가 아니라 정렬 알고리즘 자체를 이상하게 쓰고 있다고 임마
참고로 nimf 사용하면 창 전환시 입력기로 인한 창전환 지연이 없다. fcitx는 AMD 3000G 사양에서 약 0.5초 지연 발생. ibus의 경우 알림을 제대로 표시 못하는 버그 있다.
@나르시 그건 안중요하고 내부의 비교 알고리즘이 이상하다고 어느 미친놈이 해시테이블 전체 순회를 해
임마라 말하지마. 정렬 알고리즘 저가 맞다. 맞으니까 정상적으로 화면에 표시되지. 너가 이해 못하는거라고.
서비스가 총 몇개라 보는가?
@나르시 뭔 이해를 못해 요새 누가 저렇게 하냐고
정렬 알고리즘이 문제라길래 그거 문제 아니라 답하니 이제는 해시테이블 순회가 문제? 코드 제대로 이해부터 해라. 코드가 잘못 되었으면 화면 표시가 이상해졋겠디?
저기 해시테이블에 들어있는 서비스는 nim, xim, wayland 등 5종 정도 바껭 안돼 ㅎㅎ
@나르시 그런 화면 표시랑 백 구분을 못하노. 갑갑하다.
@나르시 애초에 히팅을 더 빠르게 할 수 있는데 왜 순회를 하냐니까
그냥 서로 무시하고 좋게 가자. 오늘 왜 며칠 반응 안해주니 자꾸 내 글에 댓글달아 좆빡치게
나님께서 지금 소스코드 확인 중이시다. ㅎㅎ 나는 너를 무시하고 있는데, 너가 도발을 하고 시비를 먼저 거네. 그러거는 내로남불, 적반하장.
댓글 달리는 거 싫으면 나를 공격하는 글을 쓰지 말아. 그리고 프갤에 안 오면 되잖아. 프갤에 안 온다며??
너 항상 프갤와서 하는 일이, 타인 비하/ 경멸하고 싸우고, 욕하고,, 알지도 못하면서 잘난 척하다가 타인이 그거 아니라고 말하면 욕지랄하고.. 또 뭐있더라..?
그리고 댕글링 포인터가 어디가 있어? ㅎㅎㅎ 그리고 댕글링 포인터가 있으면 모두 위험하다고 판단하는건가?
그래서 너가 초보자라는 얘기다.