Nahum D. Gershon

53 papers A* 6A 5Journal 19Unranked 16
YearRankTypeTitle / Venue / Authors
2019 conf
INTERACT (4)
Gerrit C. van der Veer, Achim Ebert, Nahum D. Gershon, Peter Dannenmann
2015 ed.
GEM
Elena G. Bertozzi, Bill Kapralos, Nahum D. Gershon, Jim R. Parker
2015 J jnl
IEEE Consumer Electron. Mag.
Nahum D. Gershon, Bill Kapralos, Steve Mann
2014 ed.
GEM
Bill Kapralos, Nahum D. Gershon, Elena G. Bertozzi, Jim R. Parker
2014 ed.
HCIV
Achim Ebert, Gerrit C. van der Veer, Gitta Domik, Nahum D. Gershon, Inga Scheler
2012 J jnl
Künstliche Intell.
Achim Ebert, Nahum D. Gershon, Gerrit C. van der Veer
2012 J jnl
IEEE Consumer Electron. Mag.
Narisa N. Y. Chu, Nahum D. Gershon, Peter M. Corcoran
2012 J jnl
Künstliche Intell.
Achim Ebert, Nahum D. Gershon
2011 conf
INTERACT (4)
Achim Ebert, Gitta Domik, Nahum D. Gershon, Gerrit C. van der Veer
2011 ed.
HCIV
Achim Ebert, Alan J. Dix, Nahum D. Gershon, Margit Pohl
2009 conf
INTERACT (2)
Achim Ebert, Alan J. Dix, Nahum D. Gershon, Margit Pohl
2009 conf
HCIV
Achim Ebert, Alan J. Dix, Nahum D. Gershon, Margit Pohl
2008 conf
CHI Extended Abstracts
Achim Ebert, Peter Dannenmann, Matthias Deller, Daniel Steffen, Nahum D. Gershon
2006 conf
CHI Extended Abstracts
William Jones, Peter Pirolli, Stuart K. Card, Raya Fidel, Nahum D. Gershon, Peter Morville, Bonnie A. Nardi, Daniel M. Russell
2006 J jnl
Computer
Nahum D. Gershon, Ben Sawyer, J. R. Parker
2005 J jnl
IEEE Computer Graphics and Applications
Nahum D. Gershon, Jake Kolojejchick
2005 J jnl
Inf. Vis.
Nahum D. Gershon, Jake Kolojejchick
2001 J jnl
Commun. ACM
Nahum D. Gershon, Ward Page
1999 conf
CHI Extended Abstracts
Nahum D. Gershon, Stuart K. Card, Stephen G. Eick
1998 conf
CHI Conference Summary
Arnd Steinmetz, Frank Nack, Nahum D. Gershon
1998 conf
CHI Conference Summary
Nahum D. Gershon, Jakob Nielsen, Mary Czerwinski, Nick Ragouzis, David Siegel, Wayne C. Neale
1998 J jnl
J. Intell. Inf. Syst.
Nahum D. Gershon, Stephen G. Eick
1998 J jnl
IEEE Computer Graphics and Applications
Nahum D. Gershon, Stephen G. Eick
1998 conf
CHI Conference Summary
Nahum D. Gershon, Stuart K. Card, Stephen G. Eick
1998 J jnl
Interactions
Nahum D. Gershon, Stephen G. Eick, Stuart K. Card
1998 J jnl
IEEE Computer Graphics and Applications
Nahum D. Gershon
1997 J jnl
IEEE Computer Graphics and Applications
Nahum D. Gershon, Stephen G. Eick
1997 conf
CHI Extended Abstracts
Nahum D. Gershon, Stuart K. Card, Stephen G. Eick
1997 J jnl
IEEE Computer Graphics and Applications
Nahum D. Gershon, Stephen G. Eick
1996 A* conf
SIGGRAPH
Nahum D. Gershon
1996 A conf
IEEE Visualization
Robert Braham, F. David Fracchia, Andrew S. Glassner, Barbara Mones-Hattal, Russ Rose, Nahum D. Gershon
1996 J jnl
IEEE Computer Graphics and Applications
Nahum D. Gershon, Judith R. Brown
1996 A* conf
SIGGRAPH
Nahum D. Gershon
1996 J jnl
IEEE Computer Graphics and Applications
Nahum D. Gershon
1996 ed.
InfoVis
Stuart K. Card, Stephen G. Eick, Nahum D. Gershon
1996 ed.
CODATA
Jacques-Emile Dubois, Nahum D. Gershon
1996 J jnl
IEEE Computer Graphics and Applications
Nahum D. Gershon, Judith R. Brown
1996 conf
CHI Conference Companion
Nahum D. Gershon, Keith Andrews, Stephen G. Eick, James D. Foley, William Ruh
1995 conf
INFOVIS
Nahum D. Gershon, Joshua LeVasseur, Joel Winstead, J. Croall, A. Pernicks, William Ruh
1995 ed.
InfoVis
Nahum D. Gershon, Stephen G. Eick
1995 conf
ADL
Nahum D. Gershon, William Ruh, Joshua LeVasseur, Joel Winstead
1995 A* conf
SIGGRAPH
Nahum D. Gershon, Bran Ferren, James D. Foley, Joseph Hardin, Frank Kappe, William Ruh
1994 conf
CODATA
Nahum D. Gershon, William Ruh, Brian Dickens, Joshua LeVasseur
1994 A* conf
SIGGRAPH
Nahum D. Gershon, Colleen Bushell, Jock D. Mackinlay, William Ruh, Anselm Spoerri, Joel Tesler
1994 A* conf
SIGGRAPH
Nahum D. Gershon, Richard Mark Friedhoff, John Gass, Robert Langridge, Hans-Peter Meinzer, Justin D. Pearlman
1994 J jnl
IEEE Computer Graphics and Applications
José L. Encarnação, James D. Foley, Steve Bryson, Steven K. Feiner, Nahum D. Gershon
1994 conf
CODATA
Joel Winstead, Nahum D. Gershon
1994 A conf
IEEE Visualization
Nahum D. Gershon
1993 A* conf
SIGGRAPH
Nahum D. Gershon
1992 A conf
IEEE Visualization
Nahum D. Gershon
1991 A conf
IEEE Visualization
Nahum D. Gershon
1991 J jnl
IEEE Computer Graphics and Applications
Nahum D. Gershon
1990 A conf
IEEE Visualization
Nahum D. Gershon
s3-storage/s3_test.py
← Index s3-storage/s3_test.py python
#!/usr/bin/env python3
"""
Simple script to test S3 connectivity and download.
Usage: python s3_test.py
"""

