Skip to content

Instantly share code, notes, and snippets.

@jngbng
jngbng / logic.clj
Created September 26, 2021 08:22
logic programming 2 (feat. 문제적 남자)
(ns core-logic.core
(:require [clojure.core.logic :as logic]
[clojure.core.logic.fd :as fd]))
;;; 출처: https://blog.taylorwood.io/2018/05/10/clojure-logic.html
(defn- productsumo
"Sigma (vars_i * denoms_i) = sum 을 만족하는가."
[vars denoms sum]
(logic/fresh [vhead vtail
@jngbng
jngbng / core.clj
Last active September 25, 2021 15:58
logic programming 1 (feat. 문제적 남자)
(ns core-logic.core
(:require [clojure.core.logic :as logic]
[clojure.core.logic.fd :as fd]))
;;; 현명한 딸 셋을 두 상인이 사과 90개를 가져와
;;; 첫째에게 50개, 둘째에게 30개, 셋째에게 10개를 주며
;;; 그것을 팔아오되 첫째가 만약 10개를 1원에 팔면
;;; 둘째, 셋째도 똑같이 10개를 1원에 팔아야 한다는 조건을 걸었다.
;;; 하지만 팔아서 번 돈은 셋이 모두 같아야 한다.
;;; 어떻게 해야 조건대로 팔 수 있을까?
@jngbng
jngbng / gist:f6c28ebec52d58f0734d1d56f83200c9
Created December 29, 2020 01:33
Git 삭제된 branch head 찾기
git fsck --full --no-reflogs --unreachable --lost-found | cut -d ' ' -f 3 | xargs -n 1 git log -n 1 --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
@jngbng
jngbng / jsonb_remove_keys.sql
Created February 20, 2019 03:46 — forked from yyscamper/jsonb_remove_keys.sql
PostgreSQL: Remove Multiple Keys From JSONB
CREATE OR REPLACE FUNCTION jsonb_remove_keys(
jdata JSONB,
keys TEXT[]
)
RETURNS JSONB AS $$
DECLARE
result JSONB;
len INT;
target TEXT;
@jngbng
jngbng / at_time_zone.sql
Created December 13, 2018 16:01
postgres 'at time zone' 동작
set timezone='Asia/Seoul';
show timezone;
SELECT '2018-12-01 00:00:00'::timestamp at time zone 'GMT';
SELECT (timestamp '2018-12-01 00:00:00') at time zone 'GMT';
-- 2018-12-01 09:00:00+09
SELECT '2018-12-01 00:00:00' at time zone 'GMT';
SELECT (date '2018-12-01') at time zone 'GMT';
SELECT '2018-12-01 00:00:00'::timestamp with time zone at time zone 'GMT';
@jngbng
jngbng / WriteBlockToDisk.cpp
Created December 15, 2017 16:35
bitcoin core write block to disk
// validation.cpp
/** Store block on disk. If dbp is non-nullptr, the file is known to already reside on disk */
static bool AcceptBlock(const std::shared_ptr<const CBlock>& pblock, CValidationState& state, const CChainParams& chainparams, CBlockIndex** ppindex, bool fRequested, const CDiskBlockPos* dbp, bool* fNewBlock)
{
// ...
// Header is valid/has work, merkle tree and segwit merkle tree are good...RELAY NOW
// (but if it does not build on our best tip, let the SendMessages loop relay it)
if (!IsInitialBlockDownload() && chainActive.Tip() == pindex->pprev)
GetMainSignals().NewPoWValidBlock(pindex, pblock);
@jngbng
jngbng / load_map_block_index.cpp
Created December 15, 2017 16:18
bitcoin core load mapBlcokIndex
// txdb.cpp
static const char DB_BLOCK_INDEX = 'b';
bool CBlockTreeDB::LoadBlockIndexGuts(const Consensus::Params& consensusParams, std::function<CBlockIndex*(const uint256&)> insertBlockIndex)
{
std::unique_ptr<CDBIterator> pcursor(NewIterator());
// Start from key b000...
pcursor->Seek(std::make_pair(DB_BLOCK_INDEX, uint256()));
@jngbng
jngbng / undo.cpp
Last active December 15, 2017 15:01
bitcoincore undo
/********************
* Do part
********************/
// undo.h
class CTxUndo
{
public:
// undo information for all txins // COMMENT: spent coin by txins
std::vector<Coin> vprevout;
@jngbng
jngbng / read_block.cpp
Created December 10, 2017 09:27
bitcoincore read block snippet
// rest.cpp
// will be called with http request /rest/block/[BLOCK_HASH_VALUE]
static bool rest_block(HTTPRequest* req, const std::string& strURIPart, bool showTxDetails)
{
// ...
uint256 hash; // will be parsed from `strURIPart`
CBlock block;
CBlockIndex* pblockindex = nullptr;
@jngbng
jngbng / serialize.cpp
Last active December 10, 2017 08:57
bitcoin serialize code snippet
// bitcoin core (0d7e0a328) serialize/deserialize.
// Stream s;
// CBlock block;
// s >> block;
// internal above code.
// Step1: operator overloading