I have used MS Money for several years now and due to my "coding interest" it would be great to know where to start learning the basics for programming such an application. Better to say: Its not about how to design and write an application, its about the "bank details". (Just displaying the amount of a certain bank account for the beginning would be a pleasant aim for me.).
我已经使用MS Money好几年了,由于我的“编程兴趣”,知道从哪里开始学习编写这样一个应用程序的基础知识是很好的。更好的说法是:这不是关于如何设计和编写应用程序,而是关于“银行细节”。(对我来说,一开始只显示某个银行账户的金额是一个不错的目标。)
I would like to do it in C++ or Java, since I'm used to these languages.
我想用c++或者Java来做,因为我已经习惯了这些语言。
Will it be "too big" for a hobby project? I do not know much about all the security issues, the bank server interfaces/technique, etc.
对于一个爱好项目来说,它会“太大”吗?我对所有的安全问题、银行服务器接口/技术等都不太了解。
At the first place after a "no" I need a reliable source for learning.
首先,在说“不”之后,我需要一个可靠的学习来源。
6 个解决方案
#1
9
Most of the apps I've worked with read in a file exported from the bank's website, which is relatively straight forward.
我使用过的大多数应用程序都是从银行的网站上导出的,这是相对直接的。
If that's the road you're looking to go down you'll need to write code to:
如果你想走这条路,你需要写代码:
- Login to the bank's website to download the file via HTTPS
- 登录到银行的网站,通过HTTPS下载该文件。
- Either get specs for the file format or reverse engineer it
- 要么获得文件格式的规范,要么进行反向工程
- Apply whatever business rules you choose to the resulting data
- 对结果数据应用您选择的任何业务规则
#2
1
I think its quite a reasonable hobby project; start with a simple ledger and then you can add features.
我认为这是一个相当合理的爱好项目;从一个简单的分类账开始,然后您可以添加特性。
A few things I would do to begin such a project:
我将做一些事情来开始这样一个项目:
- Decide on an initial feature set. A good start might be just one of the ledgers/accounts - basically balancing a checkbook. Make this general enough that you can have several.
- 一个好的开始可能只是一个账簿/账目——基本上就是平衡支票簿。使这个足够普遍,你可以有几个。
- Design a data model. What fields will your ledger have? What restrictions on the values of each?
- 设计一个数据模型。你的分类帐有哪些领域?它们的值有什么限制?
- Choose technologies. What language do you want to program in? How will you persist the data? What GUI do you want - a fat client like MS money or a web app?
- 选择技术。你想用什么语言来编程?如何保存数据?您想要什么样的GUI——像MS money这样的胖客户端还是web应用程序?
From there, write up some design notes if warranted and start coding!
从那里,如果有必要,写一些设计笔记,开始编码!
#3
1
You might look into OFX4J, an implementation of the Open Financial Exchange specification, mentioned here and in a comment by @nicerobot.
您可以查看一下OFX4J,它是开放金融交易所规范的实现,这里提到了OFX4J, @nicerobot给出了一个评论。
#4
1
Are you looking for something mint.com-ish? From my understanding of their security policy this is how they do it: You give them your online account credentials which they give immediately to the bank and get back a "read-only" account login. They then throw away the credentials you provided and use "read-only" credentials to update your metrics every 24 hours. I don't know how they do this or if they have a special relationship with the banks, but it is possible.
你在找薄荷口味的吗?根据我对他们的安全策略的理解,他们是这样做的:你把你的在线账户凭证给他们,他们会马上把凭证交给银行,然后返回一个“只读”账户登录。然后,它们丢弃您提供的凭证,并使用“只读”凭证每24小时更新一次度量。我不知道他们是如何做到这一点的,也不知道他们是否与银行有特殊关系,但这是可能的。
#5
1
The first thing to remember when trying to programmatically interact with a banking website without express written permission from the bank will MOST LIKELY be a violation of the website use agreement, and may land you in more trouble than it's worth.
在没有获得银行明确书面许可的情况下,试图通过编程方式与银行网站进行交互时,首先要记住的是,这很可能违反了网站使用协议,可能会给你带来更多麻烦。
Second, you DON'T want to start 'learning' programming by trying to tackle something that massive and sensitive. Not that there is anything wrong with the eventual goal, but that's a journey of a thousand leagues and you need to take your first step.
其次,你不希望通过尝试解决这么庞大和敏感的问题来开始“学习”编程。这并不是说最终的目标有什么问题,而是千里之行,你需要迈出第一步。
I would say start with a simple programming environment, like python, or perl. Reason, you don't have to worry about linking, libraries, code generation etc. Get used to the basics of what you want to achieve functionally, them reimplementing that in C++ or Java would be the next step.
我想说的是从一个简单的编程环境开始,比如python或perl。理由是,您不必担心链接、库、代码生成等问题。要习惯您想要实现的功能的基础知识,它们将在c++或Java中重新实现。
To begin with focus on learning client-server programming.
从学习客户端-服务器编程开始。
Write a client, write a server, learn all about sockets, learn all about TCP programming,
写一个客户端,写一个服务器,学习socket,学习TCP编程,
then learning about secure socket layers (SSL) and transport layer security (TLS).
然后学习安全套接字层(SSL)和传输层安全性(TLS)。
Once you've done this, try switching to C++ or Java and see if you can repeat the effect.
一旦您这样做了,尝试切换到c++或Java,看看是否可以重复这种效果。
There are TONS of tutorials on these topics.
关于这些主题有很多教程。
Once you have become used to that, learn what tools and libraries are already available to do most common things. For example libcurl is great for creating common internet application protocol clients (HTTP, HTTPS, FTP and the like).
一旦您习惯了这一点,就应该了解哪些工具和库已经可用来做最常见的事情。例如,libcurl非常适合创建常见的internet应用程序协议客户机(HTTP、HTTPS、FTP等)。
See if you can create an interactive program that you can "log in to" using your web browser which outputs stuff in XML and formats it using cascading style sheets.
看看是否可以创建一个交互式程序,您可以使用web浏览器“登录”,以输出XML格式的内容,并使用层叠样式表进行格式化。
This should lead you into javascript world, where there are powerful tools such as jquery. If you mix and match these correctly, you will find that development can be a LOT of fun and quite rapid.
这将引导您进入javascript世界,那里有强大的工具,如jquery。如果您正确地混合和匹配这些,您将发现开发可以是非常有趣和非常快速的。
:-)
:-)
Happy journeying.
快乐的旅行。
#6
0
I don't think many (if any) banks provides api's.
我认为没有多少银行(如果有的话)提供api。
Online budget-apps in Sweden seem to rely either on exporting transactions in some excel format, or simply have you "mark all transacations in the banksystem, ctrl-c then ctrl-v in a textbox", which is then parses.
瑞典的在线预算应用程序似乎要么依赖于以某种excel格式导出事务,要么简单地让您“在银行系统中标记所有事务,然后在文本框中按ctrl-c然后按ctrl-v”,然后进行解析。
#1
9
Most of the apps I've worked with read in a file exported from the bank's website, which is relatively straight forward.
我使用过的大多数应用程序都是从银行的网站上导出的,这是相对直接的。
If that's the road you're looking to go down you'll need to write code to:
如果你想走这条路,你需要写代码:
- Login to the bank's website to download the file via HTTPS
- 登录到银行的网站,通过HTTPS下载该文件。
- Either get specs for the file format or reverse engineer it
- 要么获得文件格式的规范,要么进行反向工程
- Apply whatever business rules you choose to the resulting data
- 对结果数据应用您选择的任何业务规则
#2
1
I think its quite a reasonable hobby project; start with a simple ledger and then you can add features.
我认为这是一个相当合理的爱好项目;从一个简单的分类账开始,然后您可以添加特性。
A few things I would do to begin such a project:
我将做一些事情来开始这样一个项目:
- Decide on an initial feature set. A good start might be just one of the ledgers/accounts - basically balancing a checkbook. Make this general enough that you can have several.
- 一个好的开始可能只是一个账簿/账目——基本上就是平衡支票簿。使这个足够普遍,你可以有几个。
- Design a data model. What fields will your ledger have? What restrictions on the values of each?
- 设计一个数据模型。你的分类帐有哪些领域?它们的值有什么限制?
- Choose technologies. What language do you want to program in? How will you persist the data? What GUI do you want - a fat client like MS money or a web app?
- 选择技术。你想用什么语言来编程?如何保存数据?您想要什么样的GUI——像MS money这样的胖客户端还是web应用程序?
From there, write up some design notes if warranted and start coding!
从那里,如果有必要,写一些设计笔记,开始编码!
#3
1
You might look into OFX4J, an implementation of the Open Financial Exchange specification, mentioned here and in a comment by @nicerobot.
您可以查看一下OFX4J,它是开放金融交易所规范的实现,这里提到了OFX4J, @nicerobot给出了一个评论。
#4
1
Are you looking for something mint.com-ish? From my understanding of their security policy this is how they do it: You give them your online account credentials which they give immediately to the bank and get back a "read-only" account login. They then throw away the credentials you provided and use "read-only" credentials to update your metrics every 24 hours. I don't know how they do this or if they have a special relationship with the banks, but it is possible.
你在找薄荷口味的吗?根据我对他们的安全策略的理解,他们是这样做的:你把你的在线账户凭证给他们,他们会马上把凭证交给银行,然后返回一个“只读”账户登录。然后,它们丢弃您提供的凭证,并使用“只读”凭证每24小时更新一次度量。我不知道他们是如何做到这一点的,也不知道他们是否与银行有特殊关系,但这是可能的。
#5
1
The first thing to remember when trying to programmatically interact with a banking website without express written permission from the bank will MOST LIKELY be a violation of the website use agreement, and may land you in more trouble than it's worth.
在没有获得银行明确书面许可的情况下,试图通过编程方式与银行网站进行交互时,首先要记住的是,这很可能违反了网站使用协议,可能会给你带来更多麻烦。
Second, you DON'T want to start 'learning' programming by trying to tackle something that massive and sensitive. Not that there is anything wrong with the eventual goal, but that's a journey of a thousand leagues and you need to take your first step.
其次,你不希望通过尝试解决这么庞大和敏感的问题来开始“学习”编程。这并不是说最终的目标有什么问题,而是千里之行,你需要迈出第一步。
I would say start with a simple programming environment, like python, or perl. Reason, you don't have to worry about linking, libraries, code generation etc. Get used to the basics of what you want to achieve functionally, them reimplementing that in C++ or Java would be the next step.
我想说的是从一个简单的编程环境开始,比如python或perl。理由是,您不必担心链接、库、代码生成等问题。要习惯您想要实现的功能的基础知识,它们将在c++或Java中重新实现。
To begin with focus on learning client-server programming.
从学习客户端-服务器编程开始。
Write a client, write a server, learn all about sockets, learn all about TCP programming,
写一个客户端,写一个服务器,学习socket,学习TCP编程,
then learning about secure socket layers (SSL) and transport layer security (TLS).
然后学习安全套接字层(SSL)和传输层安全性(TLS)。
Once you've done this, try switching to C++ or Java and see if you can repeat the effect.
一旦您这样做了,尝试切换到c++或Java,看看是否可以重复这种效果。
There are TONS of tutorials on these topics.
关于这些主题有很多教程。
Once you have become used to that, learn what tools and libraries are already available to do most common things. For example libcurl is great for creating common internet application protocol clients (HTTP, HTTPS, FTP and the like).
一旦您习惯了这一点,就应该了解哪些工具和库已经可用来做最常见的事情。例如,libcurl非常适合创建常见的internet应用程序协议客户机(HTTP、HTTPS、FTP等)。
See if you can create an interactive program that you can "log in to" using your web browser which outputs stuff in XML and formats it using cascading style sheets.
看看是否可以创建一个交互式程序,您可以使用web浏览器“登录”,以输出XML格式的内容,并使用层叠样式表进行格式化。
This should lead you into javascript world, where there are powerful tools such as jquery. If you mix and match these correctly, you will find that development can be a LOT of fun and quite rapid.
这将引导您进入javascript世界,那里有强大的工具,如jquery。如果您正确地混合和匹配这些,您将发现开发可以是非常有趣和非常快速的。
:-)
:-)
Happy journeying.
快乐的旅行。
#6
0
I don't think many (if any) banks provides api's.
我认为没有多少银行(如果有的话)提供api。
Online budget-apps in Sweden seem to rely either on exporting transactions in some excel format, or simply have you "mark all transacations in the banksystem, ctrl-c then ctrl-v in a textbox", which is then parses.
瑞典的在线预算应用程序似乎要么依赖于以某种excel格式导出事务,要么简单地让您“在银行系统中标记所有事务,然后在文本框中按ctrl-c然后按ctrl-v”,然后进行解析。