O-Joun Lee

68 papers A* 3B 1Journal 42Unranked 22
YearRankTypeTitle / Venue / Authors
2025 J jnl
IEEE Access
Minh Nguyen-Duc, Luong Vuong Nguyen, Huy Nguyen-Ho-Nhat, Tri-Hai Nguyen, O-Joun Lee
2025 J jnl
IEEE Access
Yanjun Wu, Luong Vuong Nguyen, O-Joun Lee
2025 conf
RACS
Thien Thi Thu Nguyen, Eun-Soon You, Hyun Woo Kim, Van Thuy Hoang, Luong Vuong Nguyen, O-Joun Lee
2025 J jnl
Cogn. Comput.
Namgyu Jung, David Camacho, Chang Choi, O-Joun Lee
2025 J jnl
CoRR
Hyeon-Ju Jeon, Jeon-Ho Kang, In-Hyuk Kwon, O-Joun Lee
2025 conf
RACS
Hyeon-Ju Jeon, Jeon-Ho Kang, In-Hyuk Kwon, O-Joun Lee
2025 conf
RACS
Tien-Bach-Thanh Do, Jun-Hee Cho, Jin-Hyouk Park, Ki-Nam Kim, Luong Vuong Nguyen, O-Joun Lee
2025 J jnl
IEEE Access
Van Thuy Hoang, Tien-Bach-Thanh Do, Jinho Seo, Seung Charlie Kim, Luong Vuong Nguyen, Duong Nguyen Minh Huy, Hyeon-Ju Jeon, O-Joun Lee
2025 J jnl
CoRR
Van Thuy Hoang, Tien-Bach-Thanh Do, Jinho Seo, Seung Charlie Kim, Luong Vuong Nguyen, Duong Nguyen Minh Huy, Hyeon-Ju Jeon, O-Joun Lee
2025 J jnl
IEEE Trans. Netw. Sci. Eng.
Van Thuy Hoang, Hyeon-Ju Jeon, O-Joun Lee
2025 J jnl
CoRR
Van Thuy Hoang, Hyeon-Ju Jeon, O-Joun Lee
2025 A* conf
AAAI
Van Thuy Hoang, O-Joun Lee
2025 J jnl
CoRR
Van Thuy Hoang, O-Joun Lee
2025 J jnl
IEEE Access
Tra Huong Thi Le, Nguyen Van Dien, Luong Vuong Nguyen, Tri-Hai Nguyen, O-Joun Lee
2024 J jnl
CoRR
Van Thuy Hoang, O-Joun Lee
2024 J jnl
BMC Medical Imaging
Hyun-Cheol Park, Yunsang Joo, O-Joun Lee, Kunkyu Lee, Tai-Kyong Song, Chang Choi, Moon Hyung Choi, Changhan Yoon
2024 J jnl
CoRR
Hyeon-Ju Jeon, Jeon-Ho Kang, In-Hyuk Kwon, O-Joun Lee
2024 J jnl
CoRR
Hyeon-Ju Jeon, Jeon-Ho Kang, In-Hyuk Kwon, O-Joun Lee
2024 J jnl
IEEE Access
Huu-Tuong Ho, Luong Vuong Nguyen, Tra Huong Thi Le, O-Joun Lee
2024 J jnl
IEEE Internet Things J.
Namgyu Jung, Van Thuy Hoang, O-Joun Lee, Chang Choi
2024 conf
ICTC
Luong Vuong Nguyen, Quoc-Trinh Vo, Cao Vu Bui, Thi-Thu-Hong Phan, O-Joun Lee
2024 J jnl
Mach. Learn. Sci. Technol.
Hyeon-Ju Jeon, Jeon-Ho Kang, In-Hyuk Kwon, O-Joun Lee
2024 J jnl
CoRR
Van Thuy Hoang, O-Joun Lee
2024 A* conf
AAAI
Van Thuy Hoang, O-Joun Lee
2023 conf
EACL (Findings)
San-Hee Park, Kang-Min Kim, O-Joun Lee, Youjin Kang, Jaewon Lee, Su-Min Lee, SangKeun Lee
2023 J jnl
IEEE Access
Yunsang Joo, Hyun-Cheol Park, O-Joun Lee, Changhan Yoon, Moon Hyung Choi, Chang Choi
2023 J jnl
IEEE Access
Van Thuy Hoang, Sang Thanh Nguyen, Sangmyeong Lee, Jooho Lee, Luong Vuong Nguyen, O-Joun Lee
2023 J jnl
CoRR
Van Thuy Hoang, Sang Thanh Nguyen, Sangmyeong Lee, Jooho Lee, Luong Vuong Nguyen, O-Joun Lee
2023 J jnl
CoRR
Thanh-Sang Nguyen, Jooho Lee, Van Thuy Hoang, O-Joun Lee
2023 J jnl
Sensors
Van Thuy Hoang, Hyeon-Ju Jeon, Eun-Soon You, Yoewon Yoon, Sungyeop Jung, O-Joun Lee
2023 conf
RACS
Akshat Gaurav, Varsha Arya, Kwok Tai Chui, Brij B. Gupta, Chang Choi, O-Joun Lee
2023 J jnl
CoRR
Van Thuy Hoang, O-Joun Lee
2023 J jnl
CoRR
Van Thuy Hoang, O-Joun Lee
2022 J jnl
Sensors
Hyeon-Ju Jeon, Min-Woo Choi, O-Joun Lee
2021 J jnl
Mob. Inf. Syst.
O-Joun Lee, Seungha Hong, Jin-Taek Kim
2021 J jnl
J. Informetrics
O-Joun Lee, Hyeon-Ju Jeon, Jason J. Jung
2020 J jnl
J. Ambient Intell. Humaniz. Comput.
Khac-Hoai Nam Bui, Sungrae Cho, Jason J. Jung, Joongheon Kim, O-Joun Lee, Woongsoo Na
2020 conf
AI4Narratives@IJCAI
O-Joun Lee, Sung Youn Park, Jin-Taek Kim
2020 J jnl
Sensors
O-Joun Lee, Jason J. Jung, Jin-Taek Kim
2020 conf
RACS
O-Joun Lee, Jin-Taek Kim
2020 conf
Text2Story@ECIR
O-Joun Lee, Jin-Taek Kim
2020 A* conf
IJCAI
O-Joun Lee, Jason J. Jung
2020 J jnl
Artif. Intell.
O-Joun Lee, Jason J. Jung
2020 conf
ICEA
O-Joun Lee, Jin-Taek Kim, Eun-Soon You
2019 conf
WIMS
O-Joun Lee, Jason J. Jung
2019 J jnl
Inf. Process. Manag.
O-Joun Lee, Jason J. Jung
2019 J jnl
Frontiers Big Data
Hyeon-Ju Jeon, O-Joun Lee, Jason J. Jung
2019 J jnl
Future Gener. Comput. Syst.
O-Joun Lee, Jason J. Jung
2018 conf
IUI Workshops
O-Joun Lee, Jason J. Jung
2018 conf
Text2Story@ECIR
O-Joun Lee, Nayoung Jo, Jason J. Jung
2018 J jnl
J. Univers. Comput. Sci.
O-Joun Lee, Yunhu Kim, Hoang Long Nguyen, Jai E. Jung
2018 J jnl
Mob. Networks Appl.
O-Joun Lee, Jai E. Jung
2018 J jnl
Concurr. Comput. Pract. Exp.
Jae-Hong Park, O-Joun Lee, Jai E. Jung
2017 J jnl
Multim. Tools Appl.
Jai E. Jung, O-Joun Lee, Eun-Soon You, Myoung-Hee Nam
2017 J jnl
IEEE Access
Hoang Long Nguyen, O-Joun Lee, Jai E. Jung, Jaehwa Park, Tai-Won Um, Hyun-Woo Lee
2017 J jnl
Multim. Tools Appl.
Quang Dieu Tran, Dosam Hwang, O-Joun Lee, Jai E. Jung
2017 conf
BDTA
Khac-Hoai Nam Bui, Sungrae Cho, Jason J. Jung, Joongheon Kim, O-Joun Lee, Woongsoo Na
2017 J jnl
Future Gener. Comput. Syst.
O-Joun Lee, Jai E. Jung
2017 conf
EUSPN/ICTH
Jae-Hong Park, O-Joun Lee, Joo-Man Han, Eon-Ji Lee, Jason J. Jung, Luca Carratore, Francesco Piccialli
2017 B conf
Intelligent Environments
Jason J. Jung, Min-Sung Hong, O-Joun Lee, Jae-Hong Park, Chang Choi
2017 J jnl
IEEE Access
O-Joun Lee, Hoang Long Nguyen, Jai E. Jung, Tai-Won Um, Hyun-Woo Lee
2016 conf
BDTA
Quang Dieu Tran, Dosam Hwang, O-Joun Lee, Jason J. Jung
2016 conf
AfCAI
O-Joun Lee, Jason J. Jung
2016 conf
ISAmI
Khac-Hoai Nam Bui, O-Joun Lee, Jason J. Jung, David Camacho
2015 conf
ACIIDS (1)
O-Joun Lee, Eunsoon You, Min-Sung Hong, Jason J. Jung
2015 conf
ICCASA
Khac-Hoai Nam Bui, Xuan Hau Pham, Jason J. Jung, O-Joun Lee, Min-Sung Hong
2015 conf
ICCASA
Myeong-Yeon Yi, O-Joun Lee, Jason J. Jung
2015 conf
CYBCONF
O-Joun Lee, Jason J. Jung, Eunsoon You
redb/s3_utils.py
← Index redb/s3_utils.py python
"""
S3 and file utility functions for REDB.

Contains MinIO/S3 client creation, S3 key generation,
file download, and archive extraction helpers.
"""
import os
import tempfile
from typing import Optional, List