import os
import time
import tempfile
from minio import Minio
from minio.error import S3Error
from dotenv import load_dotenv

# Load environment variables
load_dotenv()

def get_minio_client():
    """Create and return a Minio client using credentials from .env file"""
    endpoint = os.getenv("S3_ENDPOINT")
    access_key = os.getenv("S3_ACCESS_KEY")
    secret_key = os.getenv("S3_SECRET_KEY")
    secure = True 
    
    print(f"Connecting to S3 endpoint: {endpoint} (secure={secure})")
    
    return Minio(
        endpoint=endpoint,
        access_key=access_key,
        secret_key=secret_key,
        secure=secure
    )

def test_connection():
    """Test basic connectivity to S3"""
    try:
        client = get_minio_client()
        
        # Try to list buckets as a basic connectivity test
        buckets = client.list_buckets()
        print(f"Successfully connected to S3. Found {len(buckets)} buckets:")
        for bucket in buckets:
            print(f"  - {bucket.name}")
        
        return client
    except Exception as e:
        print(f"Failed to connect to S3: {e}")
        return None

def test_bucket_access(client, bucket_name):
    """Test access to a specific bucket"""
    try:
        exists = client.bucket_exists(bucket_name)
        if exists:
            print(f"Bucket '{bucket_name}' exists and is accessible")
            
            # List a few objects to verify access
            count = 0
            objects = []
            for obj in client.list_objects(bucket_name, recursive=True):
                print(f"  - {obj.object_name} ({obj.size} bytes)")
                objects.append(obj)
                count += 1
                if count >= 5:
                    break
            
            print(f"Found at least {len(objects)} objects in bucket")
            return objects
        else:
            print(f"Bucket '{bucket_name}' does not exist or is not accessible")
            return []
    except Exception as e:
        print(f"Error accessing bucket '{bucket_name}': {e}")
        return []

def test_download(client, bucket_name, object_name):
    """Test downloading a specific object"""
    try:
        print(f"Attempting to download: {object_name}")
        start_time = time.time()
        
        # Create a temporary file to store the downloaded object
        with tempfile.NamedTemporaryFile(delete=False) as temp_file:
            temp_path = temp_file.name
        
        # Download the object
        client.fget_object(bucket_name, object_name, temp_path)
        
        # Check if the file was downloaded successfully
        file_size = os.path.getsize(temp_path)
        elapsed_time = time.time() - start_time
        
        print(f"Download successful: {file_size} bytes in {elapsed_time:.2f} seconds")
        print(f"Average download speed: {file_size/elapsed_time/1024:.2f} KB/s")
        
        # Clean up
        os.unlink(temp_path)
        return True
    except S3Error as e:
        print(f"S3 Error during download: {e}")
        return False
    except Exception as e:
        print(f"Error downloading object: {e}")
        return False

def main():
    """Main function to run all tests"""
    print("=== S3 Connectivity Test ===")
    
    # Test basic connectivity
    client = test_connection()
    if not client:
        return
    
    # Get bucket name from environment variable
    bucket_name = "redb"
    print(f"\n=== Testing Access to Bucket: {bucket_name} ===")
    objects = test_bucket_access(client, bucket_name)
    
    if objects:
        # Test downloading the first object
        first_object = objects[0].object_name
        print(f"\n=== Testing Download of Object: {first_object} ===")
        test_download(client, bucket_name, first_object)
        
        # If the first one worked, let's try a specific file from the error log
        print(f"\n=== Testing Download of Specific Object ===")
        specific_object = "00/06/00062073114defac39cb7ab9cb99a0b77c535a09a241c60d47ddd0b6431629f1.zip"
        test_download(client, bucket_name, specific_object)

if __name__ == "__main__":
    main()