본문 바로가기

프로그래밍

Base64, Blob URL Image Binding 기법. 안녕하세요? 이번 포스팅에서는 Blob (Binary Large Object), Base64 를 사용하여 img 태그에 데이터를 바인딩 하는 방법에 대해 포스팅 하고자 합니다.간혹 웹페이지에 있는 이미지들을 특수 목적에 의해 이미지를 불러와 base64 로 바인딩 하는 경우가 종종 있습니다. 용량이 크고 많은 이미지가 아니라면 base64 로 바인딩해서 사용하는 부분에 큰 문제가 되지 않지만,용량이 크고 많은 이미지를 base64 로 바인딩 사용한다면,base64 String 에 의해 DOM 문서 크기가 상당히 커지면서 성능에 대한 저하가 있습니다.따라서, 이런 문제를 해결하기 위해 blob 객체로 바꾸고, blob URL 을 사용하여 이미지를 바인딩한다면,이런 성능 저하 문제를 어느 정도 해결 할 수 .. 더보기
움직이는 이미지 스크롤 모션 구현 하기. 이번 포스팅에서는 스크롤 모션을 구현하는 방법에 대해 포스팅 하겠습니다. 본 포스팅은 CSS/JavaScript/HTML 기본 문법을 숙지 하고 있다고 가정 하에 설명하겠습니다. 보통 데스크탑 환경에서는 스크롤 모션을 넣는 경우는 드물지만, 모바일 환경에서는 많은 앱, 웹에서 스크롤 모션을 구현하여 사용 하고 있습니다. 네이버 블로그 모바일 화면에서도 스크롤을 통한 모션이 들어가 있고, 카카오에서 제작한 brunch(브런치) 앱에서도 스크롤 모션이 메인으로 사용되고 있습니다. 이번 포스팅에서는 이러한 스크롤 모션을 모바일 웹브라우져 에서 구현하는 방안에 대해서 포스팅 하도록 하겠습니다. (카카오 브런치와 동일한 모션을 구현하겠습니다.) 먼저, 아래 스크롤 모션을 먼저 봐주시기 바랍니다. 네이버 모바일 블.. 더보기
AES 128비트 암호화 알고리즘을 통한 Base64 인코딩/디코딩 처리 이번 포스팅에서는 AES 알고리즘을 통해 문자열을 Base64 인코딩/디코딩 하는 방법에 대해 포스팅 하겠습니다. Java에서는 JCE (Java Cryptography Extension) 를 통해 암호화에 필요한 클래스를 제공하고 있습니다. AES 알고리즘은 128, 192, 256bit 를 지원하지만, 기본으로 설치되는 JDK 를 통해 AES 알고리즘을 사용하는 경우 정책상 128bit 밖에 사용 할 수 없습니다. (기본 제공하는 각 암호화 알고리즘의 Limit 키사이즈는 아래 링크 참고) 128bit 를 사용하지 않는경우 아래와 같은 Exception 이 발생합니다. java.security.InvalidKeyException: Illegal key size or default parameters .. 더보기
WAS JMX 에러해결 방법 리눅스, 유닉스 환경에서 WAS 아규먼트로 JMX Remote 콘픽을 사용하여 구동시키는 경우 발생하는 아래 에러에 대한 해결 방법 입니다. (Tomcat, WebLogic 포함) 1. jmxremote.password 를 찾을수 없는 경우 - jre/lib/management 폴더내 jmxremote.password.template 파일을 jmxremote.password 로 변 경 2. jmxremote.password 권한 에러 - 권한 변경 chmod 600 jmxremote.password 더보기
[오라클] 데이터 해시 방법 MySQL은 SH1('해싱값'), MD5('해싱값') 하여 편하게 사용하였으나, 오라클은 방법이 약간 다르다. 암호화 처리를 위한 패키지를 제공한다. DBMS_OBFUSCATION_TOOLKIT DBMS_CRYPTO 우선 SYSTEM 계정에서 DBMS_CRYPTO 사용할 유저에 대한 권한을 부여 해야한다. GRANT EXCUTE ON DBMS_CRYPTO to 유저명 부여받은 유저는 이제 해당 함수를 사용 할 수 있게 된다. ex) RAWTOHEX(DBMS_CRYPTO.HASH(to_clob(해싱값),2)) ex) DBMS_CRYPTO.HASH(UTL_I18N.STRING_TO_RAW(해싱값),2) DBMS_CRYPTO.HASH 에서 첫번째 파라메터는 해싱할 원본 데이터 두번째 파라메터(숫자) 는 아래와.. 더보기
using 을 통한 리소스 해제 기법 이번 포스팅에서는 using 을 통한 Dispose 에 대해 알아보겠습니다. Dispose 메서드의 사용이 필요한 객체의 경우 자원을 반납하거나 메모리에서 반드시 소멸시켜야할 대상 입니다. 스트림의 경우 자원을 열었다면 반드시 닫아주는게 원칙 이라는 점은 아실것이라 판단됩니다. 코드를 통해 예제를 살펴 보겠습니다. 우선 텍스트 파일 하나를 StreamReader 를 통해 열고 작업을 종료하고 명시적으로 Close 하는 예제 입니다. StreamReader file = new StreamReader("../../test.txt"); while ((line = file.ReadLine()) != null) { System.Console.WriteLine(line); } file.Close(); 사용에 문제 .. 더보기
JSON Text 파싱 방법 이번 포스팅에서는 Json 데이터를 자신의 임의 객체 혹은 변수로 파싱하는 방법에 대해 알아 보겠습니다. JavaScriptSerializer, Json .NET 을 사용하여 Json String 을 객체로 직렬화 하거나 역직렬화 하는 경우 Json 에 포함된 객체명의 이름을 임의적으로 바꿔줄수 없다는 단점이 존재합니다. 만약, Json 데이터에 포함된 객체명이 대문자로 시작하거나 _(언더바) 로 시작하는 경우 자바나 혹은 C# 에서 네이밍 룰에 어긋나기 때문에 개발자가 임의로 객체명을 바꿔서 저장해야 하는 경우가 생깁니다. 이제 객체명을 내 임의대로 해서 파싱 받는 방법에 대해 소개 하겠습니다. 필요한 어셈블리는 Newtonsoft.Json 일명 Json .NET 입니다. ASP. NET 부터는 참조에.. 더보기
JavaScriptSerializer 를 통한 JSON Serialization 이번 포스팅에서는 .NET Framework 3.5 부터 추가된 JavaScriptSerializer 클래스를 통해 JSON 데이터를 Serialization(직렬화) / Deserialize(역직렬화) 하는 방법에 대해 배워보겠습니다. JavaScriptSerializer 클래스는 Json 데이터를 직렬화 / 역직렬화 하는 기능을 제공하며, System.Web.Script.Serialization 네임스페이스에 포함되어 있습니다. 해당 네임스페이스를 사용하기 위해선 System.Web.Extensions(System.Web.Extensions.dll) 어셈블리를 참조하셔야 합니다. (ASP.NET 에서는 이미 참조되어 있으므로 불필요) 본 포스팅에서는 간단한 Facebook Graph API 를 통해 .. 더보기
LINQ 를 통한 C# XML 파싱 (LINQ to XML) 이번 포스팅에서는 LINQ 를 통한 XML 을 파싱하는 과정을 배워보도록 하겠습니다. 우선 LINQ 및 XML 의 사전 지식이 있다고 가정하고 진행하겠습니다. (적어도 XML의 문서구조, LINQ, 람다식 의 사용 방법 은 숙지 하셔야 합니다.) .NET Framework 3.5 이상 부터 제공하는 XElement 클래스를 사용하면 XML 구성요소를 보다 쉽게 파싱이 가능합니다. XElement 클래스는 System.Xml.Linq 네임스페이스 에서 제공하며, XElement 클래스는 XML의 요소를 나타낼 수 있습니다. 우선, XML 파일을 파싱한다는 가정하에 진행하도록 하겠습니다. 네이버 오픈API 는 XML 형태로 위와 같이 서비스를 제공하고 있습니다. 우리가 파싱해볼 데이터는 channel 노드의.. 더보기
Entity Framework 에서 저장프로시저 리턴결과 받기 Entity Framework 에서 저장 프로시저 (Stored Procedure) 를 통해 결과를 리턴 받는 방법을 포스팅 합니다. 우선, ASP.NET MVC 환경에서 ADO.NET Entity Data Model 을 생성하여 테이블 및 저장프로시저를 서버로 부터 만들고, 스캐폴딩을 통하여 컨트롤러를 생성하였다고 가정하도록 하겠습니다. Member 엔티티는 위와 같은 속성으로 구성되어 있고, 저장 프로시저의 내용은 아래와 같습니다. CREATE PROCEDURE [dbo].[Register] @StringID varchar(255), @Password varchar(255), @NickName varchar(255), @Email varchar(255), @Phone varchar(255), @Add.. 더보기