오늘 자기 전에 Hollo 설치하자!

박준규
@curry@hackers.pub · 271 following · 128 followers
darcs hub
- hub.darcs.net/vincent
Hackage
- hackage.haskell.org/user/JoonkyuPark
Hollo 설치했습니다! 핸들은 @hollo
오늘 자기 전에 Hollo 설치하자!
액티비티퍼브에 Place
가 있어서 사람들이 위치 공유도 하고 장소에 ‘좋아요’도 누르듯이 Book
도 있으면 재밌겠다. 사람들이 좋아하는 책에 ‘좋아요’도 누르고 서로 연결도 시켜주고!
액티비티퍼브에 Place
가 있어서 사람들이 위치 공유도 하고 장소에 ‘좋아요’도 누르듯이 Book
도 있으면 재밌겠다. 사람들이 좋아하는 책에 ‘좋아요’도 누르고 서로 연결도 시켜주고!
멘티를 서울숲하스켈에 보냈었는데, 거기갔다 왔더니 이제 JS 코드짤때 커링을 알아서 잘 활용한다. 사실 내가 그분께 주는 피드백이 '좀더 함수형으로 짜라' 이상도 이하도 아닌데(이거 들키면 안됨), 방법을 하나하나 가르치려니 너무 피곤해서 하스켈을 배우게 시켰다. 리턴 확실하구만.
@bglbgl gwyng 이 글은 하스켈 학교에 공유하면 안 되겠군요!(들키니까)
이런 용어집도 있었구나! 이거 설마 예전에 봤던 neo4j 책에서도 이 용어집을 참고했으려나!
액티비티퍼브에서 Hashtag
뿐만 아니라 Mention
도 tag
구나!
갑자기 파서 콤비네이터가 만글고 싶어졌다
@joonnotnotJoon 파서 콤비네이터 하면 하스켈이죠!
@hongminhee洪 民憙 (Hong Minhee) Hollo를 사용하려고 합니다. 오라클 클라우드의 S3 호환 오브젝트 스토리지도 Hollo가 지원하나요?
@hongminhee洪 民憙 (Hong Minhee) 찾아보니 될 것 같습니다!
@hongminhee洪 民憙 (Hong Minhee) Hollo를 사용하려고 합니다. 오라클 클라우드의 S3 호환 오브젝트 스토리지도 Hollo가 지원하나요?
@curry박준규 아덕분에 중요한걸 깨달았습니다.
@bglbgl gwyng 어떤 깨달음을 얻으셨나요!
@hongminhee洪 民憙 (Hong Minhee) 하⋯ Hollo 설치하러 갑니다! 우선 도메인을 사야겠군요.
@hongminhee洪 民憙 (Hong Minhee) 도메인 이름 고르는 게 너무 어렵네요!😵
@curry박준규 아, Mastodon에서
<svg>
태그를 지워버리니까 그렇겠네요. (Hollo에서는 Phanpy를 써도 도표가 표시됩니다!)
@hongminhee洪 民憙 (Hong Minhee) 하⋯ Hollo 설치하러 갑니다! 우선 도메인을 사야겠군요.
@curry박준규 좋아요가 없어서 하트 찍어드렸습니다.
그나저나, 도표는 이미지로 첨부하지 않더라도 Hackers' Pub 자체 기능으로도 그릴 수 있어요!
@hongminhee洪 民憙 (Hong Minhee) 네, 그렇긴 한데 graphviz를 직접 적으면 팬피에서는 이미지 표시가 안 되더라고요!
저는 소셜 서비스의 핵심이 ‘좋아요(Like
)’라고 생각합니다. 저는 제가 페이스북에서 처음으로 ‘좋아요’를 많이 받아서 너무 신났던 감정을 잊을 수 없습니다. 그리고 저는 지금도 ‘좋아요’의 노예⋯(사람들은 그런 너를 관종이라고 부른단다.)
@curry박준규 아, 그리고 오늘 마침 이런 게 떴네요.
@hongminhee洪 民憙 (Hong Minhee) 안 그래도 Evan Prodromou 님이 쓴 책을 읽다가 든 생각을 적은 것인데 신기하네요!
액티비티 퍼브를 구현한 지도앱 같은 게 있나요?
액티비티 퍼브에 Place
타입이 아마도 트위터나 페이스북에서 글을 쓸 때 현재 위치를 남기는 용도인 것 같은데 장소에도 Like
를 하면 재밌을 것 같은데 생각해보니 페이스북에 이미 있는 것 같다.
액티비티 퍼브를 구현한 지도앱 같은 게 있나요?
어디 RFC 문서 의존 관계 정리된 거 없나요?
엔드포인트 솔루션이나 네트워크 장비를 운영하다 보면 그 솔루션 본연의 역할을 지고지순(?) 하게 지키기보다는 뭔가 민원을 해결하는 예외 처리에 리소스를 투입할 때가 많은데 그럴 때마다 뭔가 법을 어긴 것 같고 마음이 안 좋다.
@curry박준규 이제 잘 될 겁니다!
@parameterfreak 님 어서 오세요!
@hongminhee洪 民憙 (Hong Minhee)
@parameterfreak 이분 계정이 다른 연합(우리.인생)에서 검색이 안 됩니다.
유심을 교체했다.
논리와 low-level data representation을 다뤄볼지, 아니면 함수형 추상 기계들(Turing Machine같은 것이지만 함수형을 위한 것들)을 다뤄볼지
@ailrunAilrun (UTC-5/-4) 저는 둘 다 궁금합니다.😀
https://gitlab.haskell.org/ghc/ghc/-/wikis/migration/9.6#superclass-expansion-is-more-conservative
내가 9.4 -> 9.6 마이그레이션에서 겪고 있는 문제가 이거랑 관련이 있는거 같은데(확실치 않음)... 9.4에서는 c :: Type -> Constraint
일때 forall c. c Int
뭐 이런 조건이 있으면, 모든 c
에 대해 c Int
가 존재하는게 말이 안되는데도 실제로 c Int
꼴로 쓰이는 c
만 고려해서 타입체크를 통과시켜줬던거 같다(이것도 확실하지 않음). 근데 9.6에선 당연히 거부당한다.
위의 내 이해가 맞다면 9.4의 constraint solving 완전 무근본이었단건데, 이건 또 믿기 어렵다(하스켈의 설계 결정에 대한 신뢰 유지한다고 하면). 어디서 내가 잘못 파악한거지.
@bglbgl gwyng 어떤 코드에서 어떤 에러가 나나요?
책 읽다가 생소한 게 나와서 적어 본다.
패키지 attoparsec
에 있는 함수 parseOnly
는 청크 한 개만 다룰 수 있고 나머지 청크는 버린다. 이러면 스트림 데이터를 읽을 수가 없다. 이때 모듈 Data.Attoparsec.ByteString.Run
에 있는 다음 도구를 사용하면 된다.
parseAndRestore :: Monad m =>
RestorableInput m ByteString -> Parser a -> m (Either ParseError a)
data RestorbleInput m i = RestorableInput
(m i) -- ^ Get the next chunk of input, or an empty string if there is no more
(i -> m ()) -- ^ Push a nonempty chunk of input back to the input stream
newRestorableIO
:: IO i -- ^ Get the next chunk of input, or an empty string if there is no more
-> IO (RestorableInput IO i)
RestorableInput IO ByteString
은 ByteString
청크 스트림을 표현한다. 이게 일종의 가변 상태를 가지고 있다. 이 가변 상태가 있기 때문에 앞에서 읽었지만 소모되지 않은 청크를 버리지 않고 입력에 다시 넣는 방식을 쓰는 것 같다.
이런 방식을 Incremental parsing이라고 하는 것 같다.
그냥 커피랑 간식만 먹다가 왔다. package.yaml 잘못 수정한거랑 constructor import 빼먹은거 고쳐드린게 전부.
RE: https://hackers.pub/@bgl/01965764-69ba-7e46-934f-ab8450c2486c
@bglbgl gwyng 몰래 Nix 영업은 안 하셨나요?
이제 서울하스켈숲 세미나 조교하러 간다
@bglbgl gwyng 고생이 많으십니다! 세미나는 어떤가요?
와, 이번 장에서는 ExceptT
모나드 트랜스포머를 알려준다! 크리스와 줄리 선생님 필력만 믿습니다.
https://hackage-content.haskell.org/package/transformers-0.6.2.0/docs/Control-Monad-Trans-Except.html
역시 애플리케이션 만드는 것보다 라이브러리 만드는 게 더 재밌는 것 같다. 다들 이럴까, 내가 유독 그런 걸까?
@hongminhee洪 民憙 (Hong Minhee) 애플리케이션은 UI 때문에⋯
거의 15년 전에 야심 넘치게 Benjamin C. Pierce의 Types and Programming Languages를 한 권 장만했지만 아직도 아주 깨끗하다. 앞으로도 읽을 일이 없을 것 같다… ㅋㅋㅋ
@hongminhee洪 民憙 (Hong Minhee) 앗, 전설의(?) 책 tapl을 갖고 계시다니! 저는 그 책 너무 비싸서 도서관에서 잠깐 열람만 했었어요.
하스켈 패키지 서버 에러 나서 라이브러리 문서를 못보니까 코딩을 못하네!
모든 파싱 라이브러리가 스트리밍을 지원하는 건 아니구나. Attoparsec은 스트리밍 데이터를 파싱할 수 있다고 한다. https://hackage.haskell.org/package/attoparsec
For my library and CLI projects, I've been writing documentation before writing any code. It helps me imagine the final interface early on, which usually leads to better design. Sure, sometimes I miss implementation details and have to revise later, but hey—it's just docs. Docs are easy to change.
This tiny habit has surprisingly big payoffs. When I focus on how things will be used rather than how they'll be built, I end up with interfaces that actually make sense.
Anyone else do this? Curious about your experience with documentation-first approaches.
RE: https://hollo.social/@hongminhee/01964c76-ef1e-7994-b3f0-57f967742566
@hongminhee洪 民憙 (Hong Minhee) Document Driven Development!
어제는 결국 그냥 잤다… ㅋㅋㅋ
@hongminhee洪 民憙 (Hong Minhee) 잘하셨습니다! 휴식이 중요하죠. 왠지 인기 웹툰의 독자가 댓글로 작가를 응원하는 마음으로 민희 님의 건강을 응원하게 됩니다.
책 제목에 포함되어 있는 단어이자 패키지 이름인 pipes
가 도대체 뭐하는 건지 감이 안 잡혔는데 드디어 해당 챕터에 돌입했다. 대충 보니 스트리밍 데이터를 처리하는 패키지인 것 같다. 라이브러리 제작자가 가브리엘라 님이라니!
‘스트리밍’이라는 단어를 많이 들어보고 많이 써왔는데 정확한 의미는 뭔지 몰랐다. 스트리밍은 큰 데이터를 잘라서 전달하는 것을 의미하는 것 같다.
ChatGPT도 루비 태그를 지원하면 좋겠다!
@bglbgl gwyng miniKanren이라는 게 있고 다른 언어로 여러 구현체가 있나 봅니다. kanren은 일본어 関連의 발음을 영어로 적은 거네요. 공교롭게 하스켈 커뮤니티에서도 최근 typedKanren을 다룬 글이 있길래 잠깐 찾아봤습니다.
https://discourse.haskell.org/t/the-haskell-unfolder-episode-42-logic-programming-with-typedkanren/11869
책에 나온 예제를 따라 하는데 결과가 책과 달라 이상했다. 코드를 한참 보다가 결국 원인을 찾았다. if 분기의 결과를 반대로 적었던 것이다.
repeatUntil
:: Monad m
=> m chunk
-> (chunk -> Bool)
-> (chunk -> m ())
-> m ()
repeatUntil getChunk isEnd f =
repeatUntilNothing getChunkMaybe f
where
getChunkMaybe = do
chunk <- getChunk
if isEnd chunk
then return (Just chunk)
else return Nothing
청크가 없으면 Nothing
을 리턴해야 하는데 반대로 적어버린 것이다. 덕분에 시간이 모자라서 남은 연습 문제 하나는 내일로 미뤄야겠다.
오늘 읽을 챕터 제목은 ‘스트리밍(Streaming)’이다. 서두에 이런 말이 나온다.
No one ever steps in the same stream twice, for it is not the same stream and they are not the same person.
ChatGPT에게 저게 유명한 말인지 물었더니 다음과 같이 대답했다.
https://chatgpt.com/share/6800e63e-07b4-800c-b32b-fef1723ef5c5
“판타 레이”가 여기서 나온 말이구나. 나는 이 말을 웹툰 “덴마”에서 처음 봤다. 무슨 뜻인지도 모르고 봤네.
.o0(그냥 이거 튜링의사과 대관하면 되겠네)
@kodingwarriorJaeyeol Lee (a.k.a. kodingwarrior)
《오픈소스로 미래를 연마하라》(인사이트, 2019)에 고민하시는 내용이 일부 소개되어 있는 거 같습니다. 특히 181쪽에 나오는 ‘콘퍼런스나 모임에서 대처 팁’이 도움이 될 것 같아요.
책 한 챕터 다 읽었다. stm
패키지에서 제공하는 기능이 많지만 여기서는 TVar
만 쓸 줄 알면 돼서 분량이 많지 않네. 다음과 같은 형식으로 웹사이트 방문자 카운터를 구현할 수 있다.
countingServer :: IO ()
countingServer = do
hitCounter <- atomically (newTVar @Natural 0)
serve @IO HostAny "8000" \(s, _) -> do
count <- atomically (increment hitCounter)
sendResponse s (textOk (countHelloText count))
increment :: TVar Natural -> STM Natural
increment hitCounter = do
oldCount <- readTVar hitCounter
let newCount = oldCount + 1
writeTVar hitCounter newCount
return newCount
ChatGPT에 문제가 생긴 것 같다. 접속이 안 되네.
이제 된다.
ChatGPT에 문제가 생긴 것 같다. 접속이 안 되네.
놀라서 전파하긴 했는데 살펴보니 어떤 분은 ‘아직 모른다’라고 하시는 분도 있네요. 구체적이고 정확한 후속 보도를 아시는 분은 공유를 부탁드립니다. 저도 확인해보겠습니다.

CISA extends funding to ensure 'no lapse in critical CVE services'
CISA says the U.S. government has extended funding to ensure no continuity issues with the critical Common Vulnerabilities and Exposures (CVE) program.
www.bleepingcomputer.com · BleepingComputer
Link author: Sergiu Gatlan@serghei@mastodon.social