본문 바로가기

프로그래밍 언어 노트

(87)
[F#/C#] Native Dll Load 하기 C# 에서 C++ Dll 이야 다들 많이 사용하기때문에 docs.microsoft.com/ko-kr/dotnet/framework/interop/consuming-unmanaged-dll-functions 관리되지 않는 DLL 함수 사용 관리 코드에서 DLL 라이브러리에 구현된 관리되지 않는 함수를 호출할 수 있도록 하는 플랫폼 호출 서비스를 사용하여 관리되지 않는 DLL 함수를 사용합니다. docs.microsoft.com 해당 파트를 보면 C#/ VB/ C++ 에 대한 설명이 나오는데 어이없게 F#만 설명이 쏙 빠져있다.. C# 이든 F# 이든 DllImportAttribute 를 사용하는거는 똑같으니까 똑같이 사용하면 되긴하는데.. 고거 한줄 추가하는게 뭐가 어렵다고 빼놓았는지 모르겠다.. F# 에..
[F#/C#] 닷넷 프레임워크 F#프로젝트 C#에서 참조하기 내 기억에는 분명 vs 2015 에서 는 참조만 걸면 됫는데 vs2019 문제인지 안된다 (닷넷 코어 버전은 참조만 걸면된다, 닷넷 프레임워크도 어쩔때는 참조만 걸어도 된다...) 요렇게 F# (클래스라이브러리, 닷넷 프레임워크 4.6 버전) C# (WPF, 닷넷 프레임워크 4.6 버전) 이 존재하고 F# 라이브러리를 C# 에서 쓰기위해서 참조를 걸면 이런 오류가뜰때가 있다. 이래서 뭐 바인딩 자동생성이나, 이것저것 다 해봣는데 망할 될때도 있고 안될때도 있고 ㅡㅡ 암튼 이렇다면 C# 의 Nuget 설정으로가서 Fsharp 을 다운받아주면된다.. ps. 이것저것해보다 된거라 이게 맞는 해결방법인지는 모름.. ps. 솔루션 자체를 만들때 F# 닷넷 프레임워크 라이브러리 부터 만들면 발생하지 않는거 같기도...
[Clojure] clojure to xlsx (Excel) github.com/mjul/docjure mjul/docjure Read and write Office documents from Clojure. Contribute to mjul/docjure development by creating an account on GitHub. github.com OpenXML 를 지원하는 Java API 인 org.apache.poi 을 clojure에서 아주 편하게 쓸수있게 해주는 라이브러리 간단한 사용 예제 (use 'dk.ative.docjure.spreadsheet) ;; Create a spreadsheet and save it (let [wb (create-workbook "Price List" [["Name" "Price"] ["Foo Widget" 100..
[Clojure] Clojure 웹 드라이버 API (wait-visible {:fn/text "고객센터"}) github.com/igrishaev/etaoin igrishaev/etaoin Pure Clojure Webdriver protocol implementation. Contribute to igrishaev/etaoin development by creating an account on GitHub. github.com 쉽게 말하면 셀레니움 같은거이다. clojure 에서 쉽게 webdriver 를 사용할수있는 라이브러리 간단하게 사용법을 살펴보면 드라이버 설정 (def driver (chrome)); chrome 사용 (def driver (chrome-headless)) ;headless (def driver (chrome-headless ..
[PS/Clojure] HackerRand - Algorithms - Construct the Array DP 를 사용하는 Sherlock and CostConstruct the Array 오랜만에 아무 힌트없이 풀었다 크흠... Construct the Array | HackerRank Find the number of ways to construct the array such that consecutive positions contain different values. www.hackerrank.com Lee-WonJun/ProblemSolving 알고리즘 세미나 . Contribute to Lee-WonJun/ProblemSolving development by creating an account on GitHub. github.com (defn exp [x n] (reduce * (repeat n x..
[F#] C# to F#, troubleshooting 마이너의 숙명... 자료가없다! 라이브러리도 없다! (있지만 찾기가 어렵다!) 여튼 F# 은 같은 닷넷으로 C# 라이브러리를 사용할수있는데 다른 패러다임을 가진 언어의 라이브러리를 가져다쓸때 여러가지 트러블슈팅이 발생한다.. 1. 형변환 F# 에서는 :> (= upcast) 와 :?> (= downcast) 로 형변환을 한다. C# 함수를 사용할떄에는 파라미터의 형을 변환해주어서 넘겨주는것이 좋다. data.Append(anchor);// C# data.Append(anchor:>element) // F# 무조건 형을 지정해줘야하는것은 아닌데.. C# 에서 오버로딩된경우 몇몇동작에서 정상적으로 안돌아가더라.., 아마 위에서 추론된 타입형식과 달라서 생기는 문제같다. 처음부터 명시적으로 지정하면 상관없을것..
[C#/WPF] ObservableCollection, List 간의 변환 WPF 에서 ListBox, ListView등에 List 을 ItemSource 로 사용하거나 바인딩 하여 사용하는 경우가 많다. 그러나 일반적인 List 의 경우 변경된 List의 내용을 UI 에서 실시간으로 반영하지 않는다. 코드비하인드인경우는 이벤트콜백, MVVM 과 같은경우는 ICommand 등으로 실행되는것이 아니면 바로 반영되지 않고 Invoke 나 BackgroundWalker를 사용하거나 뭐 그래야하는데.. Obserable Colletion의 경우 옵저버 패턴이 적용되어 바뀌면 알아서 UI 에 반영된다. ObservableCollection 클래스 ObservableCollection 클래스 (System.Collections.ObjectModel) 항목이 추가 또는 제거되거나 전체 목록..
[C#] 공변성(Covariance)과 반 공변성(Contravariance ) 객체지향의 원칙중 하나인 LSP (리스코프 치환 원칙) 의 위키백과에는 아래와 같은 내용이 존재한다. 리스코프의 원칙은 새로운 객체 지향 프로그래밍 언어에 채용된 시그니처에 관한 몇 가지 표준적인 요구사항을 강제한다. 하위형에서 메서드 인수의 반공변성 하위형에서 반환형의 공변성 하위형에서 메서드는 상위형 메서드에서 던져진 예외의 하위형을 제외하고 새로운 예외를 던지면 안된다. 핵심단어는 공변성과 반공변성이다. 공변성(Covariance) Animal 클래스를 상속받은 Dog 클래스가 있다. Animal 과 Dog은 상속관계이므로 Animal animal = new Dog(); 이 가능하다. 그럼 IEnumerable animals = new List(); 은 가능할까? 정답은 가능하다. 그리고 자연스럽게..