-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
deploy: 8ede9a349aa594e2bfaa43ef7588ff914cbab3cc
- Loading branch information
0 parents
commit 042900f
Showing
294 changed files
with
19,295 additions
and
0 deletions.
There are no files selected for viewing
Empty file.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
<!doctype html><html> | ||
<head> | ||
<title> | ||
Buckets and SQLite | ||
</title> | ||
<link rel="shortcut icon" href=/img/favicon.png type=image/png> | ||
<link rel=stylesheet type=text/css href=/css/buckets.css> | ||
<meta name=viewport content="width=device-width,initial-scale=1"> | ||
<link rel=stylesheet type=text/css href=/css/buckets-blog.css> | ||
<link rel=alternate hreflang=es href=https://www.budgetwithbuckets.com/es/blog/2017/11/02/sqlite.html/> | ||
</head> | ||
<body> | ||
<div class=buckets-nav> | ||
<section> | ||
<a class=logo href=/> | ||
<img src=/img/logo.png> | ||
</a> | ||
<a href=/guide/>Guide</a> | ||
<a class=active href=/blog/>Blog</a> | ||
<a target=_blank href=https://github.com/buckets/application/blob/master/CHANGELOG.md>Changelog</a> | ||
<a target=_blank href=https://github.com/buckets/application/issues>Issue Tracker</a> | ||
</section> | ||
<section> | ||
<a class=download-button href=/download/> | ||
<img src=/images/download.svg width=15 height=15> | ||
Download | ||
</a> | ||
<a class=buy-button href=/buy/>Buy $49</a> | ||
</section> | ||
</div> | ||
<div class=wrapper> | ||
<div class=post> | ||
<header class=post-header> | ||
<div class=next-prev-links> | ||
<a class=next href=/blog/2017/11/07/ynab.html/>Next →</a> | ||
</div> | ||
<h1 class=blog-title>Buckets and SQLite</h1> | ||
<div style=text-align:center;margin-top:2rem><svg viewBox="0 0 600 15" xmlns="http://www.w3.org/2000/svg" style="max-width:800px"><rect x="20%" y="7" width="60%" height="1" fill="lightgrey" rx="2"/><rect class="rotate" x="50%" y="4" width="7" height="7" fill="#fff" stroke="lightgrey" stroke-width="1" rx="1"/></svg> | ||
</div> | ||
<p class=post-meta> | ||
Nov 2, 2017 | ||
• Matt | ||
</p> | ||
</header> | ||
<article class=post-content> | ||
<div style=text-align:center><img src=./bucketsandsqlite.png></div> | ||
<p>If you want programmatic access to your budget, here’s a secret: Buckets files are just SQLite databases.</p> | ||
<div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-text data-lang=text>$ sqlite3 Tutorial.buckets | ||
SQLite version 3.16.0 2016-11-04 19:09:39 | ||
Enter ".help" for usage hints. | ||
sqlite> select count(*) from account; | ||
3 | ||
</code></pre></div><p>You’re welcome to open up your budget files and even modify them. Just be sure to follow <a href=https://sqlite.org/faq.html#q5>all the normal SQLite concurrency tips.</a> The Buckets app includes the most current documentation about the file format (look in the Help menu).</p> | ||
<h2 id=example---how-much-is-in-the-bank>Example - How much is in the bank?<a class=anchor-link href=#example---how-much-is-in-the-bank>¶</a></h2> | ||
<p>On macOS or Linux, the <code>sqlite3</code> command line tool is likely already installed. Here’s a one line program that will tell you how much money you have in the bank. Remember that all amounts are stored as integers (hence the <code>printf</code> call):</p> | ||
<div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash>$ echo <span style=color:#e6db74>'SELECT printf("%.2f", sum(balance)/100.0) AS balance FROM account;'</span> <span style=color:#ae81ff>\ | ||
</span><span style=color:#ae81ff></span>| sqlite3 Tutorial.buckets | ||
4852.24 | ||
</code></pre></div><p>And if you find the transaction-importing functions of Buckets limited, you’re welcome to write your own using your favorite language’s SQLite library.</p> | ||
<p>Happy Budgeting!</p> | ||
</article> | ||
<div style=text-align:center;margin-top:2rem><svg viewBox="0 0 600 15" xmlns="http://www.w3.org/2000/svg" style="max-width:800px"><rect x="20%" y="7" width="60%" height="1" fill="lightgrey" rx="2"/><rect class="rotate" x="50%" y="4" width="7" height="7" fill="#fff" stroke="lightgrey" stroke-width="1" rx="1"/></svg> | ||
</div> | ||
<div class="next-prev-links close" style=margin-top:1rem> | ||
<a class=next href=/blog/2017/11/07/ynab.html/>Next →</a> | ||
</div> | ||
<h2 style=margin-top:2rem>Comments</h2> | ||
<div class=comment> | ||
<img src="https://www.gravatar.com/avatar/52ae7ab31fa301f58d43a03fe2dd2872?s=64"> | ||
<div> | ||
<div class=details> | ||
<div class=author>Martin</div> | ||
<div class=date>Tue May 8, 2018 2:44</div> | ||
</div> | ||
<div class=message>Thank you so much for this (staying open & standard in your file storage), it makes it a breeze to solve little problems along the way...</div> | ||
</div> | ||
</div> | ||
<div id=comment-form style=display:none> | ||
<a name=comment-form></a> | ||
<script>window.location.search.substr(1).indexOf('comment=submitted')!==-1&&document.write(`<div class="notification">Comment submitted! Your comment will be posted here after being reviewed.</div>`)</script> | ||
<script>function setCommentStatus(b,c){const a=document.getElementById('comment-notification');a.innerText=b,a.setAttribute('class',c),a.setAttribute('style','')}function submitComment(c){const b=document.getElementById('comment-submit');b.disabled=!0,setCommentStatus('Submitting...','notification'),c.preventDefault();const d=document.getElementById('comment-message').value,e=document.getElementById('comment-email').value,f=document.getElementById('comment-name').value,g=document.getElementById('comment-slug').value,h={comment:d,email:e,name:f,subdir:g};let a=new XMLHttpRequest;a.addEventListener('load',a=>{setCommentStatus('Comment submitted! Your comment will be posted here after being reviewed.','notification'),b.disabled=!1}),a.addEventListener('error',a=>{console.log('Error',a),setCommentStatus('Error submitting comment. If it continues not to work, please email us.','notification error'),b.disabled=!1}),a.open('POST','https://7nd5a97217.execute-api.us-east-1.amazonaws.com/default/GitHubJekyllComments'),a.send(JSON.stringify(h))}XMLHttpRequest&&document.getElementById('comment-form').setAttribute('style','')</script> | ||
<form method=post class=comment-form onsubmit="return submitComment(event),!1"> | ||
<input type=hidden id=comment-slug value=sqlite> | ||
<label>Name:<br><input id=comment-name type=text></label> | ||
<label>Email (optional—not displayed):<br><input id=comment-email type=email></label> | ||
<label>Message:</label> | ||
<textarea id=comment-message></textarea> | ||
<button type=submit id=comment-submit>Add comment</button> | ||
</form> | ||
<div id=comment-notification style=display:none></div> | ||
</div> | ||
<div class=mailing-list-main style=margin-top:2rem> | ||
<div class=mailing-list-title>Get these posts in your email, monthly:</div> | ||
<p> | ||
<link href=//cdn-images.mailchimp.com/embedcode/classic-10_7.css rel=stylesheet type=text/css> | ||
<style type=text/css>#mc_embed_signup{background:0 0;clear:left}#mc_embed_signup form{padding:0}#mc_embed_signup input{border-radius:3px}#mc_embed_signup input[type=submit]{background-color:#08c}</style> | ||
<div id=mc_embed_signup> | ||
<form action="https://bucketsisbetter.us8.list-manage.com/subscribe/post?u=bc109895c8df246ae54ad4d71&id=0960a6d05e" method=post id=mc-embedded-subscribe-form name=mc-embedded-subscribe-form class=validate target=_blank novalidate> | ||
<div id=mc_embed_signup_scroll> | ||
<div class=mc-field-group> | ||
<label for=mce-EMAIL>Email Address | ||
</label> | ||
<input type=email name=EMAIL class="required email" id=mce-EMAIL> | ||
</div> | ||
<div class=mc-field-group> | ||
<label for=mce-FNAME>First Name | ||
</label> | ||
<input type=text name=FNAME class=required id=mce-FNAME> | ||
</div> | ||
<div id=mce-responses class=clear> | ||
<div class=response id=mce-error-response style=display:none></div> | ||
<div class=response id=mce-success-response style=display:none></div> | ||
</div> | ||
<div style=position:absolute;left:-5000px aria-hidden=true><input type=text name=b_bc109895c8df246ae54ad4d71_0960a6d05e tabindex=-1></div> | ||
<div class=clear><input type=submit value=Subscribe name=subscribe id=mc-embedded-subscribe class=button></div> | ||
</div> | ||
</form> | ||
</div> | ||
</p> | ||
</div> | ||
</div> | ||
</div> | ||
<div style=text-align:center;margin-top:2rem><svg viewBox="0 0 600 15" xmlns="http://www.w3.org/2000/svg" style="max-width:800px"><rect x="20%" y="7" width="60%" height="1" fill="lightgrey" rx="2"/><rect class="rotate" x="50%" y="4" width="7" height="7" fill="#fff" stroke="lightgrey" stroke-width="1" rx="1"/></svg> | ||
</div> | ||
<footer> | ||
<div><a href=https://onepartrain.com target=_blank>© One Part Rain, LLC</a></div> | ||
<div><a href=mailto:hello@budgetwithbuckets.com>hello@budgetwithbuckets.com</a></div> | ||
<div><a href=https://www.patreon.com/iffy target=_blank>Donate</a></div> | ||
<div><a href=https://github.com/buckets/policies/blob/master/privacy-policy.md target=_blank>Privacy</a></div> | ||
<div> | ||
<details> | ||
<summary>English</summary> | ||
<div><a href=https://www.budgetwithbuckets.com/es/blog/2017/11/02/sqlite.html/>español</a></div> | ||
</details> | ||
</div> | ||
</footer> | ||
<script type=text/javascript>var Tawk_API=Tawk_API||{},Tawk_LoadStart=new Date;(function(){var a=document.createElement("script"),b=document.getElementsByTagName("script")[0];a.async=!0,a.src='https://embed.tawk.to/59835f8ed1385b2b2e285765/default',a.charset='UTF-8',a.setAttribute('crossorigin','*'),b.parentNode.insertBefore(a,b)})()</script> | ||
</body> | ||
</html> |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
<!doctype html><html> | ||
<head> | ||
<title> | ||
Importing from YNAB4 | ||
</title> | ||
<link rel="shortcut icon" href=/img/favicon.png type=image/png> | ||
<link rel=stylesheet type=text/css href=/css/buckets.css> | ||
<meta name=viewport content="width=device-width,initial-scale=1"> | ||
<link rel=stylesheet type=text/css href=/css/buckets-blog.css> | ||
<link rel=alternate hreflang=es href=https://www.budgetwithbuckets.com/es/blog/2017/11/07/ynab.html/> | ||
</head> | ||
<body> | ||
<div class=buckets-nav> | ||
<section> | ||
<a class=logo href=/> | ||
<img src=/img/logo.png> | ||
</a> | ||
<a href=/guide/>Guide</a> | ||
<a class=active href=/blog/>Blog</a> | ||
<a target=_blank href=https://github.com/buckets/application/blob/master/CHANGELOG.md>Changelog</a> | ||
<a target=_blank href=https://github.com/buckets/application/issues>Issue Tracker</a> | ||
</section> | ||
<section> | ||
<a class=download-button href=/download/> | ||
<img src=/images/download.svg width=15 height=15> | ||
Download | ||
</a> | ||
<a class=buy-button href=/buy/>Buy $49</a> | ||
</section> | ||
</div> | ||
<div class=wrapper> | ||
<div class=post> | ||
<header class=post-header> | ||
<div class=next-prev-links> | ||
<a class=prev href=/blog/2017/11/02/sqlite.html/>← Prev</a> | ||
<a class=next href=/blog/2017/11/08/end-of-year.html/>Next →</a> | ||
</div> | ||
<h1 class=blog-title>Importing from YNAB4</h1> | ||
<div style=text-align:center;margin-top:2rem><svg viewBox="0 0 600 15" xmlns="http://www.w3.org/2000/svg" style="max-width:800px"><rect x="20%" y="7" width="60%" height="1" fill="lightgrey" rx="2"/><rect class="rotate" x="50%" y="4" width="7" height="7" fill="#fff" stroke="lightgrey" stroke-width="1" rx="1"/></svg> | ||
</div> | ||
<p class=post-meta> | ||
Nov 7, 2017 | ||
• Matt | ||
</p> | ||
</header> | ||
<article class=post-content> | ||
<p>You Need a Budget 4 (YNAB4) is a good application. Too bad they took to the cloud :( Luckily you can now easily import YNAB4 budget files into Buckets!</p> | ||
<div style=text-align:center;padding:1rem><img width=300 style=border-radius:3px src=./import-shot.png></div> | ||
<p>First make a new budget file, then select the menu option “Budget” > “Import From YNAB”. Choose your <code>.ynab4</code> file and continue to enjoy private budgeting!</p> | ||
</article> | ||
<div style=text-align:center;margin-top:2rem><svg viewBox="0 0 600 15" xmlns="http://www.w3.org/2000/svg" style="max-width:800px"><rect x="20%" y="7" width="60%" height="1" fill="lightgrey" rx="2"/><rect class="rotate" x="50%" y="4" width="7" height="7" fill="#fff" stroke="lightgrey" stroke-width="1" rx="1"/></svg> | ||
</div> | ||
<div class="next-prev-links close" style=margin-top:1rem> | ||
<a class=prev href=/blog/2017/11/02/sqlite.html/>← Prev</a> | ||
<a class=next href=/blog/2017/11/08/end-of-year.html/>Next →</a> | ||
</div> | ||
<h2 style=margin-top:2rem>Comments</h2> | ||
<div id=comment-form style=display:none> | ||
<a name=comment-form></a> | ||
<script>window.location.search.substr(1).indexOf('comment=submitted')!==-1&&document.write(`<div class="notification">Comment submitted! Your comment will be posted here after being reviewed.</div>`)</script> | ||
<script>function setCommentStatus(b,c){const a=document.getElementById('comment-notification');a.innerText=b,a.setAttribute('class',c),a.setAttribute('style','')}function submitComment(c){const b=document.getElementById('comment-submit');b.disabled=!0,setCommentStatus('Submitting...','notification'),c.preventDefault();const d=document.getElementById('comment-message').value,e=document.getElementById('comment-email').value,f=document.getElementById('comment-name').value,g=document.getElementById('comment-slug').value,h={comment:d,email:e,name:f,subdir:g};let a=new XMLHttpRequest;a.addEventListener('load',a=>{setCommentStatus('Comment submitted! Your comment will be posted here after being reviewed.','notification'),b.disabled=!1}),a.addEventListener('error',a=>{console.log('Error',a),setCommentStatus('Error submitting comment. If it continues not to work, please email us.','notification error'),b.disabled=!1}),a.open('POST','https://7nd5a97217.execute-api.us-east-1.amazonaws.com/default/GitHubJekyllComments'),a.send(JSON.stringify(h))}XMLHttpRequest&&document.getElementById('comment-form').setAttribute('style','')</script> | ||
<form method=post class=comment-form onsubmit="return submitComment(event),!1"> | ||
<input type=hidden id=comment-slug value=ynab> | ||
<label>Name:<br><input id=comment-name type=text></label> | ||
<label>Email (optional—not displayed):<br><input id=comment-email type=email></label> | ||
<label>Message:</label> | ||
<textarea id=comment-message></textarea> | ||
<button type=submit id=comment-submit>Add comment</button> | ||
</form> | ||
<div id=comment-notification style=display:none></div> | ||
</div> | ||
<div class=mailing-list-main style=margin-top:2rem> | ||
<div class=mailing-list-title>Get these posts in your email, monthly:</div> | ||
<p> | ||
<link href=//cdn-images.mailchimp.com/embedcode/classic-10_7.css rel=stylesheet type=text/css> | ||
<style type=text/css>#mc_embed_signup{background:0 0;clear:left}#mc_embed_signup form{padding:0}#mc_embed_signup input{border-radius:3px}#mc_embed_signup input[type=submit]{background-color:#08c}</style> | ||
<div id=mc_embed_signup> | ||
<form action="https://bucketsisbetter.us8.list-manage.com/subscribe/post?u=bc109895c8df246ae54ad4d71&id=0960a6d05e" method=post id=mc-embedded-subscribe-form name=mc-embedded-subscribe-form class=validate target=_blank novalidate> | ||
<div id=mc_embed_signup_scroll> | ||
<div class=mc-field-group> | ||
<label for=mce-EMAIL>Email Address | ||
</label> | ||
<input type=email name=EMAIL class="required email" id=mce-EMAIL> | ||
</div> | ||
<div class=mc-field-group> | ||
<label for=mce-FNAME>First Name | ||
</label> | ||
<input type=text name=FNAME class=required id=mce-FNAME> | ||
</div> | ||
<div id=mce-responses class=clear> | ||
<div class=response id=mce-error-response style=display:none></div> | ||
<div class=response id=mce-success-response style=display:none></div> | ||
</div> | ||
<div style=position:absolute;left:-5000px aria-hidden=true><input type=text name=b_bc109895c8df246ae54ad4d71_0960a6d05e tabindex=-1></div> | ||
<div class=clear><input type=submit value=Subscribe name=subscribe id=mc-embedded-subscribe class=button></div> | ||
</div> | ||
</form> | ||
</div> | ||
</p> | ||
</div> | ||
</div> | ||
</div> | ||
<div style=text-align:center;margin-top:2rem><svg viewBox="0 0 600 15" xmlns="http://www.w3.org/2000/svg" style="max-width:800px"><rect x="20%" y="7" width="60%" height="1" fill="lightgrey" rx="2"/><rect class="rotate" x="50%" y="4" width="7" height="7" fill="#fff" stroke="lightgrey" stroke-width="1" rx="1"/></svg> | ||
</div> | ||
<footer> | ||
<div><a href=https://onepartrain.com target=_blank>© One Part Rain, LLC</a></div> | ||
<div><a href=mailto:hello@budgetwithbuckets.com>hello@budgetwithbuckets.com</a></div> | ||
<div><a href=https://www.patreon.com/iffy target=_blank>Donate</a></div> | ||
<div><a href=https://github.com/buckets/policies/blob/master/privacy-policy.md target=_blank>Privacy</a></div> | ||
<div> | ||
<details> | ||
<summary>English</summary> | ||
<div><a href=https://www.budgetwithbuckets.com/es/blog/2017/11/07/ynab.html/>español</a></div> | ||
</details> | ||
</div> | ||
</footer> | ||
<script type=text/javascript>var Tawk_API=Tawk_API||{},Tawk_LoadStart=new Date;(function(){var a=document.createElement("script"),b=document.getElementsByTagName("script")[0];a.async=!0,a.src='https://embed.tawk.to/59835f8ed1385b2b2e285765/default',a.charset='UTF-8',a.setAttribute('crossorigin','*'),b.parentNode.insertBefore(a,b)})()</script> | ||
</body> | ||
</html> |
Oops, something went wrong.