전체 글120 소프트웨어 개발에서 코드 리뷰의 변화 요약위임하기 전에 이해하기: 엔지니어는 AI에 구현을 맡기기 전에 시스템의 동작과 워크플로를 이해해야 한다.코드 한 줄 한 줄보다 결과 검증하기: 코드 리뷰는 AI가 수행하고, 엔지니어는 결과를 검증할 수 있다.동료 리뷰 재고하기: 모든 MR/PR에 동료 코드 리뷰를 요구하는 대신, 명세와 공통 규칙, Skills를 함께 리뷰하자.여기서 코드 리뷰는 동료 리뷰(Peer Review)와 셀프 리뷰(Self-review)를 모두 의미하며, AI의 도움을 받을 수도 있다. 셀프 리뷰가 반드시 코드 한 줄 한 줄을 직접 확인하는 것을 의미하지는 않는다. 나는 지난 4월 Claude를 구독한 이후로 코드를 직접 작성한 적이 없다. 물론 예전에는 코드 리뷰를 위해 코드를 읽었지만, 이제는 화면을 구성하거나 비즈니스.. 2026. 10. 17. 외부 라이브러리를 사용하는 좋은 방법 모바일 앱 개발을 시작한 이래로 상당히 많은 외부 라이브러리들을 사용하고 있습니다. 이미 많이 사용되어 검증되고 훌륭한 외부 라이브러리를 사용하는 건 분명 엄청난 혜택이고 이젠 개발을 할 때 꼭 필요한 부분이 되었지만 유지보수를 생각하면 무턱대고 그냥 갔다 쓸 수는 없습니다. 제가 외부 라이브러리를 사용하면서 겪게 된 몇 가지 문제들이 있었는데, 구글이나 파이어베이스 같은 서비스 변경으로 외부 라이브러리 버전이 업데이트 되었는데 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. 이전 1 2 3 4 ··· 8 다음