不是做假账...
图内帕谢里厄,弗朗索瓦! 我承认你是一位百万里挑一的服务员,我的朋友,但开始你自己的咨询公司比你想象的要难。既然你在向我征求意见,我很乐意提供一些帮助。但首先,你没有注意到我们的客人们已经到了吗? 快点,弗朗索瓦! 带他们到他们的餐桌。
啊,您好,我的朋友们! 再次欢迎来到马塞尔餐厅。弗朗索瓦。快点。给我们朋友来点酒。1997年的武弗雷康斯坦斯干白葡萄酒应该很棒。你们看,我的朋友们,弗朗索瓦在问,当他不在这里的餐厅工作时,他需要什么才能做一些兼职咨询工作。 凭借他不断增长的 Linux 知识,他觉得自己可能已经准备好帮助其他人,并且也许可以赚点钱,对吧?
谢谢你,弗朗索瓦!请。倒酒。
在许多方面,Linux 是计算机顾问的好朋友。开箱即用,你的发行版包含了一系列工具,几乎可以让你以各种可能的方式连接。你的 Linux 系统是一台邮件服务器、一个通讯控制台、一个 Telnet 客户端、一个 SSH 客户端等等。各种类型的编程工具都在那里供你使用:C++ 编译器、Perl、Python、Tcl/Tk 等等。事实上,一个典型的 Linux 发行版几乎拥有你成为自己的 ISP 或成功运行一个网站所需的所有工具。你可能不一定拥有的是商业本身的工具。
是的,我的朋友们。 这归根结底是钱的问题。 当然,当你外出工作时,你工作是因为它可以支付你在家里的伙食费,偶尔还能在马塞尔餐厅外出就餐,对吧? 为了获得报酬,你需要能够告诉你的客户你花了多少时间为他们工作。然后,你必须向他们开账单,收取款项,并跟踪整个过程。独立顾问的生活就像一个自给自足的个体户,应该这样对待。
好吧,我在这里告诉你,使 Linux 成为你最经济实惠、无限可定制的工作站或服务器的同一批敬业的开源程序员,也一直在忙于烹饪处理银行的工具。
我们需要做的第一件事是跟踪我们的时间。为此,我将给你几个选择,从一个名为 tt 的低热量命令行工具开始
tar -xzvf tt-1.0.tar.gz cd tt-1.0 ./configure make make install
要使用 tt,首先在单独一行键入命令名称。它会抱怨并告诉你它不知道你想要什么,但作为抱怨的一部分,它会在你的主目录下生成一个 .tt 目录。现在,切换到该目录并创建一个名为 projects.conf 的文件。这本质上是一个项目列表,你希望针对这些项目跟踪时间。每个项目名称都用方括号括起来。这是一个我正在处理的示例
[cook] # Very important [eat] # You can make money doing this? [drink_wine] # If only it were possible [write_recipes] # The real work, non?你可以随时使用 tt '*' -list 命令列出你当前的所有项目。要开始跟踪针对某个项目的时间,我将键入带有 -start 标志的命令名称。例如,喝酒虽然令人愉快,但也是工作的一部分,是我必须遗憾地收费的项目。(我开玩笑的,当然。)但如果可以这样,我会像这样开始为此开账单
tt -start drink_wine当我完成我的,嗯,工作后,我将发出相同的命令,并带有 -stop 标志。
对于一个简单的程序来说,tt 非常强大。该程序的一个有趣的用途是作为任务的时间包装器。假设你正在为亨利精酿葡萄酒公司工作。你正在公司的 Web 服务器上工作,设置他的电子商务网站。所有工作都是远程完成的,你 Telnet 进入服务器进行工作。你可以使用 tt 命令包装 Telnet 命令以自动跟踪你的时间。像这样
#!/bin/bash tt henri_wines -start telnet henri_website.com tt henri_wines -stop
这不错,对吧? 当需要报告时,你可以使用此命令生成时间的快速报告
tt drink_wine -export project 'drink_wine' (closed): Tue Dec 19 2000 16:53:31-Tue Dec 19 2000 16:53:56: 00h00m25s Wed Dec 20 2000 12:10:39-Fri Dec 22 2000 16:52:59: 52h42m20s Fri Dec 22 2000 16:56:18-Fri Dec 22 2000 17:01:04: 00h04m46s + Tue Dec 19 2000 16:53:31-Fri Dec 22 2000 17:01:04: 52h47m31s更好的是,你可以使用 -format 修饰符来导出甚至创建 SQL 数据库。tt 知道 MySQL 和 PostgreSQL。例如,我可以使用此命令在 PostgreSQL 中创建一个数据库
createdb myconsultancy接下来,我使用此命令导出我的 tt 数据
tt drink_wine -export -format pgsql | psql myconsultancy有了这些信息,我可以从我的 PostgreSQL 数据库生成自定义报告
psql -c "select * from tt_timing;" my_consultancy你可能会发现 tt 可以满足你想要的一切,这会很棒,但如果你经常出差,并且需要某种远程记录时间的方法,那么菜单上的下一个项目可能正是你味蕾所需要的。你的咨询事业也可能非常成功,并聘请了许多人来帮助你。同样,这可能正是你正在寻找的。
基于浏览器的应用程序的优点之一是它们允许你几乎在任何地方工作。启动你的浏览器,设置适当链接的 URL,等待几秒钟让链接升到显示窗口,然后 瞧! 你就拥有了一个新鲜、热气腾腾的应用程序,随时可以使用。在时间跟踪和计费领域,我很幸运地试用了 onShore Inc. 的 “TimeSheet” 程序。这是一个很棒的应用程序,值得一看。它提供了一个简洁、简单的界面,一个单独的管理员屏幕,以及针对全职员工和合同顾问的个人资料。你还可以根据个人顾问或特定客户生成报告。
tar -xzvf onshore-timesheet-current.tar.gz cd onshore-timesheet-2.2
在你兴奋地开始键入 “make” 之前,我必须告诉你,你卑微的厨师在尝试此应用程序时,未能考虑到第一条规则。该规则是“你应阅读所有 INSTALL 和 README 文件”。在享用了一小杯令人愉悦的梅洛葡萄酒后,我再次访问了 OnShore 的 TimeSheet,并发现只需对 Makefile 进行一些编辑就可以使事情正常运行。所需的更改很少,并且一切都在 Makefile 的顶部附近,但我将重点介绍一些
PERLINC := /usr/lib/perl5/site_perl/5.005 APPROOT := /usr/local/apache/htdocs/timesheet TIMESHEET_URL := /timesheet CONFFILE := timesheet.conf GUEST_ACCOUNT := no WWWUSER := www APPOWNER := www由于 onShore TimeSheet 附带了几个必要的 Perl 模块,你应该修改 PERLINC 参数以反映你的 site_perl 安装目录。上面的那个是我的。APPROOT 表示你的 Web 服务器上应用程序的路径。默认值是 Red Hat 的安装默认值 /home/httpd/html。将其更改为反映你自己的设置。我的 Web 服务器都是使用 /usr/local/apache/htdocs 文档根目录重建的 Apache 服务器。
下一个更改是应用程序的默认 URL。如果你选择将 “timesheet” 作为最终目录 (默认值) 的 APPROOT,你将希望将其设置为 /timesheet。接下来,确定配置文件的名称。我选择了 timesheet.conf。如果需要,安装将创建一个默认的 “guest” 帐户。我决定根据需要创建所有用户。最后两个参数对我来说都设置为 WWW。WWWUSER 是你的 Web 服务器作为其运行的默认用户 ID。在许多系统中,默认情况下将其设置为用户 “nobody”。你应该相应地决定。最后,你想要设置 APPOWNER。这设置了整个应用程序的所有权。
现在,你的耐心将得到回报。如果你在 Debian 系统上运行,此时键入 make install-debian。否则,键入 make install。你将看到一些令人兴奋的信息在你的屏幕上滚动,因为为你创建了一个默认的 PostgreSQL 数据库以及你的管理员用户 ID。你几乎完成了。要运行它,你需要确保你的 Web 服务器理解 .cgi 扩展并适当地执行它们。这是通过将以下行添加到你的 httpd.conf 文件中来完成的。注意:根据你的 Web 服务器安装的年份,适当的配置文件实际上可能是 access.conf。最有可能的两个配置目录是 /usr/local/apache/conf 和 /etc/httpd/conf。
AddHandler cgi-script .cgi <directory /usr/local/apache/htdocs/timesheet> Options +ExecCGI AddHandler cgi-script .cgi </directory>
<directory> 段落在那里,因此你可以在你决定安装的任何位置执行 cgi 文件。请记住,cgi 脚本通常从 cgi-bin 而不是 html 或 htdocs 执行。
你需要做的最后一件事是确保 PostgreSQL 在启动时带有 -i 选项。例如,在我的 /etc/rc.d/init.d/postgresql 启动文件中,(Debian 用户应检查 /etc/init.d/postgresql) 我有以下行
su -l postgres -c '/usr/bin/postmaster -S -D/var/lib/pgsql'
我只是更改了默认启动,以便在单词 “postmaster” 之后包含 -i 选项。在重新启动 PostgreSQL 和你的 Web 服务器后,你就可以开始了。只需将你的 Web 浏览器指向 TimeSheet URL:http://my_webserver/timesheet/。
你需要提供你的管理员登录名和密码,登录名是 “admin”,密码是 “admin”。显然,首要任务应该是将其更改为更安全的内容。这也是你想要开始创建用户的时候,无论是永久员工、顾问还是其他管理员。查看图 1,了解 onShore TimeSheet 程序在运行中的情况。
太棒了! 你现在可以跟踪你的时间了。从你详细的工时表,你可以向客户开具发票并收获你的劳动成果,对吧? 收取款项,然后让你的会计师担心剩下的事情。 等一下! 会计师会想要某种财务记录。这使我们想到了任何商业企业中最可怕的野兽:记账。幸运的是,对于 Linux 用户来说,这里也有答案。来吧,我的朋友们,体验一下 Linux 的会计软件包的示例。
Linux 世界中的会计应用程序是一些最受欢迎的工具。幸运的是,这些工具开始大量涌现。这些可能是商业应用程序、GPL 许可的或免费软件。由于我们正在讨论开源应用程序,我们将把我们的菜单项集中在这个领域。如果你的应用程序不太复杂,你可能想先看看 BANAL,它是 BANAL's Absolutely Not A Ledger 的缩写。BANAL 由 Matthew Rice 编写,是一个相当简单的应用程序,但有着远大的梦想。我这么说是因为 BANAL 可以做很多事情,即使它们做得很简单。使用 BANAL,你可以跟踪你的时间、维护客户和供应商、开具发票、跟踪费用、开支票等等。 是的,BANAL 不会花费你任何东西,除了时间。
该软件可以免费下载,并带有 BSD 风格的许可证,并且安装相当容易。我应该指出,虽然源代码是免费提供的——实际上,它都是源代码,因为这是一个 Perl 应用程序——并且你可以将其作为 tarball 获取,但你的厨师谦卑地建议你改为获取 RPM。有两个 RPM:客户端和服务器。源代码 tarball 包含一些额外的功能,例如一些不断发展的 PHP 脚本。对于某些人来说,这可能值得额外的努力。RPM 安装快速而简单
rpm -ivh banal-*
这里发生了很多事情。其中 BANAL 在你的 /etc/passwd 文件中创建一个用户并启动服务器。BANAL 真的非常容易使用,但我仍然建议你阅读安装附带的快速入门文件。你会在 /usr/doc/banal-client-0.10/quickstart.txt 中找到它。
在我们继续之前,我应该给你一点警告。在我的系统上(也可能在你的系统上),bk 程序尝试默认打开 /usr/bin/vi,而我的系统上 vi 的路径是 /bin/vi。你可能想要创建一个符号链接来纠正该问题,或者只是分配 EDITOR 环境变量,这将覆盖 BANAL 的内置编辑器路径。这也让你有机会选择你喜欢的编辑器
export EDITOR=pico
完成所有这些操作后,你需要开始创建你的帐户、个人资料、供应商、费用帐户等等。这是使用一个命令 bk 完成的。
BANAL-FTL bookkeeping system bk is BANAL's client tool for the command line. Try: bk help commands for a list of commands bk help command for help on a specific command bk help usage for generic command-line arguments入门需要你使用命令 bk client your_co_name 创建一个初始客户(你的公司)。确保你填写所有适当或必填字段,然后保存你的工作。接下来,你需要更改公司信息设置以显示此客户资料实际上是你的公司
$ bk setting /UserInfo/CompanyID你将发现自己处于编辑器模式,其中包含类似于以下内容的内容。(记住将 “Value” 字段更改为 “ChezMarcel” 以外的其他内容,对吧?)
# A BANAL Setting Specification. # # Setting: Unique Setting ID # Value: Value @@ REQUIRED # Description: Item description Setting: /UserInfo/CompanyID Value: ChezMarcel啊,一切都如此简单,对吧? 与你的咨询业务的工时表部分一样,这里也有一个图形化的替代方案,名为 GnuCash [在LJ 2001 年 4 月刊中查找有关 GnuCash 的文章]。这是一个很棒的开源、GPL 许可且完全免费的会计软件包。
我决定从头开始构建 GnuCash。首先,我从 GnuCash 网站下载了最新软件包版本的源代码。对于那些有点不耐烦的人,你会在该网站找到一些预编译的二进制文件。
此应用程序的核心使用 GNOME 库,因此无论你选择从头开始构建还是使用二进制文件,都需要加载这些库。显然,那些已经使用 GNOME 作为桌面的人会发现 gnome-libs 已经存在。对于那些可能正在使用其他桌面的人,你需要加载 gnome-libs 和支持库,特别是 GTK。你会发现 GnuCash 值得你付出努力,但它确实需要一些搜索和收集。除了 GNOME 框架之外,你还需要 guile、swig、slib 和 g-wrap。最终软件包 g-wrap 实际上位于 GnuCash FTP 站点的下载区域。还有一些其他要求,最值得注意的是 libjpeg 和 libpng,但这些可能已经存在于你的系统上。slib 软件包也可能以 umb-scheme 软件包的形式存在。查看“资源”部分,以获取指向所有这些站点的指针。
获得软件后的第一步,当然,是解压缩存档。接下来是一些非常熟悉的步骤
tar -xzvf gnucash-1.4.9.tar.gz cd gnucash-1.4.9 ./configure make make install
此时,你可能应该查看几个非常重要的链接。当你的卑微的厨师第一次尝试这个食谱时,事情并非完全顺利,特别是与 slib 相关的事情。guile 库对 slib 信息最终所在的位置做出了一些假设。这显然在所有系统上都不是问题,但在我的 Red Hat 系统上是问题。我将目录更改为 /usr/share/guile 并创建了以下符号链接
ln -s /usr/lib/umb-scheme/slib slib ln -s /usr/lib/umb-scheme/slibcat slibcat ln -s /usr/lib/umb-scheme/slib/mklibcat.scm mklibcatumb-scheme 软件包是我的 Red Hat 安装的 scheme 库(记住之前的 slib)。有了这些链接,事情变得顺利多了。完成此操作后,通过在命令提示符下键入 gnucash 来启动 GnuCash。
如果你曾经使用过 Intuit 的 Quickbooks 软件包,你会发现 GnuCash 非常宝贵。凭借其易于使用的界面,你可以为银行、信用卡交易等创建你的科目表(参见图 2)。该软件包具有良好的对账功能和众多报告,包括损益表,因此你可以随时了解你赚了多少钱。它甚至为你环球旅行的顾问类型处理多种货币。对于小型企业,我能想到的唯一缺点是没有发票功能。你需要手动完成。
我的天哪,弗朗索瓦! 已经很晚了,还有很多事情要做。为我们的朋友再倒一杯酒。怎么了,弗朗索瓦?你已经决定放弃做兼职顾问的想法了吗? 因为我吗?不不,我没有给你太多工作要做。你有很多时间!我们稍后会讨论这个问题,弗朗索瓦。现在,请照顾好我们的客人。再来点酒。
我的朋友们,如果你确实决定单干,请始终记住,你真的不是孤单一人。选择了 Linux,你就拥有了开始和运营你的高科技咨询公司所需的所有工具。在一些伟大的开源厨师的帮助下,你甚至可能会发现你自己的想法会加入他们的行列,并且有一天你自己的食谱可能会在马塞尔餐厅被推荐。直到下一次,你的餐桌将一直等待着你。
祝您健康!Bon appétit!
Marcel Gagné 居住在安大略省的密西沙加市。在现实生活中,他是 Salmar Consulting Inc 的总裁,这是一家系统集成和网络咨询公司。他也是一名飞行员,撰写科幻小说和奇幻小说,并编辑 TransVersions,这是一本科幻小说、奇幻小说和恐怖小说选集。他热爱 Linux 和所有 UNIX 的变种,甚至会在公共场合承认这一点。事实上,他目前正在撰写 Linux 系统管理:用户指南,即将由 Addison Wesley Longman 出版。可以通过电子邮件 mggagne@salmar.com 与他联系。你可以从他的网站 http://www.salmar.com/marcel/ 发现许多其他事情。