본문 바로가기

전체 글119

외부 라이브러리를 사용하는 좋은 방법 모바일 앱 개발을 시작한 이래로 상당히 많은 외부 라이브러리들을 사용하고 있습니다. 이미 많이 사용되어 검증되고 훌륭한 외부 라이브러리를 사용하는 건 분명 엄청난 혜택이고 이젠 개발을 할 때 꼭 필요한 부분이 되었지만 유지보수를 생각하면 무턱대고 그냥 갔다 쓸 수는 없습니다. 제가 외부 라이브러리를 사용하면서 겪게 된 몇 가지 문제들이 있었는데, 구글이나 파이어베이스 같은 서비스 변경으로 외부 라이브러리 버전이 업데이트 되었는데 API 에 변경이 생겼을 때 네이티브 라이브러리가 업데이트 되었는데 외부 바인딩 (Xamarin 용 네이티브 라이브러리 Wrapper. Flutter 전에 사용했습니다. ㅠ.ㅠ) 라이브러리가 업데이트가 안 되어 직접 바인딩 라이브러리를 만들었을 때 유닛 테스트 코드 작성할 때 이.. 2023. 3. 21.
싱글턴 패턴 VS Static 클래스 in C# 몇일에 걸쳐 이 두가지 방법 중 정확히 어떤 걸 어떤 용도로 써야 하는지 이해를 하려고 노력했습니다. 이해한 내용 중 큰 특징들만 간단히 정리하자면, 공통점: Static 클래스/멤버는 특수한 메모리 영역인 High-Frequency Heap 에 저장되고 이 영역은 Garbage Collector(이하 GC) 의 청소 대상이 아니다. 싱글턴 패턴을 구현한 클래스(이하 싱글턴 클래스) 역시 static 멤버를 가지고 있으므로 GC 의 청소 대상이 아니다. 따라서, 해당 프로세스나 AppDomain 이 종료될 때 해제된다. 둘 다 객체를 생성할 수 없고 하나의 레퍼런스만을 앱 전체에서 공유한다. 차이점: Static 클래스는 인터페이스 구현 및 클래스 상속이 안 된다. 싱글턴 클래스는 된다. 싱글턴 클래스는.. 2023. 3. 21.
액세스 수준 정리 [C#] 1. 네임스페이스 내부에 선언된 클래스의 기본 액세스 수준은 internal 이며 internal/public 만 가능하다. 2. 클래스에 포함된 멤버, 중첩된 클래스의 액세스 수준은 기본적으로 private 이며, public, private, protected, internal, protected internal 모두 사용 가능하다. [VB] C# 과 동일하며 internal 대신 friends 키워드 사용 2017. 1. 3.
오픈소스 소프트웨어 지적재산권 그누보드를 한 번 만져볼까 하고 들여다보다 그누 (GNU) 가 뭔 말이며 그누보드의 라이센스 페이지에서 LGPL 이 있어 이 기회에 그냥 어렴풋이 알고 있던 오픈소스 라이센스에 대해 좀 더 정확히 알아보고 그 내용을 정리해 보았습니다. 아래 내용은 아래 링크된 온라인 상 다른 분들이 써놓으신 블로그 글들과 KLDPWiki 의 오픈소스 라이센스 페이지, GNU 공식 사이트의 내용을 개인적으로 요약 정리한 것입니다. 우선 지적재산권에 해당하는 저작권, 특허권, 상표권을 간략하게 정리해 보았습니다. 1. 저작권: 창작물에 대해 창작자에게 자동적으로 부여되는 저작물에 대한 권리. 라이센스 즉, 사용권을 저작자에게 부여받아 사용할 수 있다. 2. 특허권: 특정 발명(물적으로 구현된 아이디어)에 대한 독점권을 부여.. 2016. 12. 5.
[Git][BitBucket] 1. 신규 프로젝트 올리기 BitBucket 으로 신규 프로젝트를 올리는 예제입니다. 1. 이클립스에서 BitBucket에 올릴 프로젝트를 선택합니다. 2. 바로가기 메뉴에서 Team>Share Project... 를 선택합니다. 3. BitBucket 은 Git 을 사용하기 때문에 repository type 을 Git 으로 선택합니다. 4. 처음일 경우 Git Repository 가 없을 것이기 때문에 Create... 버튼을 누릅니다. 기존 Repository 를 사용할 경우 Repository 목록에 있는 항목을 선택하면 됩니다. 5. Repository 경로를 확인하고 새로운 폴더를 만들어 선택 후 확인을 누릅니다. 이 예제에서는 Repository 경로를 C:\Users\Administrator\git\Test 로 하였.. 2016. 9. 11.
정확한 숫자 계산을 위한 BigDecimal 클래스 컴퓨터의 특성으로 인해 float 이나 double 은 실수 연산시 정확한 결과가 나오지 않는다.(근사치를 출력) 하지만 BigDecimal 을 이용하면 계산은 조금 번거롭지만 정확한 결과를 볼 수 있다. BigDecimal 의 생성자는 여러가지가 있지만, 가장 정확한 계산을 하려면 문자열을 받는 생성자를 사용해야 한다. BigDecimal(String) 실수형 인자를 사용하면 정확한 계산의 의미가 없어진다. 장점: 숫자를 나타내는 정확한 방법. 단점: 느리고 계산이 조금 번거롭다. 돈이나, 수치가 중요한 경우에는 BigDecimal 을 그렇지 않은 경우 double 이 좋은 경우가 많다. BigInteger 의 경우 int 나 long 형의 최대치를 초과하는 범위 외에는 큰 메리트가 없다. 정수 연산은.. 2016. 7. 6.
쿼리/리포트 디자이너 MS-SQL 2008 연결 설정 쿼리/리포트 디자이너에서 MS-SQL 2008 연결 설정 방법 1. 쿼리/리포트 디자이너 툴의 설치경로의 config 폴더로 이동 예) 쿼리 디자이너 - C:\Program Files\FORCS\OZ Report 6.0\OZ Query Designer 6.0\config 리포트 디자이너 - C:\Program Files\FORCS\OZ Report 6.0\OZ Report Designer 6.0\config 2) launch.cfg 파일에 아래와 같이 작업 (1) CLASSPATH 에 .\UniversalDriver\sqljdbc.jar 추가 (2) JRE_PATH 를 ..\jre15\bin\client\jvm.dll 로 변경 오즈테크넷의 MS-SQL 2005 연결 방법 참고 http://oztn.net.. 2015. 12. 7.
[SmartClient] 웹 응용 프로그램 디버깅하기 SmartClient 가 배포된 웹 응용프로그램을 디버깅 하는 방법 테스트 환경: Visual Studio 2005 , IIS 7.0, .NET Framework 2.0 1. 로컬 IIS 에 해당 ASP.Net 웹 응용 프로그램을 배포 2. 웹 브라우저에서 디버깅할 화면을 띄움 3. 소스코드가 있는 비주얼 스튜디오에서 디버깅할 곳 중단점 설정 후 디버그 > 프로세스에 연결... 클릭 4. 연결 대상이 자동일 경우 관리 코드인지 확인하고 아니라면 "선택" 버튼을 눌러 "다음 코드 형식 디버깅" 옵션 에서 "관리"만 체크 **주의** "관리" 외에 "T-SQL" 은 상관없으나 "네이티브"를 같이 체크하게 되면 프로세스 연결시 에러 발생 5. "사용 가능한 프로세스" 리스트에서 iexplorer.exe 제목이.. 2015. 12. 3.
로컬 IIS 에 배포한 ASP.Net 웹 응용 프로그램 디버깅하기 비주얼 스튜디오를 통하지 않고 로컬 IIS 7.0 에 ASP.Net 웹 응용프로그램을 배포한 뒤 비주얼 스튜디오에서 디버깅하는 방법 테스트 환경: Visual Studio 2005, IIS 7.0, .NET Framework 2.0 예) 웹 응용프로그램을 로컬 IIS 에 배포한 뒤 디버깅해야 할 경우 방법) 1. 디버깅할 웹 응용프로그램을 IE 로 띄웁니다. 2. 비주얼 스튜디오>디버그>프로세스에 연결...>사용 가능한 프로세스 섹션에서 모든 세션의 프로세스 표시 체크 3. 프로세스 중 w3wp.exe 를 선택하여 연결. 이 프로세스에 연결하면 컴퓨터가 손상될 수 있다는 보안 경고가 뜨더라도 그냥 연결하면 됨. ** 만약 디버깅 시 중단점이 안 먹히고 에러내용이 소스 버전이 일치하지 않는다는 문제라면 도.. 2015. 11. 25.
Javascript 에서 StringBuilder 사용하기 Java 나 .Net 을 보면 StringBuilder 라는 클래스가 있어서 점진적으로 문자열을 늘려나갈 때 유용하게 사용할 수 있습니다. 성능을 고려하지 않고 이를 구현할 경우 아래와 같이 보통 코드를 작성합니다. str = str + "abc"; str = str + "def"; str = str + "hijk"; ... 하지만 위의 코드는 str 이라는 변수에 늘어난 문자열을 계속 새로 저장하기 때문에 메모리 할당이나 I/O 측면에서 비효율적인 걸로 알고 있습니다. 그래서 보통 StringBuilder 를 사용하여 append 하여 문자열을 생성해 나갑니다. 그러나 Javascript 에서는 StringBuilder 라는 클래스나 함수가 없기 때문에 위와 같이 비효율적인 코드를 작성하는 경우가 빈번.. 2013. 12. 10.
텍스트박스 값 입력 후 엔터시 자동으로 버튼 클릭 발생시키기 보통 검색창을 보면 텍스트박스 하나와 버튼 하나 이런 구성으로 되어 텍스트박스에 문자열을 입력 후 엔터를 누르면 바로 검색이 되도록 합니다. asp.net 에선 DefaultButton 이라는 속성을 이용하여 대상 버튼 ID 만 지정해 주면 위와 같은 동작을 간단하게 구현할 수 있습니다. 아래 예제는 Panel 컨트롤을 이용하여 구현한 간단한 예제입니다. 1. WebForm1.aspx 2. WebForm1.aspx.cs public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventAr.. 2013. 11. 14.
대소문자 구별하여 조회하기 테이블에 데이터를 대소문자를 구분하여 조회해야 하는 경우 만약, DB 나 테이블이 Collation(데이터 정렬)이 Case Insensitive 로 하여 생성되었다면 단순 조회로는 대소문자 구분하여 조회가 되질 않습니다. (테이블의 경우 기본적으로 DB 의 Collation 을 따라갑니다.) 이럴 경우 DB 또는 테이블의 Collation 을 변경하거나 재생성하지 않고 쿼리에 아래와 같이 WHERE 정의 컬럼명 뒤에 COLLATE 옵션을 줘서 조회할 수 있습니다. 여기서는 Korean_WanSung_CS_AS 를 사용하였으며 테이블의 Collation 은 Korean_WanSung_CI_AS 입니다. 위 Collation 명을 보시면 뒤에 CI/CS 와 AS 가 있는데 이에 대한 설명은 아래와 같습니다.. 2013. 11. 5.
모달 팝업창 만들기 2 - Javascript 의 showModalDialog 를 이용한 모달 팝업창 만들기 Javascript 에서 제공하는 window.showModalDialog() 를 사용한 모달 팝업창을 생성하는 예제입니다. 참고로 팝업창 띄울 때 흔히 사용하는 window.open() 은 모달리스 팝업창입니다. showModalDialog 의 문법은 아래와 같습니다. var retval = window.showModalDialog(dialog, [varArgIn], [varOptions]); dialog: 모달 팝업으로 표시할 페이지 URL varArgln(옵션): 모달 팝업창에 전달할 변수 혹은 객체 varOptions(옵션): dialogWidth, dialogHeight 와 같은 팝업창 속성 자세한 내용은 아래 MSDN 페이지를 참고하시면 됩니다. MSDN 페이지: http://msdn.micr.. 2013. 10. 22.
레이어 공지 팝업창 만들기 대부분 웹사이트에서 볼 수 있는 공지사항과 같은 팝업창을 레이어를 이용하여 띄우는 예제입니다. cookie 를 사용하여 하루 동안 창이 뜨지 않도록 하는 기능을 포함하고 있습니다. 이 예제에서는 jquery v1.7.1 과 cookie 처리를 위한 jquery 플러그인인 jquery.cookie v1.3.1 을 사용합니다. jquery.cookie 는 GitHub 에서 진행되는 오픈소스 라이브러리이며 아래 URL 을 참고하셔서 다운로드 받거나 아래 첨부파일을 받아서 사용하시면 됩니다. URL: https://github.com/carhartl/jquery-cookie 1. CSS 부분 2. HTML 부분 공지사항입니다. 오늘 하루 이 창을 열지 않음 [닫기] 쿠키 삭제 테스트입니다.테스트입니다.테스트입니.. 2013. 10. 1.
데이터 로딩중 표시하기 2 - Ajax 컨트롤들을 사용하여 모달 팝업으로 표시하기 ASP.Net 컨트롤을 사용하여 특정 작업을 할 때 모달 팝업으로 데이터 로딩중...과 같은 진행상태를 표시하여 진행 중에 화면에서 다른 작업을 할 수 없도록 하는 예제입니다. 이 예제에서는 Ajax 확장 컨트롤인 UpdatePanel, UpdateProgress 와 별도 컨트롤인 AjaxControlToolkit 을 사용하였고, 네이버까페 닷넷 프로그래머 모임에 심재운님이 올리신 글을 참고하였습니다. AjaxControlToolkit 은 아래 URL 이나 아래 첨부파일에서 해당 .Net 버전에 맞는 걸로 다운받으시면 됩니다. URL: http://ajaxcontroltoolkit.codeplex.com/releases/view/109918 로딩 중 이미지는 데이터 로딩중 표시하기 1 글에서 다운받으실 .. 2013. 9. 30.