from minio import Minio
from minio.error import S3Error


def get_minio_client():
    """Create and return a Minio client using credentials from .env file"""
    return Minio(
        endpoint=os.getenv("S3_ENDPOINT"),
        access_key=os.getenv("S3_ACCESS_KEY"),
        secret_key=os.getenv("S3_SECRET_KEY"),
        secure=os.getenv("S3_SECURE", "false").lower() == "true"
    )


def generate_s3_key_from_hash(sample_hash: str) -> str:
    """
    Generate S3 key from hash using sharding structure.
    Example: 09f7d02a3c2382199458c98a62b045145ee54ab6aba86166aecf3d10c3c1444c
    becomes: 09/f7/09f7d02a3c2382199458c98a62b045145ee54ab6aba86166aecf3d10c3c1444c.zip
    """
    if len(sample_hash) < 4:
        raise ValueError(f"Hash too short for sharding: {sample_hash}")

    # Create sharded path: first 2 chars / next 2 chars / full_hash.zip
    return f"{sample_hash[:2]}/{sample_hash[2:4]}/{sample_hash}.zip"


def download_s3_object(s3_bucket: str, s3_key: str, temp_dir: str, logger=None) -> Optional[str]:
    """
    Download an object from S3 to a local temporary directory and return the local path.
    If the .zip file is not found, automatically tries .7z as a fallback for legacy uploads.
    """
    try:
        minio_client = get_minio_client()
        local_path = os.path.join(temp_dir, os.path.basename(s3_key))

        # Download the file
        minio_client.fget_object(s3_bucket, s3_key, local_path)

        return local_path
    except S3Error as e:
        # If .zip not found and error is NoSuchKey, try .7z fallback
        if e.code == 'NoSuchKey' and s3_key.endswith('.zip'):
            s3_key_7z = s3_key[:-4] + '.7z'  # Replace .zip with .7z
            if logger:
                logger.info(f".zip not found, trying .7z fallback: {s3_key_7z}")
            try:
                local_path_7z = os.path.join(temp_dir, os.path.basename(s3_key_7z))
                minio_client.fget_object(s3_bucket, s3_key_7z, local_path_7z)
                if logger:
                    logger.info(f"Successfully downloaded .7z fallback: {s3_key_7z}")
                return local_path_7z
            except S3Error as e2:
                if logger:
                    logger.error(f"Failed to download S3 object {s3_key} (tried both .zip and .7z): {e2}")
                else:
                    print(f"[ERROR] Failed to download S3 object {s3_key} (tried both .zip and .7z): {e2}")
                return None
        else:
            if logger:
                logger.error(f"Failed to download S3 object {s3_key}: {e}")
            else:
                print(f"[ERROR] Failed to download S3 object {s3_key}: {e}")
            return None


def extract_fat_slices(macho, output_dir: str, logger) -> List[tuple]:
    """
    Extract slices from FAT Mach-O binary using machofile's dump_slices() API.

    Args:
        macho: Parsed machofile.UniversalMachO object
        output_dir: Directory to write slice files
        logger: Logger instance

    Returns:
        List of (arch_name, slice_path, slice_sha256, slice_md5, slice_sha1) tuples
    """
    result = []
    try:
        # Use machofile's dump_slices API (v2026.2.5+)
        slices = macho.dump_slices(output_dir=output_dir)
        logger.debug(f"Extracted {len(slices)} slices from FAT binary")

        for arch_name, slice_path in slices:
            # Get hash info for this slice from machofile
            general_info = macho.get_general_info(arch=arch_name)
            slice_sha256 = general_info.get('SHA256')
            slice_md5 = general_info.get('MD5')
            slice_sha1 = general_info.get('SHA1')
            result.append((arch_name, slice_path, slice_sha256, slice_md5, slice_sha1))
            logger.debug(f"Slice {arch_name}: {slice_sha256}")

    except Exception as e:
        logger.error(f"Error extracting FAT slices: {e}")

    return result