VOTING POWER0.00%
DOWNVOTE POWER0.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS0.00%
Net Worth
0.000USD
STEEM
0.000STEEM
SBD
0.001SBD
Own SP
0.000SP
Detailed Balance
| STEEM | ||
| balance | 0.000STEEM | STEEM |
| market_balance | 0.000STEEM | STEEM |
| savings_balance | 0.000STEEM | STEEM |
| reward_steem_balance | 0.000STEEM | STEEM |
| STEEM POWER | ||
| Own SP | 0.000SP | SP |
| Delegated Out | 0.000SP | SP |
| Delegation In | 0.000SP | SP |
| Effective Power | 0.000SP | SP |
| Reward SP (pending) | 0.000SP | SP |
| SBD | ||
| sbd_balance | 0.001SBD | SBD |
| sbd_conversions | 0.000SBD | SBD |
| sbd_market_balance | 0.000SBD | SBD |
| savings_sbd_balance | 0.000SBD | SBD |
| reward_sbd_balance | 0.000SBD | SBD |
{
"balance": "0.000 STEEM",
"savings_balance": "0.000 STEEM",
"reward_steem_balance": "0.000 STEEM",
"vesting_shares": "0.000000 VESTS",
"delegated_vesting_shares": "0.000000 VESTS",
"received_vesting_shares": "0.000000 VESTS",
"sbd_balance": "0.001 SBD",
"savings_sbd_balance": "0.000 SBD",
"reward_sbd_balance": "0.000 SBD",
"conversions": []
}Account Info
| name | kylejo |
| id | 1173231 |
| rank | 1,899,689 |
| reputation | 13634656 |
| created | 2018-11-18T01:08:27 |
| recovery_account | ovnd-tx-3 |
| proxy | None |
| post_count | 1 |
| comment_count | 0 |
| lifetime_vote_count | 0 |
| witnesses_voted_for | 0 |
| last_post | 2018-11-18T05:13:27 |
| last_root_post | 2018-11-18T05:13:27 |
| last_vote_time | 1970-01-01T00:00:00 |
| proxied_vsf_votes | 0, 0, 0, 0 |
| can_vote | 1 |
| voting_power | 0 |
| delayed_votes | 0 |
| balance | 0.000 STEEM |
| savings_balance | 0.000 STEEM |
| sbd_balance | 0.001 SBD |
| savings_sbd_balance | 0.000 SBD |
| vesting_shares | 0.000000 VESTS |
| delegated_vesting_shares | 0.000000 VESTS |
| received_vesting_shares | 0.000000 VESTS |
| reward_vesting_balance | 0.000000 VESTS |
| vesting_balance | 0.000 STEEM |
| vesting_withdraw_rate | 0.000000 VESTS |
| next_vesting_withdrawal | 1969-12-31T23:59:59 |
| withdrawn | 0 |
| to_withdraw | 0 |
| withdraw_routes | 0 |
| savings_withdraw_requests | 0 |
| last_account_recovery | 1970-01-01T00:00:00 |
| reset_account | null |
| last_owner_update | 2018-11-18T01:12:42 |
| last_account_update | 2018-11-26T11:38:21 |
| mined | No |
| sbd_seconds | 0 |
| sbd_last_interest_payment | 1970-01-01T00:00:00 |
| savings_sbd_last_interest_payment | 1970-01-01T00:00:00 |
{
"active": {
"account_auths": [],
"key_auths": [
[
"STM6ZhNbtA9WsbAYMdPBDYMqAT2iJ4dCuyEgC3SUueJkMVSMXsMAE",
1
]
],
"weight_threshold": 1
},
"balance": "0.000 STEEM",
"can_vote": true,
"comment_count": 0,
"created": "2018-11-18T01:08:27",
"curation_rewards": 0,
"delegated_vesting_shares": "0.000000 VESTS",
"downvote_manabar": {
"current_mana": 0,
"last_update_time": 1542503307
},
"guest_bloggers": [],
"id": 1173231,
"json_metadata": "{\"profile\":{\"profile_image\":\"https://cdn.steemitimages.com/DQmb6PQJdeALortkihiiVbj9irtoPeCWAKJtYgE3Fn3cRCo/jo.png\",\"name\":\"Kyle.Jo\",\"location\":\"Korea, Seoul\",\"website\":\"https://jo-s.tistory.com\"}}",
"last_account_recovery": "1970-01-01T00:00:00",
"last_account_update": "2018-11-26T11:38:21",
"last_owner_update": "2018-11-18T01:12:42",
"last_post": "2018-11-18T05:13:27",
"last_root_post": "2018-11-18T05:13:27",
"last_vote_time": "1970-01-01T00:00:00",
"lifetime_vote_count": 0,
"market_history": [],
"memo_key": "STM8chLBTabL9gNXY5GM2vHyYpoSajDsR5S1V6BCrZ752qpn6Fv8y",
"mined": false,
"name": "kylejo",
"next_vesting_withdrawal": "1969-12-31T23:59:59",
"other_history": [],
"owner": {
"account_auths": [],
"key_auths": [
[
"STM6odPdwqByvVL537hX7Egrnj51HzozHkf6d8fZbRsK5jXHxqZxH",
1
]
],
"weight_threshold": 1
},
"pending_claimed_accounts": 0,
"post_bandwidth": 0,
"post_count": 1,
"post_history": [],
"posting": {
"account_auths": [
[
"busy.app",
1
]
],
"key_auths": [
[
"STM7e7t7dEc3JyGJqyjhDTpM9vJiutGMfifeL71Yf1pd6UiQNzdp3",
1
]
],
"weight_threshold": 1
},
"posting_json_metadata": "{\"profile\":{\"profile_image\":\"https://cdn.steemitimages.com/DQmb6PQJdeALortkihiiVbj9irtoPeCWAKJtYgE3Fn3cRCo/jo.png\",\"name\":\"Kyle.Jo\",\"location\":\"Korea, Seoul\",\"website\":\"https://jo-s.tistory.com\"}}",
"posting_rewards": 0,
"proxied_vsf_votes": [
0,
0,
0,
0
],
"proxy": "",
"received_vesting_shares": "0.000000 VESTS",
"recovery_account": "ovnd-tx-3",
"reputation": 13634656,
"reset_account": "null",
"reward_sbd_balance": "0.000 SBD",
"reward_steem_balance": "0.000 STEEM",
"reward_vesting_balance": "0.000000 VESTS",
"reward_vesting_steem": "0.000 STEEM",
"savings_balance": "0.000 STEEM",
"savings_sbd_balance": "0.000 SBD",
"savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
"savings_sbd_seconds": "0",
"savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
"savings_withdraw_requests": 0,
"sbd_balance": "0.001 SBD",
"sbd_last_interest_payment": "1970-01-01T00:00:00",
"sbd_seconds": "0",
"sbd_seconds_last_update": "2018-11-18T05:14:27",
"tags_usage": [],
"to_withdraw": 0,
"transfer_history": [],
"vesting_balance": "0.000 STEEM",
"vesting_shares": "0.000000 VESTS",
"vesting_withdraw_rate": "0.000000 VESTS",
"vote_history": [],
"voting_manabar": {
"current_mana": 0,
"last_update_time": 1542503307
},
"voting_power": 0,
"withdraw_routes": 0,
"withdrawn": 0,
"witness_votes": [],
"witnesses_voted_for": 0,
"rank": 1899689
}Withdraw Routes
| Incoming | Outgoing |
|---|---|
Empty | Empty |
{
"incoming": [],
"outgoing": []
}From Date
To Date
2019/11/18 02:22:12
2019/11/18 02:22:12
| author | steemitboard |
| body | Congratulations @kylejo! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@kylejo/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@kylejo) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=kylejo)_</sub> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes! |
| json metadata | {"image":["https://steemitboard.com/img/notify.png"]} |
| parent author | kylejo |
| parent permlink | jackal-the-boilerplate-library-for-django-rest-framework |
| permlink | steemitboard-notify-kylejo-20191118t022212000z |
| title | |
| Transaction Info | Block #38270265/Trx d445ab2ee6eb645c2d30cb2ccb87b86bb42b5cb0 |
View Raw JSON Data
{
"block": 38270265,
"op": [
"comment",
{
"author": "steemitboard",
"body": "Congratulations @kylejo! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@kylejo/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@kylejo) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=kylejo)_</sub>\n\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
"json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}",
"parent_author": "kylejo",
"parent_permlink": "jackal-the-boilerplate-library-for-django-rest-framework",
"permlink": "steemitboard-notify-kylejo-20191118t022212000z",
"title": ""
}
],
"op_in_trx": 0,
"timestamp": "2019-11-18T02:22:12",
"trx_id": "d445ab2ee6eb645c2d30cb2ccb87b86bb42b5cb0",
"trx_in_block": 23,
"virtual_op": 0
}kylejoupdated their account properties2018/11/26 11:38:21
kylejoupdated their account properties
2018/11/26 11:38:21
| account | kylejo |
| json metadata | {"profile":{"profile_image":"https://cdn.steemitimages.com/DQmb6PQJdeALortkihiiVbj9irtoPeCWAKJtYgE3Fn3cRCo/jo.png","name":"Kyle.Jo","location":"Korea, Seoul","website":"https://jo-s.tistory.com"}} |
| memo key | STM8chLBTabL9gNXY5GM2vHyYpoSajDsR5S1V6BCrZ752qpn6Fv8y |
| posting | {"account_auths":[["busy.app",1]],"key_auths":[["STM7e7t7dEc3JyGJqyjhDTpM9vJiutGMfifeL71Yf1pd6UiQNzdp3",1]],"weight_threshold":1} |
| Transaction Info | Block #28036912/Trx 6202c3087380d0d379403523fce951485fe43435 |
View Raw JSON Data
{
"block": 28036912,
"op": [
"account_update",
{
"account": "kylejo",
"json_metadata": "{\"profile\":{\"profile_image\":\"https://cdn.steemitimages.com/DQmb6PQJdeALortkihiiVbj9irtoPeCWAKJtYgE3Fn3cRCo/jo.png\",\"name\":\"Kyle.Jo\",\"location\":\"Korea, Seoul\",\"website\":\"https://jo-s.tistory.com\"}}",
"memo_key": "STM8chLBTabL9gNXY5GM2vHyYpoSajDsR5S1V6BCrZ752qpn6Fv8y",
"posting": {
"account_auths": [
[
"busy.app",
1
]
],
"key_auths": [
[
"STM7e7t7dEc3JyGJqyjhDTpM9vJiutGMfifeL71Yf1pd6UiQNzdp3",
1
]
],
"weight_threshold": 1
}
}
],
"op_in_trx": 0,
"timestamp": "2018-11-26T11:38:21",
"trx_id": "6202c3087380d0d379403523fce951485fe43435",
"trx_in_block": 8,
"virtual_op": 0
}commeagle10upvoted (100.00%) @kylejo / jackal-the-boilerplate-library-for-django-rest-framework2018/11/18 06:27:06
commeagle10upvoted (100.00%) @kylejo / jackal-the-boilerplate-library-for-django-rest-framework
2018/11/18 06:27:06
| author | kylejo |
| permlink | jackal-the-boilerplate-library-for-django-rest-framework |
| voter | commeagle10 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #27800398/Trx 8fd602a88c29428700019c0f9bc94602d72bbd17 |
View Raw JSON Data
{
"block": 27800398,
"op": [
"vote",
{
"author": "kylejo",
"permlink": "jackal-the-boilerplate-library-for-django-rest-framework",
"voter": "commeagle10",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2018-11-18T06:27:06",
"trx_id": "8fd602a88c29428700019c0f9bc94602d72bbd17",
"trx_in_block": 15,
"virtual_op": 0
}2018/11/18 05:21:03
2018/11/18 05:21:03
| author | pliton |
| body | 스팀잇에 오신것 을 환영합니다.^^<br>저는 krwhale이라는 아기고래와 코인시세 챗봇을 운영하고 있어요 :)<br> - <a href=https://steemit.com/krwhale/@krwhale/krwhale-v2018-08-15>아기고래에게 Voting 받는 법</a><br> - <a href=https://pf.kakao.com/_Miqxod>코인시세 챗봇</a><br>1주일 뒤 부터 유용하게 쓰실 수 있을 거에요~^^<br><br>그리고 암호화폐 관련 데일리 리포트도 작성하고 있으니 관심 있으시면 많은 구독 부탁드릴게요~<br> - <a href=https://steemit.com/created/pliton-coin>Pliton의 암호화폐 데일리 리포트</a> |
| json metadata | {"tags":["kr"]} |
| parent author | kylejo |
| parent permlink | jackal-the-boilerplate-library-for-django-rest-framework |
| permlink | re-kylejo-jackal-the-boilerplate-library-for-django-rest-framework-20181118t052103558z |
| title | |
| Transaction Info | Block #27799077/Trx d2653807b5357d13f1829fbbdf8ad167344b019f |
View Raw JSON Data
{
"block": 27799077,
"op": [
"comment",
{
"author": "pliton",
"body": "스팀잇에 오신것 을 환영합니다.^^<br>저는 krwhale이라는 아기고래와 코인시세 챗봇을 운영하고 있어요 :)<br> - <a href=https://steemit.com/krwhale/@krwhale/krwhale-v2018-08-15>아기고래에게 Voting 받는 법</a><br> - <a href=https://pf.kakao.com/_Miqxod>코인시세 챗봇</a><br>1주일 뒤 부터 유용하게 쓰실 수 있을 거에요~^^<br><br>그리고 암호화폐 관련 데일리 리포트도 작성하고 있으니 관심 있으시면 많은 구독 부탁드릴게요~<br> - <a href=https://steemit.com/created/pliton-coin>Pliton의 암호화폐 데일리 리포트</a>",
"json_metadata": "{\"tags\":[\"kr\"]}",
"parent_author": "kylejo",
"parent_permlink": "jackal-the-boilerplate-library-for-django-rest-framework",
"permlink": "re-kylejo-jackal-the-boilerplate-library-for-django-rest-framework-20181118t052103558z",
"title": ""
}
],
"op_in_trx": 0,
"timestamp": "2018-11-18T05:21:03",
"trx_id": "d2653807b5357d13f1829fbbdf8ad167344b019f",
"trx_in_block": 9,
"virtual_op": 0
}plitonupvoted (10.00%) @kylejo / jackal-the-boilerplate-library-for-django-rest-framework2018/11/18 05:21:00
plitonupvoted (10.00%) @kylejo / jackal-the-boilerplate-library-for-django-rest-framework
2018/11/18 05:21:00
| author | kylejo |
| permlink | jackal-the-boilerplate-library-for-django-rest-framework |
| voter | pliton |
| weight | 1000 (10.00%) |
| Transaction Info | Block #27799076/Trx b363b2c21add3550c226965d29e5ac097cd996d4 |
View Raw JSON Data
{
"block": 27799076,
"op": [
"vote",
{
"author": "kylejo",
"permlink": "jackal-the-boilerplate-library-for-django-rest-framework",
"voter": "pliton",
"weight": 1000
}
],
"op_in_trx": 0,
"timestamp": "2018-11-18T05:21:00",
"trx_id": "b363b2c21add3550c226965d29e5ac097cd996d4",
"trx_in_block": 21,
"virtual_op": 0
}2018/11/18 05:14:27
2018/11/18 05:14:27
| amount | 0.001 SBD |
| from | allaz |
| memo | Promote your post. Your post will be min. 10 resteemed with over 13000 followers and min. 25 Upvote Different account (5000 STEEM POWER). Your post will be more popular and you will find new friends. Send 0.5 SBD or STEEM to @allaz (post URL as memo ) Service Active. |
| to | kylejo |
| Transaction Info | Block #27798945/Trx bb3cba1557087d89603b6af10623c64c1dcbf88a |
View Raw JSON Data
{
"block": 27798945,
"op": [
"transfer",
{
"amount": "0.001 SBD",
"from": "allaz",
"memo": "Promote your post. Your post will be min. 10 resteemed with over 13000 followers and min. 25 Upvote Different account (5000 STEEM POWER). Your post will be more popular and you will find new friends. Send 0.5 SBD or STEEM to @allaz (post URL as memo ) Service Active.",
"to": "kylejo"
}
],
"op_in_trx": 0,
"timestamp": "2018-11-18T05:14:27",
"trx_id": "bb3cba1557087d89603b6af10623c64c1dcbf88a",
"trx_in_block": 14,
"virtual_op": 0
}kylejopublished a new post: jackal-the-boilerplate-library-for-django-rest-framework2018/11/18 05:13:27
kylejopublished a new post: jackal-the-boilerplate-library-for-django-rest-framework
2018/11/18 05:13:27
| author | kylejo |
| body | 개발자는 자신만의 프레임을 자신도 모르는 사이에 구축한다. 이는 실물적인 코드에 국한되는 것이 아니다. 개발자의 개발 패턴, 문제를 해결 패턴, 리팩토링 패턴 등의 다양한 패턴들이 모이고, 쌓이고, 누적되면서 하나의 틀로써 굳어지게 는 것이다. 프레임의 장점은 일관적인 생산성을 유지시켜준다. 개발자는 다양한 자신만의 프레임을 계속해서 만들어야 한다. 내게도 몇 가지 프레임이 있다. 효율성과 편의성, 합리성을 추구하는 것 역시 나의 프레임이다. 그렇기에 같은 작업을 반복하거나, 비효율적으로 처리한다는 느낌이 들면 잠시 멈춰서 생각을 한다. 더 나은 방법이 없을까 하고. 그러다 보니 생산성 향상을 위한 코드들이 쌓여가기 시작했다. Jackal 은 그런 코드들의 일부분을 정리한 결과물이다. Django, DRF, Celery 등에 비하면 크게 보잘것없는 코드 더미에 불과하지만, 나의 생산성 향상에 큰 도움을 주었다.  > 참고: 위 사진은 자칼이 아니라 늑대다. 근데 멋있으니 상관 없다. ## Jackal 간단 설명 Jackal은 Django와 DRF를 기반으로 개발을 하던 중 생긴 몇 가지 번거로우면서도 코드의 품질을 더럽히는 작업들을 단순화하고 효율화 시키다 보니 자연스럽게 만들어졌다. 다양한 프로젝트에서 Jackal을 사용하고 있지만, pypi로 관리되지 않아서 프로젝트마다 조금씩 변형되고 난잡해지기 시작했다. 그래서 흩어진 코드를 모아 Jackal 프로젝트를 구성하고, 범용성을 키워 패키징 하였다. 내가 직접 사용하면서 다양한 상황에 추가적으로 적용하기 위해서 커스터마이징이 용의 해야 했으며, Django의 settings 파일과 연동하기 위해서 DRF의 코드를 참조했다. Jackal의 핵심은 JackalAPIView 에 있다. JackalAPIView 는 DRF의 APIView 를 상속받아 그 기능을 확장한다. http request가 url resolver를 거쳐 view로 도달했을 때 APIView의 dispatch 함수가 실행된다. dispatch에서는 django의 원시 request 객체를 DRF에 맞춰 다듬고, 인증 체크, 권한 체크 등 view 가 실행되기 전에 처리해야 할 모든 작업을 실행한 뒤에, view 를 실행한다. JackalAPIView에선 dispatch, permission check, view 실행 등의 분기점마다 post, pre 메서드를 삽입하여 각 기능이 실행하기 전, 혹은 실행된 직후의 로직을 자유롭게 정의할 수 있다. 또한 get_object, get_filtered_queryset은 자칼의 QueryFilter와 연계되어 GET parameter를 기반으로 손쉬우면서도 직관적인 필터링을 제공한다. 필터링을 위해 난잡하게 코드를 칠 필요 없이 dictionary 형태로 filter_map 을 정의하기만 하면, 필터링이 알아서 진행된다. 위의 기능들 외에 다양한 Mixin View 가 존재하는데, 이 Mixin 은 상속 후 몇 가지 필드에 값만 할당하면 List, create, detail, update, delete, pagination list 등의 api 를 손쉽게 구현할 수 있다. 여담으로 Jackal 이란 이름은 라이브러리 자체가 이렇다 할 목적이 없고 두서가 없어서, django-filter 같은 이름을 지을 수가 없었다. 그래서 Django의 ja를 보고 자칼이 떠올라서 자칼이라 지었다. Jackal은 오픈소스로 Github에 공개되어있으며, pip를 이용하여 누구나 다운로드 가능하다. 코드에 문제가 있다면 Github에 issue 를 남기거나, pull request 를 날리면 된다. 문제점이 있다면, 문서화가 빈약하고, 테스트가 부족하다. 둘다 계속해서 진행 중이며, 아직은 0.0.x 대 버전으로 베타 배포 상태다. Github Repo: https://github.com/joyongjin/Jackal |
| json metadata | {"tags":["kr","kr-join","programming","python","django"],"image":["https://cdn.steemitimages.com/DQmancDghN3hR99DjMb7CYyJrFq79FdMHu5k6rS3yriEbEh/99DCCA405BE8E90E1D.jpg"],"links":["https://github.com/joyongjin/Jackal"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | kr |
| permlink | jackal-the-boilerplate-library-for-django-rest-framework |
| title | Jackal, the Boilerplate library for Django REST Framework |
| Transaction Info | Block #27798925/Trx f0fa3e20bf969ae9caa6d4348e35137f546cc8cb |
View Raw JSON Data
{
"block": 27798925,
"op": [
"comment",
{
"author": "kylejo",
"body": "개발자는 자신만의 프레임을 자신도 모르는 사이에 구축한다. 이는 실물적인 코드에 국한되는 것이 아니다. 개발자의 개발 패턴, 문제를 해결 패턴, 리팩토링 패턴 등의 다양한 패턴들이 모이고, 쌓이고, 누적되면서 하나의 틀로써 굳어지게 는 것이다. 프레임의 장점은 일관적인 생산성을 유지시켜준다. 개발자는 다양한 자신만의 프레임을 계속해서 만들어야 한다.\n\n 내게도 몇 가지 프레임이 있다. 효율성과 편의성, 합리성을 추구하는 것 역시 나의 프레임이다. 그렇기에 같은 작업을 반복하거나, 비효율적으로 처리한다는 느낌이 들면 잠시 멈춰서 생각을 한다. 더 나은 방법이 없을까 하고. 그러다 보니 생산성 향상을 위한 코드들이 쌓여가기 시작했다. Jackal 은 그런 코드들의 일부분을 정리한 결과물이다. Django, DRF, Celery 등에 비하면 크게 보잘것없는 코드 더미에 불과하지만, 나의 생산성 향상에 큰 도움을 주었다.\n\n\n\n\n\n\n\n> 참고: 위 사진은 자칼이 아니라 늑대다. 근데 멋있으니 상관 없다.\n\n\n## Jackal 간단 설명\n\n\nJackal은 Django와 DRF를 기반으로 개발을 하던 중 생긴 몇 가지 번거로우면서도 코드의 품질을 더럽히는 작업들을 단순화하고 효율화 시키다 보니 자연스럽게 만들어졌다.\n\n\n\n다양한 프로젝트에서 Jackal을 사용하고 있지만, pypi로 관리되지 않아서 프로젝트마다 조금씩 변형되고 난잡해지기 시작했다. 그래서 흩어진 코드를 모아 Jackal 프로젝트를 구성하고, 범용성을 키워 패키징 하였다. 내가 직접 사용하면서 다양한 상황에 추가적으로 적용하기 위해서 커스터마이징이 용의 해야 했으며, Django의 settings 파일과 연동하기 위해서 DRF의 코드를 참조했다.\n\n\n\nJackal의 핵심은 JackalAPIView 에 있다. JackalAPIView 는 DRF의 APIView 를 상속받아 그 기능을 확장한다.\n\n\n\nhttp request가 url resolver를 거쳐 view로 도달했을 때 APIView의 dispatch 함수가 실행된다. dispatch에서는 django의 원시 request 객체를 DRF에 맞춰 다듬고, 인증 체크, 권한 체크 등 view 가 실행되기 전에 처리해야 할 모든 작업을 실행한 뒤에, view 를 실행한다.\n\nJackalAPIView에선 dispatch, permission check, view 실행 등의 분기점마다 post, pre 메서드를 삽입하여 각 기능이 실행하기 전, 혹은 실행된 직후의 로직을 자유롭게 정의할 수 있다.\n\n\n\n또한 get_object, get_filtered_queryset은 자칼의 QueryFilter와 연계되어 GET parameter를 기반으로 손쉬우면서도 직관적인 필터링을 제공한다. 필터링을 위해 난잡하게 코드를 칠 필요 없이 dictionary 형태로 filter_map 을 정의하기만 하면, 필터링이 알아서 진행된다.\n\n\n\n위의 기능들 외에 다양한 Mixin View 가 존재하는데, 이 Mixin 은 상속 후 몇 가지 필드에 값만 할당하면 List, create, detail, update, delete, pagination list 등의 api 를 손쉽게 구현할 수 있다.\n\n\n\n여담으로 Jackal 이란 이름은 라이브러리 자체가 이렇다 할 목적이 없고 두서가 없어서, django-filter 같은 이름을 지을 수가 없었다. 그래서 Django의 ja를 보고 자칼이 떠올라서 자칼이라 지었다.\n\n\n\nJackal은 오픈소스로 Github에 공개되어있으며, pip를 이용하여 누구나 다운로드 가능하다. 코드에 문제가 있다면 Github에 issue 를 남기거나, pull request 를 날리면 된다. 문제점이 있다면, 문서화가 빈약하고, 테스트가 부족하다. 둘다 계속해서 진행 중이며, 아직은 0.0.x 대 버전으로 베타 배포 상태다.\n\n\n\nGithub Repo: https://github.com/joyongjin/Jackal",
"json_metadata": "{\"tags\":[\"kr\",\"kr-join\",\"programming\",\"python\",\"django\"],\"image\":[\"https://cdn.steemitimages.com/DQmancDghN3hR99DjMb7CYyJrFq79FdMHu5k6rS3yriEbEh/99DCCA405BE8E90E1D.jpg\"],\"links\":[\"https://github.com/joyongjin/Jackal\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "kr",
"permlink": "jackal-the-boilerplate-library-for-django-rest-framework",
"title": "Jackal, the Boilerplate library for Django REST Framework"
}
],
"op_in_trx": 0,
"timestamp": "2018-11-18T05:13:27",
"trx_id": "f0fa3e20bf969ae9caa6d4348e35137f546cc8cb",
"trx_in_block": 11,
"virtual_op": 0
}kylejoupdated their account properties2018/11/18 03:35:15
kylejoupdated their account properties
2018/11/18 03:35:15
| account | kylejo |
| json metadata | {"profile":{"profile_image":"https://cdn.steemitimages.com/DQmb6PQJdeALortkihiiVbj9irtoPeCWAKJtYgE3Fn3cRCo/jo.png","name":"Kyle.Jo","location":"Korea, Seoul","website":"https://jo-s.tistory.com"}} |
| memo key | STM8chLBTabL9gNXY5GM2vHyYpoSajDsR5S1V6BCrZ752qpn6Fv8y |
| Transaction Info | Block #27796961/Trx ca25129f109ce34fc0a7e1a7d836fa62be4e7c78 |
View Raw JSON Data
{
"block": 27796961,
"op": [
"account_update",
{
"account": "kylejo",
"json_metadata": "{\"profile\":{\"profile_image\":\"https://cdn.steemitimages.com/DQmb6PQJdeALortkihiiVbj9irtoPeCWAKJtYgE3Fn3cRCo/jo.png\",\"name\":\"Kyle.Jo\",\"location\":\"Korea, Seoul\",\"website\":\"https://jo-s.tistory.com\"}}",
"memo_key": "STM8chLBTabL9gNXY5GM2vHyYpoSajDsR5S1V6BCrZ752qpn6Fv8y"
}
],
"op_in_trx": 0,
"timestamp": "2018-11-18T03:35:15",
"trx_id": "ca25129f109ce34fc0a7e1a7d836fa62be4e7c78",
"trx_in_block": 10,
"virtual_op": 0
}kylejoupdated their account properties2018/11/18 01:12:42
kylejoupdated their account properties
2018/11/18 01:12:42
| account | kylejo |
| active | {"account_auths":[],"key_auths":[["STM6ZhNbtA9WsbAYMdPBDYMqAT2iJ4dCuyEgC3SUueJkMVSMXsMAE",1]],"weight_threshold":1} |
| json metadata | |
| memo key | STM8chLBTabL9gNXY5GM2vHyYpoSajDsR5S1V6BCrZ752qpn6Fv8y |
| owner | {"account_auths":[],"key_auths":[["STM6odPdwqByvVL537hX7Egrnj51HzozHkf6d8fZbRsK5jXHxqZxH",1]],"weight_threshold":1} |
| posting | {"account_auths":[],"key_auths":[["STM7e7t7dEc3JyGJqyjhDTpM9vJiutGMfifeL71Yf1pd6UiQNzdp3",1]],"weight_threshold":1} |
| Transaction Info | Block #27794111/Trx 62a99e367178a4c036b6e35f779ac741165a96ea |
View Raw JSON Data
{
"block": 27794111,
"op": [
"account_update",
{
"account": "kylejo",
"active": {
"account_auths": [],
"key_auths": [
[
"STM6ZhNbtA9WsbAYMdPBDYMqAT2iJ4dCuyEgC3SUueJkMVSMXsMAE",
1
]
],
"weight_threshold": 1
},
"json_metadata": "",
"memo_key": "STM8chLBTabL9gNXY5GM2vHyYpoSajDsR5S1V6BCrZ752qpn6Fv8y",
"owner": {
"account_auths": [],
"key_auths": [
[
"STM6odPdwqByvVL537hX7Egrnj51HzozHkf6d8fZbRsK5jXHxqZxH",
1
]
],
"weight_threshold": 1
},
"posting": {
"account_auths": [],
"key_auths": [
[
"STM7e7t7dEc3JyGJqyjhDTpM9vJiutGMfifeL71Yf1pd6UiQNzdp3",
1
]
],
"weight_threshold": 1
}
}
],
"op_in_trx": 0,
"timestamp": "2018-11-18T01:12:42",
"trx_id": "62a99e367178a4c036b6e35f779ac741165a96ea",
"trx_in_block": 13,
"virtual_op": 0
}2018/11/18 01:08:27
2018/11/18 01:08:27
| active | {"account_auths":[],"key_auths":[["STM8ae4k5Cdp3LcLtGXFeEWRjXidtyFPeD6mxY4dJurpg5DWm2VXy",1]],"weight_threshold":1} |
| creator | ovnd-tx-3 |
| fee | 3.000 STEEM |
| json metadata | |
| memo key | STM5oiJFFmVQpWx3LFnVY9hGoZy27ucid83FntzpPpbADwVwAn99R |
| new account name | kylejo |
| owner | {"account_auths":[],"key_auths":[["STM6NwdT5wVxKmcMWF9Wzp2wZEqVq7zctJEZGCjBcnSZfgsjm7eFJ",1]],"weight_threshold":1} |
| posting | {"account_auths":[],"key_auths":[["STM82eCwZKjnZ9wMbMJLdRrNa5SEjCwLMZebwnaw55ULxG83ugGNR",1]],"weight_threshold":1} |
| Transaction Info | Block #27794026/Trx 0b46fff1ad2cea7d4d139796dd98102718674664 |
View Raw JSON Data
{
"block": 27794026,
"op": [
"account_create",
{
"active": {
"account_auths": [],
"key_auths": [
[
"STM8ae4k5Cdp3LcLtGXFeEWRjXidtyFPeD6mxY4dJurpg5DWm2VXy",
1
]
],
"weight_threshold": 1
},
"creator": "ovnd-tx-3",
"fee": "3.000 STEEM",
"json_metadata": "",
"memo_key": "STM5oiJFFmVQpWx3LFnVY9hGoZy27ucid83FntzpPpbADwVwAn99R",
"new_account_name": "kylejo",
"owner": {
"account_auths": [],
"key_auths": [
[
"STM6NwdT5wVxKmcMWF9Wzp2wZEqVq7zctJEZGCjBcnSZfgsjm7eFJ",
1
]
],
"weight_threshold": 1
},
"posting": {
"account_auths": [],
"key_auths": [
[
"STM82eCwZKjnZ9wMbMJLdRrNa5SEjCwLMZebwnaw55ULxG83ugGNR",
1
]
],
"weight_threshold": 1
}
}
],
"op_in_trx": 0,
"timestamp": "2018-11-18T01:08:27",
"trx_id": "0b46fff1ad2cea7d4d139796dd98102718674664",
"trx_in_block": 8,
"virtual_op": 0
}Manabar
Voting Power0.00%
Downvote Power0.00%
Resource Credits100.00%
Reputation Progress0.00%
{
"voting_manabar": {
"current_mana": 0,
"last_update_time": 1542503307
},
"downvote_manabar": {
"current_mana": 0,
"last_update_time": 1542503307
},
"rc_account": {
"account": "kylejo",
"max_rc": "6044849957",
"max_rc_creation_adjustment": {
"amount": "6044849957",
"nai": "@@000000037",
"precision": 6
},
"rc_manabar": {
"current_mana": "5843831381",
"last_update_time": 1543232301
}
}
}Account Metadata
| POSTING JSON METADATA | |
| profile | {"profile_image":"https://cdn.steemitimages.com/DQmb6PQJdeALortkihiiVbj9irtoPeCWAKJtYgE3Fn3cRCo/jo.png","name":"Kyle.Jo","location":"Korea, Seoul","website":"https://jo-s.tistory.com"} |
| JSON METADATA | |
| profile | {"profile_image":"https://cdn.steemitimages.com/DQmb6PQJdeALortkihiiVbj9irtoPeCWAKJtYgE3Fn3cRCo/jo.png","name":"Kyle.Jo","location":"Korea, Seoul","website":"https://jo-s.tistory.com"} |
{
"posting_json_metadata": {
"profile": {
"profile_image": "https://cdn.steemitimages.com/DQmb6PQJdeALortkihiiVbj9irtoPeCWAKJtYgE3Fn3cRCo/jo.png",
"name": "Kyle.Jo",
"location": "Korea, Seoul",
"website": "https://jo-s.tistory.com"
}
},
"json_metadata": {
"profile": {
"profile_image": "https://cdn.steemitimages.com/DQmb6PQJdeALortkihiiVbj9irtoPeCWAKJtYgE3Fn3cRCo/jo.png",
"name": "Kyle.Jo",
"location": "Korea, Seoul",
"website": "https://jo-s.tistory.com"
}
}
}Auth Keys
Owner
Single Signature
Public Keys
STM6odPdwqByvVL537hX7Egrnj51HzozHkf6d8fZbRsK5jXHxqZxH1/1
Active
Single Signature
Public Keys
STM6ZhNbtA9WsbAYMdPBDYMqAT2iJ4dCuyEgC3SUueJkMVSMXsMAE1/1
Posting
Single Signature
Public Keys
STM7e7t7dEc3JyGJqyjhDTpM9vJiutGMfifeL71Yf1pd6UiQNzdp31/1
App Permissions
@busy.app1/1
Memo
STM8chLBTabL9gNXY5GM2vHyYpoSajDsR5S1V6BCrZ752qpn6Fv8y
{
"owner": {
"account_auths": [],
"key_auths": [
[
"STM6odPdwqByvVL537hX7Egrnj51HzozHkf6d8fZbRsK5jXHxqZxH",
1
]
],
"weight_threshold": 1
},
"active": {
"account_auths": [],
"key_auths": [
[
"STM6ZhNbtA9WsbAYMdPBDYMqAT2iJ4dCuyEgC3SUueJkMVSMXsMAE",
1
]
],
"weight_threshold": 1
},
"posting": {
"account_auths": [
[
"busy.app",
1
]
],
"key_auths": [
[
"STM7e7t7dEc3JyGJqyjhDTpM9vJiutGMfifeL71Yf1pd6UiQNzdp3",
1
]
],
"weight_threshold": 1
},
"memo": "STM8chLBTabL9gNXY5GM2vHyYpoSajDsR5S1V6BCrZ752qpn6Fv8y"
}Witness Votes
0 / 30
No active witness votes.
[]