본문 바로가기

프로그래밍 기술 노트

(88)
[함수형 아키텍쳐] Functional Design and Architecture 1장 소프트웨어 디자인은 무엇인가? 작성중 본 글은 https://github.com/graninas/Functional-Design-and-Architecture 을 학습하면서 정리한 글 입니다. 필자 함수형 언어와 패러다임을 나름 오랜시간 공부하고 있다 그러나 이를 실제로 활용하여 프로젝트를 진행한 경험은 없다. 람다, 고차함수 더 나아가 모나드 등을 공부하면서도 이를 실제 프로젝트에 어떻게 적용해야하는지 모르고있다. C# 에서 For 문 대신 LINQ 를 더 사용하고 Stateful 한 상황을 제거하려고 노력하고있지만 구조와 사고를 함수적으로 하는것이 아닌, 아주 지역적인 부분에서만 적용하고있다고 느낀다. 이를 극복하고 보다 FP 다운 코드를 작성하고자 공부할 자료를 찾던중 [Functional Design and Architectu..
git 추적중지 https://stackoverflow.com/questions/17195861/undo-git-update-index-assume-unchanged-file Undo git update-index --assume-unchanged The way you Git ignore watching/tracking a particular dir/file. you just run this: git update-index --assume-unchanged Now how do you undo it so they are watched again? (Let's call i... stackoverflow.com git에서 ignore 에 지금 추가하기는 싫은데 변경사항 목록에 안떴으면 하는경우 특정파일에 대한 추적을 중지하고..
su 와 su - 의 차이 이것때문에 헛고생했다;; 리눅스에서 유저변경을 위하여 su (substitute user) 를 사용하는데 로그아웃하지않고 해당 유저 권한을 얻게된다. 이때 환경변수는 기존 유저의 환경변수를 그대로 따르기 때문에 유저별로 환경변수가 차이가 있는경우 --login (-l) 옵션 을 주어야한다. 이때 -l 도 쓸필요 없이 그냥 - (마이너스 기호) 만 붙여줘도 똑같이 작동한다. su user1 (기존 환경변수) su - user1 (user1의 환경변수)
[Visual Studio] 현재 파일 솔루션탐색기에서 확인하기 해당 버튼을 누르면 현재 보고있는 파일을 솔루션 탐색기 에서 찾아준다. 옵션-프로젝트 및 솔루션-일반 에서 솔루션 탐색기에서 활성화된 항목 추적을 체크하면 현재 보고있는 파일을 솔루션 탐색기에서 항상 추적한다.
속성기반 테스팅 [property based testing] 프로그래머는 모듈 혹은 함수를 만들면 유닛 테스트 (단위 테스트) 를 진행한다. 테스트는 해당 함수가 정상적으로 동작하는지를 테스트 하는것이다. 함수가 정상적으로 동작하는 것을 보장 및 확인하는것은 프로그래머에게 아주 중요하기 때문에 테스트는 아주 중요한 작업이다. 테스트는 참 중요하기 때문에 TDD 라는 테스트를 먼저 만들고 해당 테스트를 통과하는 함수를 제작하는 방법론까지 존재한다. 일반적으로 단위테스트를 하는 방법은 다음과 같다. 1. 인풋과 아웃풋을 계산함. 2. 함수가 해당 인풋을 받을때 함수의 아웃풋이 정상적인지 확인. 예를들어 두 값을 더하는 함수를 만들었다고 해보자. public static class Calc { public static int Add(int x, int y) { retu..
[Functional Study] Poker Game https://github.com/Lee-WonJun/FP-Seminar/blob/master/Tutorial/Poker/clojure/poker.clj Lee-WonJun/FP-Seminar Contribute to Lee-WonJun/FP-Seminar development by creating an account on GitHub. github.com F# 으로 짠것을 clojure로 포팅. 그나저나 clojure에서 match 매크로를쓸때 vscode + clava 에서 문법틀렷다고 빨간줄이뜨는디.. IntelliJ + Cursive 로 넘어가야되나..
[Functional Study] Poker Game https://github.com/Lee-WonJun/FP-Seminar/blob/master/Tutorial/ConcentrationGame/F%23/Program-leewonjun.fs Lee-WonJun/FP-Seminar Contribute to Lee-WonJun/FP-Seminar development by creating an account on GitHub. github.com 포커로직을 F# 으로 구현 패턴매칭만 엄청쓴듯하다. 테스트를 Repl 로만 대충 해봐서 어딘가 잘못된 로직이 있을수도.. 원래는게임까지 구현하려고 턴마다 한장씩 나눠주는 것을 구현했는데 생각해보니까 5장 미리 나눠주고 UI 상에서만 안뿌리면 되는거 같아서.. 지웠다..
Clojure 에서 모나드는 필요없다? https://grishaev.me/en/no-monads/ I will never let monads be in a Clojure project Sounds a bit aggressive, doesn’t it? Well, let me explain. Monads are fine while you’re playing with them in Haskell. But don’t bring them to Clojure. They are completely foreign beings to Clojure ecosystem. Besides the technical issues, there is a problem grishaev.me Clojure에서도 monad 라이브러리가 있긴하지만.. 위 글에서는 하스켈에서 모나..