분류 전체보기 썸네일형 리스트형 [Ruby] 로 jenkins & LINE 원격 환경 구성하기 jenkins & LINE 원격 환경을 구성하는 방법을 소개하는 글은 아닙니다. 얼마 전부터 '다른' 방법으로 jenkins를 다루는법을 생각하다가 결국 LINE 메신져를 이용해서 관리하기로 정했다. 이 방법의 제일 좋은점은 빌드가 끝나면 '라인 메신저'로 완료를 알려준다. (라인 앱에서 푸시도옴) 기본적으로 원격으로 빌드할 수 있고 (당연히), 서버의 item들의 리스트를 모두 가져오는 기능도 나중에 추가하였다. 이 이상의 기능은 더 만들라면 만들수 있겠지만, 별로 필요가 없어서 안만듬. (이거보다 더 상세히 컨트롤하고싶으면 젠킨스 페이지를 들어가는게 더 편할텐데 라는 생각이다,) 라인 메신져로 빌드를 명령한 화면. 빌드 파라미터중에 Version이 있는데, 이건 수동으로 지정해서 빌드해야 한다. 나머.. 더보기 [AngularJS] 커스텀 filter 제작하기 단일 값 필터 리스트 필터 리스트용 필터가 따로 존재하는것이 아니라, 그냥 첫번째 파라미터에 단일 값이 아닌 리스트가 넘어온다. 넘겨받은 리스트를 필터링해서 새로운 결과 리스트를 반환하면 된다. 이 때 filter 메소드를 사용하면 편리하다. ( filter는 IE9 부터 작동 ) 여러개 필터 사용하기 여러개의 바(|)를 사용하여 여러개의 필터를 동시 적용시킬 수 있다. 파라미터 전달하기 필터 옆에 콜론(:)을 이용하여 파라미터를 전달할 수 있다, 파라미터는 js쪽 filter에 전달된다. 해시태그 필터 제작하기필터와 정규식을 이용한 해시태그 필터 제작하기, html 태그는 기본 바인딩({{}})에 적용할 수 없기 때문에 ng-bind-html을 사용해야 한다. 더보기 [Ruby] binding_of_caller binding_of_caller gem을 사용하면 자신의 호출자의 binding을 가져올 수 있다. 원래대로라면 foo 함수에서 bar의 로컬에 접근하는것은 불가능하다. binding_of_caller gem을 사용하면 콜스택을 거슬러 올라간 binding을 가져와 로컬 값을 설정하거나, 가져오는것이 가능하다. https://github.com/banister/binding_of_caller 더보기 CLR에서 돌아가는 언어를 뭔가를 만들어 보면서 https://github.com/pjc0247/ILIL 얼마 전에 ILIL이라는 이름으로, CLR환경에서 돌아가고 CIL로 컴파일되는 언어를 만들어보고자 하는 프로젝트를 진행했었다(개인적으로). 이번 프로젝트의 제작 의의는, 단순히 컴파일러 그 자체를 만들어보고, 결과물을 CIL로 출력해서, C# 또는 C++에서 콜해보는게 목적이었고, 어느 정도 작성한후에는 코드도 같이 Github에 공개할 예정이었다. (깃허브에 올려도 바다-나무님밖에 안보긴함)그리고 최종적으로는 완성된 ILIL 컴파일러를 이용해 아래 코드와 같이 Reflection.Emit을 대체할 물건을 만드려고 했다. var src = @" $loc0 = 0; for($loc1 = 0; $loc1 더보기 [Ruby] 루비의 깔끔한 문법 1. @를 이용한 로컬 변수와, 인스턴스 변수의 구분 def foo @var1 = 1234 # 인스턴스 변수 var2 = 1234 # 지역 변수 end 루비는 변수 이름에 @를 붙이면 인스턴스 변수로 동작한다.이러한 강제적인 컨벤션은 완벽한 인텔리센스가 제공되지 못하는 루비 특성 상 굉장히 유용하며, 코드를 보았을 때 어떠한 변수가 인스턴스인지, 로컬인지를 한눈에 파악할 수 있도록 해준다.C++등에서 쓰이는 이름 앞에 m_를 붙이는 컨벤션보다 깔끔하다는것은 말할 것도 없다. 2. !, ? 를 접미사로 가지는 네이밍 규칙 queue.empty? # isEmpty buffer.reverse! # reverse한 결과를 복사-리턴하지 않고 자기 자신을 바꾸는것을 의미 메소드 뒤의 ? 는 이 메소드가 bool .. 더보기 [C#] string과 String의 차이 String -> System.String -> .Net Framework 타입string - > C# 타입 C# 타입이 .Net 타입에 별명임 더보기 [Go] Channel Direction https://gobyexample.com/channel-directions 채널을 함수의 파라미터로 사용할 때, 채널의 방향을 설정할 수 있습니다. 이렇게 방향이 정해진 채널은 수신 또는 송신만 수행할 수 있는데, 이러한 제약사항은 코드의 타입 안정성을 높혀줍니다. package main import "fmt" // ping 함수에 넘어오는 pings는 값을 전송하는것만이 가능합니다. // 만약 pings에 수신을 시도하면 컴파일 에러가 발생합니다. func ping(pings chan 더보기 [MSIL] 런타임 property 구현하기 1. '_propertyName' 이름을 가지는 backing field를 만든다. ( C# 컴파일러가 만들어내는 실제 backing field 이름은 이것과 다르다 )2. 'get_propertyName' 이름을 가지는 getter 메소드를 만든다. 메소드가 MethodAttributes.SpecialName 속성을 가지는것을 기억하자.3. 'set_propertyName' 이름을 가지는 setter 메소드를 만든다. setter는 1개의 파라미터를 가진다. (value) 더보기 [MSIL] beforefieldinit beforefieldinit는 타입이 초기화(정적 생성자, cctor)되는 시점을 슈퍼-레이지하게 만들어준다. 슈퍼 레이지하다는것은, 스태틱 메소드중에 필드에 접근하지 않는 애는 호출이 되어도 초기화를 스킵한다는 뜻이다. 위 코드에서 PrintHello는 그냥 HelloWorld만 출력한다. 반면에 PrintHelloWithField는 HelloWorld를 찍은 뒤, 굳이 필드에 일부러 접근하는 동작을 가진다. 마지막으로 정적 생성자가 호출되는 시점을 알 수 있도록 CCTOR라는 메세지를 출력하도록 했다. 위의 코드를 실행하면 단순히 HelloWorld가 출력되는 모습을 볼 수 있는데, 이는 Foo 클래스는 beforefieldinit 속성을 가지고있기 때문에 PrintHello를 불러도 정적 생성자가 .. 더보기 [MSIL] for loop 첫번째 인자로 넘어온 int 숫자만큼 반복하는 메소드그냥 x86 어셈블리 지식을 더듬어 혼자 짠 코드라, 제대로된 C# 컴파일러가 빌드하는 코드와는 다를 수 있다. 더보기 이전 1 ··· 6 7 8 9 10 11 다음