[HUD] Free, open source poker tracking software: FPDB - (Version 0.40.5) - Nov 14, 2013
hmm. I need a practically unheard of, outside of the linux hacker circle, version control system to get at the source .. I think I'll pass. I ditched nearly all open source software years ago, excluding subversion and the basic gnu toolset, and I'm not keen on going back to it. If it were a subversion repository, or there were regular diffs, that'd be something different - i've already got subversion, and it's practically mandatory for anyone in any kind of software development to use, it's practically an industry standard. I was willing to try to get Python actually functioning in Windows, but being forced to use something Linus designed/wrote is entirely too much .. particularly when there is no clearly well functioning version of it in windows, there's no gui implementation for windows, and windows command line sucks.
It is possible to grab diffs from the git tracker. Subversion is usable for distributed development - git is better. If you don't wan't to use git, download the installer, its python - ie already in source form, commit to your local subversion repository and create diffs from that.
My complaint is that the only things Linus is capable of creating/designing are things that are absolutely incredibly needlessly complex, and insanely difficult to operate -- the only reason Linux is at all worth operating is the hundreds of other people who've actually done decent stuff with it. Most open source software is poorly designed and written, but Linus is quite probably the most visible and least capable of all of them -- if not for Alan Cox, and a handful of other core developers over the years, you'd still have to patch your kernel every time you started just to get something to work without crashing...
Anyway ... that sounds like a decent idea, I keep forgetting that python is interpreted.. i've been doing too much in compiled-byte-code languages lately. I'm half expecting, though, that if we're really having speed problems, we'll eventually find that python itself might need some hacking done to it. I'll get to poking at it.
Is there a specific version of Python recommended?
Anyway ... that sounds like a decent idea, I keep forgetting that python is interpreted.. i've been doing too much in compiled-byte-code languages lately. I'm half expecting, though, that if we're really having speed problems, we'll eventually find that python itself might need some hacking done to it. I'll get to poking at it.
Is there a specific version of Python recommended?
hmm. Alright, I'm digging through the code here, trying to get a grasp on what's going on .. it looks like i'm going to need some better background in python before I have a decent idea.. however, one thing that I'm noticing, is that in Stats.py, it is heavily dependent on using Exception handling to deal with division by zero .. As I said, I couldn't tell you a lot about Python specifically, but in just about every other language that I've used, setting up the proper contexts for exception handling is fairly costly, in terms of processing power, when compared to just doing a check "if(divisor != 0)" before doing the actual divide.
I'm digging around through the python docs right now, trying to find some sort of functions for benchmarking specific code areas, but I'm not seeing anything. Something like this should be mandatory in an interpreted code environment :|
I'd guess that unless Python has made significant advances in exception handling versus other languages, that a non-negligible amount of cpu time could be saved just in those sections .. I realise that it looks like either (a) Python was designed with exception handling as a primary use feature or (b) people have made it that way, but I'd just about be willing to bet a $5 spot that a test to see if your divisor is zero is going to be way faster than setting up an exception context. (if you know how to time this, and can prove me wrong there, i'll pay up on one of the Everleaf network sites ..)
I'm digging around through the python docs right now, trying to find some sort of functions for benchmarking specific code areas, but I'm not seeing anything. Something like this should be mandatory in an interpreted code environment :|
I'd guess that unless Python has made significant advances in exception handling versus other languages, that a non-negligible amount of cpu time could be saved just in those sections .. I realise that it looks like either (a) Python was designed with exception handling as a primary use feature or (b) people have made it that way, but I'd just about be willing to bet a $5 spot that a test to see if your divisor is zero is going to be way faster than setting up an exception context. (if you know how to time this, and can prove me wrong there, i'll pay up on one of the Everleaf network sites ..)
The installer will install version 2.5 from python.org. version 2.6 is has been out for a week or two, but I don't think anybody has tested with it yet.
I'm not too worried about python being to slow to do this job. In a sense python is just the glue between mysql and gtk, where all the heavy lifting is being done. There is a post a few days back where E. S. says that most of his cpu usage is in mysql when he is playing 14 tables. That was before we added the code to skip the old parts of the hh files.
I'm not too worried about python being to slow to do this job. In a sense python is just the glue between mysql and gtk, where all the heavy lifting is being done. There is a post a few days back where E. S. says that most of his cpu usage is in mysql when he is playing 14 tables. That was before we added the code to skip the old parts of the hh files.
As I said, I couldn't tell you a lot about Python specifically, but in just about every other language that I've used, setting up the proper contexts for exception handling is fairly costly, in terms of processing power, when compared to just doing a check "if(divisor != 0)" before doing the actual divide.
A few more questions
Anyone know of any nice IDE type editors, that will help me cross reference what code goes to where, and which does what when?
Is there a document describing the PS hand history format, and/or the eventual "fpdb" format?
Since I currently do all my play on Everleaf and Cake, once I understand what all is going on in here, I guess I might be the one leading the charge to get alternative site support
Anyone know of any nice IDE type editors, that will help me cross reference what code goes to where, and which does what when?
Is there a document describing the PS hand history format, and/or the eventual "fpdb" format?
Since I currently do all my play on Everleaf and Cake, once I understand what all is going on in here, I guess I might be the one leading the charge to get alternative site support
hmm. finally got rebooted, after installing, no matter what i run, i just get a return to the command prompt.
look in the fpdb-error-log.txt file (or something like that), it should contain a (possibly helpful) error message.
What should I -expect- to happen when running fpdb.py ?
Here's what I actually get:
no error logs.
Here's what I actually get:
Code:
E:\fpdb\pyfpdb>fpdb.py Failed to load libs for graphing, graphing will not function. Please install num py and matplotlib. todo: implement obtain_global_lock Opened and read profile file C:\Documents and Settings\Eric.JUBY\Application Dat a\fpdb\default.conf E:\fpdb\pyfpdb>
I’ve got the heads-up display working now without problems. The two-thread changes I have made are extremely simple (amounting to only a few lines), so I won’t go into the details beyond what I’ve already posted.
I’m having no more problems with the software’s speed. It runs extremely fast.
Surprisingly enough it didn’t crash, even after some hundreds of hands, but a few strange graphical distortions occurred which I attribute to the fact that the statistics windows were being displayed and updated simultaneously by different threads. So I have added a locking mechanism and it now works flawlessly.
It would be fantastic if you could add proper multi-table support. I’ll be looking forward to trying it out; please keep me informed.
I’m having no more problems with the software’s speed. It runs extremely fast.
I spend some time today figuring out how to pull a whole bunch of code out of the main_loop (= gui) threadb without breaking windows|gtk|python. I will try to implement that tomorrow. This should make the gui a lot more responsive.
If this actually works, I'll give the stacked/cascaded tables thing a go. I have an idea or two on that now.
If this actually works, I'll give the stacked/cascaded tables thing a go. I have an idea or two on that now.
I'm not too worried about python being to slow to do this job. In a sense python is just the glue between mysql and gtk, where all the heavy lifting is being done. There is a post a few days back where E. S. says that most of his cpu usage is in mysql when he is playing 14 tables. That was before we added the code to skip the old parts of the hh files.
What should I -expect- to happen when running fpdb.py ?
Here's what I actually get:
no error logs.
Here's what I actually get:
Code:
E:\fpdb\pyfpdb>fpdb.py Failed to load libs for graphing, graphing will not function. Please install num py and matplotlib. todo: implement obtain_global_lock Opened and read profile file C:\Documents and Settings\Eric.JUBY\Application Dat a\fpdb\default.conf E:\fpdb\pyfpdb>
I am computer illiterate and I know I did something wrong, just dont know what. I have a file called fpdb but not fpdb.py and whenever I try to start it, i get the command prompt and an error message that says it has failed to connect (it then closes, sorry could not get the entire message). Here is he message from my error log. Any suggestions?
File "C:\Documents and Settings\DTP\Desktop\fpdb-1.0_alpha6_p111\pyfpdb\fpdb.py", line 506, in <module>
me = fpdb()
File "C:\Documents and Settings\DTP\Desktop\fpdb-1.0_alpha6_p111\pyfpdb\fpdb.py", line 419, in __init__
self.load_default_profile()
File "C:\Documents and Settings\DTP\Desktop\fpdb-1.0_alpha6_p111\pyfpdb\fpdb.py", line 251, in load_default_profile
self.load_profile(defaultpath)
File "C:\Documents and Settings\DTP\Desktop\fpdb-1.0_alpha6_p111\pyfpdb\fpdb.py", line 329, in load_profile
self.db.connect(self.settings['db-backend'], self.settings['db-host'], self.settings['db-databaseName'], self.settings['db-user'], self.settings['db-password'])
File "C:\Documents and Settings\DTP\Desktop\fpdb-1.0_alpha6_p111\pyfpdb\fpdb_db.py", line 40, in connect
self.db=MySQLdb.connect(host = host, user = user, passwd = password, db = database)
File "C:\Python25\lib\site-packages\MySQLdb\__init__.py", line 74, in Connect
return Connection(*args, **kwargs)
File "C:\Python25\lib\site-packages\MySQLdb\connections.py", line 170, in __init__
super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (1045, "Access denied for user 'fpdb'@'localhost' (using password: YES)")
Any help will be greatly appreciated and I thank you guys especially Steffen for all the work that has already been done.
File "C:\Documents and Settings\DTP\Desktop\fpdb-1.0_alpha6_p111\pyfpdb\fpdb.py", line 506, in <module>
me = fpdb()
File "C:\Documents and Settings\DTP\Desktop\fpdb-1.0_alpha6_p111\pyfpdb\fpdb.py", line 419, in __init__
self.load_default_profile()
File "C:\Documents and Settings\DTP\Desktop\fpdb-1.0_alpha6_p111\pyfpdb\fpdb.py", line 251, in load_default_profile
self.load_profile(defaultpath)
File "C:\Documents and Settings\DTP\Desktop\fpdb-1.0_alpha6_p111\pyfpdb\fpdb.py", line 329, in load_profile
self.db.connect(self.settings['db-backend'], self.settings['db-host'], self.settings['db-databaseName'], self.settings['db-user'], self.settings['db-password'])
File "C:\Documents and Settings\DTP\Desktop\fpdb-1.0_alpha6_p111\pyfpdb\fpdb_db.py", line 40, in connect
self.db=MySQLdb.connect(host = host, user = user, passwd = password, db = database)
File "C:\Python25\lib\site-packages\MySQLdb\__init__.py", line 74, in Connect
return Connection(*args, **kwargs)
File "C:\Python25\lib\site-packages\MySQLdb\connections.py", line 170, in __init__
super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (1045, "Access denied for user 'fpdb'@'localhost' (using password: YES)")
Any help will be greatly appreciated and I thank you guys especially Steffen for all the work that has already been done.
I am computer illiterate and I know I did something wrong, just dont know what. I have a file called fpdb but not fpdb.py and whenever I try to start it, i get the command prompt and an error message that says it has failed to connect (it then closes, sorry could not get the entire message). Here is he message from my error log. Any suggestions?
File "C:\Documents and Settings\DTP\Desktop\fpdb-1.0_alpha6_p111\pyfpdb\fpdb.py", line 506, in <module>
me = fpdb()
File "C:\Documents and Settings\DTP\Desktop\fpdb-1.0_alpha6_p111\pyfpdb\fpdb.py", line 419, in __init__
self.load_default_profile()
File "C:\Documents and Settings\DTP\Desktop\fpdb-1.0_alpha6_p111\pyfpdb\fpdb.py", line 251, in load_default_profile
self.load_profile(defaultpath)
File "C:\Documents and Settings\DTP\Desktop\fpdb-1.0_alpha6_p111\pyfpdb\fpdb.py", line 329, in load_profile
self.db.connect(self.settings['db-backend'], self.settings['db-host'], self.settings['db-databaseName'], self.settings['db-user'], self.settings['db-password'])
File "C:\Documents and Settings\DTP\Desktop\fpdb-1.0_alpha6_p111\pyfpdb\fpdb_db.py", line 40, in connect
self.db=MySQLdb.connect(host = host, user = user, passwd = password, db = database)
File "C:\Python25\lib\site-packages\MySQLdb\__init__.py", line 74, in Connect
return Connection(*args, **kwargs)
File "C:\Python25\lib\site-packages\MySQLdb\connections.py", line 170, in __init__
super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (1045, "Access denied for user 'fpdb'@'localhost' (using password: YES)")
Any help will be greatly appreciated and I thank you guys especially Steffen for all the work that has already been done.
File "C:\Documents and Settings\DTP\Desktop\fpdb-1.0_alpha6_p111\pyfpdb\fpdb.py", line 506, in <module>
me = fpdb()
File "C:\Documents and Settings\DTP\Desktop\fpdb-1.0_alpha6_p111\pyfpdb\fpdb.py", line 419, in __init__
self.load_default_profile()
File "C:\Documents and Settings\DTP\Desktop\fpdb-1.0_alpha6_p111\pyfpdb\fpdb.py", line 251, in load_default_profile
self.load_profile(defaultpath)
File "C:\Documents and Settings\DTP\Desktop\fpdb-1.0_alpha6_p111\pyfpdb\fpdb.py", line 329, in load_profile
self.db.connect(self.settings['db-backend'], self.settings['db-host'], self.settings['db-databaseName'], self.settings['db-user'], self.settings['db-password'])
File "C:\Documents and Settings\DTP\Desktop\fpdb-1.0_alpha6_p111\pyfpdb\fpdb_db.py", line 40, in connect
self.db=MySQLdb.connect(host = host, user = user, passwd = password, db = database)
File "C:\Python25\lib\site-packages\MySQLdb\__init__.py", line 74, in Connect
return Connection(*args, **kwargs)
File "C:\Python25\lib\site-packages\MySQLdb\connections.py", line 170, in __init__
super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (1045, "Access denied for user 'fpdb'@'localhost' (using password: YES)")
Any help will be greatly appreciated and I thank you guys especially Steffen for all the work that has already been done.
It looks you are not connecting to mysql correctly. If you used the installer it should have set up you default.conf file with the correct username and password. On windows xp your default.conf should be in the:
c:\Documents and Settings\YOURNAME\Apllication Data\fpdb
folder. If you don't have a default.conf there copy the one in the docs folder that you downloaded when you downloaded fpdb. The database bits of the default.conf should look like this:
db-backend=2
db-host=localhost
db-databaseName=fpdb
db-user=YOURUSERNAME
db-password=YOURPASSWORD
Eratosthenes, thanks for the help.
I am using XP. I followed your instructions and am now down to 1 error line. Like I said earlier, I am computer illiterate. What should I do now?
./fpdb.py:232: DeprecationWarning: use gtk.UIManager
self.item_factory = gtk.ItemFactory(gtk.MenuBar, "<main>", accel_group)
./fpdb.py:497: GtkWarning: shmget failed: error 38 (Function not implemented)
self.window.show()
Thanks so much.
I am using XP. I followed your instructions and am now down to 1 error line. Like I said earlier, I am computer illiterate. What should I do now?
./fpdb.py:232: DeprecationWarning: use gtk.UIManager
self.item_factory = gtk.ItemFactory(gtk.MenuBar, "<main>", accel_group)
./fpdb.py:497: GtkWarning: shmget failed: error 38 (Function not implemented)
self.window.show()
Thanks so much.
I've been trying to get this working for a couple of days under Mac OS X Tiger. I had fpdb loading and was able to import HH, but couldn't get numpy and matplotlib to load. My environment was a mess, with packages coming in from macports, from source by hand and from the gtk+ native port project, which resulted in having them spread all over.
I was hoping to get as simple as possible of an environment build as possible to make up a howto, so I cleaned out a bunch of stuff and relied more on hand builds (macports dependencies duplicate too much that I already have installed) and now pythonw is failing with a bus error when I try to run fpdb.py.
I've attached the crash code below (fpdb-error.log doesn't get written to), but I think the main difference now from when I had partial success is that I'm running the latest 2.6 uni installer from python.org. I'm not quite sure which version of python was working before, since I had 2.5 installed as well as copies from macport and the gtk+ native port environment. That confusion was part of the reason for trying to start over a bit more from scratch, since the whole situation wasn't lending itself well to a set of instructions that I could post to help out other mac users.
If there's nothing obvious that I'm overlooking, I'll probably try to clear everything out again and start from scratch. I'll try using 2.5 if I can dig up a decent build again (macports keeps trying to put 2.4 on...)
I was hoping to get as simple as possible of an environment build as possible to make up a howto, so I cleaned out a bunch of stuff and relied more on hand builds (macports dependencies duplicate too much that I already have installed) and now pythonw is failing with a bus error when I try to run fpdb.py.
I've attached the crash code below (fpdb-error.log doesn't get written to), but I think the main difference now from when I had partial success is that I'm running the latest 2.6 uni installer from python.org. I'm not quite sure which version of python was working before, since I had 2.5 installed as well as copies from macport and the gtk+ native port environment. That confusion was part of the reason for trying to start over a bit more from scratch, since the whole situation wasn't lending itself well to a set of instructions that I could post to help out other mac users.
If there's nothing obvious that I'm overlooking, I'll probably try to clear everything out again and start from scratch. I'll try using 2.5 if I can dig up a decent build again (macports keeps trying to put 2.4 on...)
Code:
Date/Time: 2008-10-13 14:47:02.836 -0400 OS Version: 10.4.11 (Build 8S2167) Report Version: 4 Command: Python Path: /Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python Parent: bash [1586] Version: ??? (???) PID: 1591 Thread: 0 Exception: EXC_BAD_ACCESS (0x0001) Codes: KERN_PROTECTION_FAILURE (0x0002) at 0x00000000 Thread 0 Crashed: 0 libgobject-2.0.0.dylib 0x03a7803a g_type_test_flags + 97 (gtype.c:3554) 1 libgobject-2.0.0.dylib 0x03a675c2 g_signal_newv + 89 (gsignal.c:1520) 2 libgobject-2.0.0.dylib 0x03a685d7 g_signal_new_valist + 141 (gsignal.c:1687) 3 libgobject-2.0.0.dylib 0x03a671a6 g_signal_new_class_handler + 173 (gsignal.c:1416) 4 libgtk-quartz-2.0.0.dylib 0x02213fc5 gtk_widget_class_init + 5605 (gtkwidget.c:918) 5 libgobject-2.0.0.1400.1.dylib 0x006f662f g_type_class_ref + 2230 6 libgobject-2.0.0.1400.1.dylib 0x006f62db g_type_class_ref + 1378 7 libgobject-2.0.0.1400.1.dylib 0x006f62db g_type_class_ref + 1378 8 libgobject-2.0.0.1400.1.dylib 0x006f62db g_type_class_ref + 1378 9 libgobject-2.0.0.1400.1.dylib 0x006f62db g_type_class_ref + 1378 10 libgobject-2.0.0.1400.1.dylib 0x006dde37 g_object_newv + 2326 11 _gobject.so 0x01084483 pygobject_constructv + 154 (gobjectmodule.c:2246) 12 _gtk.so 0x01237ae5 _wrap_gtk_dialog_new_with_buttons + 436 (gtk.override:2577) 13 org.python.python 0x0026bfe6 type_call + 162 (typeobject.c:745) 14 org.python.python 0x0020e716 PyObject_Call + 77 (abstract.c:2487) 15 org.python.python 0x002b1fd6 PyEval_EvalFrameEx + 10227 (ceval.c:3890) 16 org.python.python 0x002b608f PyEval_EvalCodeEx + 1967 (ceval.c:2942) 17 org.python.python 0x002b6246 PyEval_EvalCode + 87 (ceval.c:521) 18 org.python.python 0x002cce6d PyImport_ExecCodeModuleEx + 193 (import.c:680) 19 org.python.python 0x002cd1d9 load_source_module + 492 (import.c:971) 20 org.python.python 0x002cdfc3 import_submodule + 293 (import.c:2545) 21 org.python.python 0x002ce211 load_next + 195 (import.c:2365) 22 org.python.python 0x002ce730 PyImport_ImportModuleLevel + 291 (import.c:2087) 23 org.python.python 0x002a96c0 builtin___import__ + 156 (bltinmodule.c:50) 24 org.python.python 0x0020e716 PyObject_Call + 77 (abstract.c:2487) 25 org.python.python 0x002ae9bb PyEval_CallObjectWithKeywords + 72 (ceval.c:3548) 26 org.python.python 0x002b09ad PyEval_EvalFrameEx + 4554 (ceval.c:2124) 27 org.python.python 0x002b608f PyEval_EvalCodeEx + 1967 (ceval.c:2942) 28 org.python.python 0x002b6246 PyEval_EvalCode + 87 (ceval.c:521) 29 org.python.python 0x002daadd PyRun_FileExFlags + 305 (pythonrun.c:1330) 30 org.python.python 0x002daf29 PyRun_SimpleFileExFlags + 818 (pythonrun.c:926) 31 org.python.python 0x002eaf0c Py_Main + 3481 (main.c:597) 32 Python 0x00001f8e 0x1000 + 3982 33 Python 0x00001eb5 0x1000 + 3765 Thread 0 crashed with X86 Thread State (32-bit): eax: 0x00000000 ebx: 0x03a77fe7 ecx: 0x011ab300 edx: 0x00000002 edi: 0x00000001 esi: 0x0112fde0 ebp: 0xbfffd648 esp: 0xbfffd610 ss: 0x0000001f efl: 0x00010246 eip: 0x03a7803a cs: 0x00000017 ds: 0x0000001f es: 0x0000001f fs: 0x00000000 gs: 0x00000037 Binary Images Description: 0x1000 - 0x1fff Python /Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python 0xa3000 - 0xaafff _glib.so /usr/local/lib/python2.6/site-packages/gtk-2.0/glib/_glib.so 0xd5000 - 0xd8fff libgthread-2.0.0.1400.1.dylib /Library/Frameworks/Mono.framework/Versions/1.9.1/lib/libgthread-2.0.0.1400.1.dylib 0xdc000 - 0xe4fff libintl.8.0.1.dylib /Library/Frameworks/Mono.framework/Versions/1.9.1/lib/libintl.8.0.1.dylib 0xea000 - 0xebfff libpyglib-2.0.0.dylib /usr/local/lib/libpyglib-2.0.0.dylib 0x205000 - 0x320fff org.python.python 2.6.0, (c) 2004-2008 Python Software Foundation. (2.6.0) /Library/Frameworks/Python.framework/Versions/2.6/Python 0x6d3000 - 0x704fff libgobject-2.0.0.1400.1.dylib /Library/Frameworks/Mono.framework/Versions/1.9.1/lib/libgobject-2.0.0.1400.1.dylib 0x715000 - 0x7bdfff libglib-2.0.0.1400.1.dylib /Library/Frameworks/Mono.framework/Versions/1.9.1/lib/libglib-2.0.0.1400.1.dylib 0x7e4000 - 0x7e7fff strop.so /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/strop.so 0x7f4000 - 0x7f4fff _functools.so /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/_functools.so 0x1048000 - 0x1049fff _locale.so /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/_locale.so 0x1051000 - 0x1053fff operator.so /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/operator.so 0x106b000 - 0x106efff _struct.so /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/_struct.so 0x107f000 - 0x1092fff _gobject.so /usr/local/lib/python2.6/site-packages/gtk-2.0/gobject/_gobject.so 0x10d9000 - 0x10dbfff libgmodule-2.0.0.dylib /Users/rcorrado/gtk/inst/lib/libgmodule-2.0.0.dylib 0x10ee000 - 0x10f2fff libSM.6.dylib /usr/X11R6/lib/libSM.6.dylib 0x1205000 - 0x135bfff _gtk.so /usr/local/lib/python2.6/site-packages/gtk-2.0/gtk/_gtk.so 0x1713000 - 0x1725fff libatk-1.0.0.dylib /Users/rcorrado/gtk/inst/lib/libatk-1.0.0.dylib 0x1782000 - 0x1796fff libgdk_pixbuf-2.0.0.dylib /Users/rcorrado/gtk/inst/lib/libgdk_pixbuf-2.0.0.dylib 0x17f4000 - 0x17f9fff libXrender.1.dylib /opt/local/lib/libXrender.1.dylib 0x2008000 - 0x2356fff libgtk-quartz-2.0.0.dylib /Users/rcorrado/gtk/inst/lib/libgtk-quartz-2.0.0.dylib 0x2cc8000 - 0x2d29fff libgdk-quartz-2.0.0.dylib /Users/rcorrado/gtk/inst/lib/libgdk-quartz-2.0.0.dylib 0x3282000 - 0x32d2fff libgio-2.0.0.dylib /Users/rcorrado/gtk/inst/lib/libgio-2.0.0.dylib 0x342a000 - 0x3435fff libpangocairo-1.0.0.dylib /Users/rcorrado/gtk/inst/lib/libpangocairo-1.0.0.dylib 0x3682000 - 0x36b2fff libpixman-1.0.dylib /Users/rcorrado/gtk/inst/lib/libpixman-1.0.dylib 0x3722000 - 0x373ffff libpng12.0.dylib /Users/rcorrado/gtk/inst/lib/libpng12.0.dylib 0x3780000 - 0x37b3fff libpango-1.0.0.dylib /Users/rcorrado/gtk/inst/lib/libpango-1.0.0.dylib 0x3850000 - 0x38a6fff libcairo.2.dylib /Users/rcorrado/gtk/inst/lib/libcairo.2.dylib 0x3a52000 - 0x3a86fff libgobject-2.0.0.dylib /Users/rcorrado/gtk/inst/lib/libgobject-2.0.0.dylib 0x3b1a000 - 0x3bd5fff libglib-2.0.0.dylib /Users/rcorrado/gtk/inst/lib/libglib-2.0.0.dylib 0x3ddb000 - 0x3de3fff libintl.8.dylib /Users/rcorrado/gtk/inst/lib/libintl.8.dylib 0x3e14000 - 0x3e1dfff _cairo.so /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/cairo/_cairo.so 0x3e4c000 - 0x3eaefff libcairo.2.dylib /opt/local/lib/libcairo.2.dylib 0x3ec8000 - 0x3fbdfff libiconv.2.dylib /opt/local/lib/libiconv.2.dylib 0x3fca000 - 0x3fdafff libz.1.dylib /opt/local/lib/libz.1.dylib 0x3fdf000 - 0x3feefff libICE.6.dylib /usr/X11R6/lib/libICE.6.dylib 0x3ff6000 - 0x40b3fff libX11.6.dylib /usr/X11R6/lib/libX11.6.dylib 0x40db000 - 0x410bfff libpixman-1.0.dylib /opt/local/lib/libpixman-1.0.dylib 0x4115000 - 0x4138fff libfontconfig.1.dylib /opt/local/lib/libfontconfig.1.dylib 0x4141000 - 0x415bfff libexpat.1.dylib /opt/local/lib/libexpat.1.dylib 0x4166000 - 0x41cffff libfreetype.6.dylib /opt/local/lib/libfreetype.6.dylib 0x41e2000 - 0x41fffff libpng12.0.dylib /opt/local/lib/libpng12.0.dylib 0x4206000 - 0x4219fff pango.so /usr/local/lib/python2.6/site-packages/gtk-2.0/pango.so 0x426b000 - 0x4297fff atk.so /usr/local/lib/python2.6/site-packages/gtk-2.0/atk.so 0x43ec000 - 0x43f0fff pangocairo.so /usr/local/lib/python2.6/site-packages/gtk-2.0/pangocairo.so 0x14e79000 - 0x14e84fff datetime.so /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/datetime.so 0x14ea8000 - 0x14ea9fff time.so /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/time.so 0x14eb3000 - 0x14eb6fff _collections.so /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/_collections.so 0x14ec5000 - 0x14ec7fff math.so /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/math.so 0x8fe00000 - 0x8fe4afff dyld 46.16 /usr/lib/dyld 0x90000000 - 0x90171fff libSystem.B.dylib /usr/lib/libSystem.B.dylib 0x901c1000 - 0x901c3fff libmathCommon.A.dylib /usr/lib/system/libmathCommon.A.dylib 0x901c5000 - 0x90202fff com.apple.CoreText 1.1.3 (???) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreText.framework/Versions/A/CoreText 0x90229000 - 0x902fefff ATS /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS 0x9031e000 - 0x90773fff com.apple.CoreGraphics 1.258.79 (???) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics 0x9080a000 - 0x908d2fff com.apple.CoreFoundation 6.4.11 (368.35) /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation 0x90910000 - 0x90910fff com.apple.CoreServices 10.4 (???) /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices 0x90912000 - 0x90a06fff libicucore.A.dylib /usr/lib/libicucore.A.dylib 0x90a56000 - 0x90ad5fff libobjc.A.dylib /usr/lib/libobjc.A.dylib 0x90afe000 - 0x90b62fff libstdc++.6.dylib /usr/lib/libstdc++.6.dylib 0x90bd1000 - 0x90bd8fff libgcc_s.1.dylib /usr/lib/libgcc_s.1.dylib 0x90bdd000 - 0x90c50fff com.apple.framework.IOKit 1.4.8 (???) /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit 0x90c65000 - 0x90c77fff libauto.dylib /usr/lib/libauto.dylib 0x90c7d000 - 0x90f23fff com.apple.CoreServices.CarbonCore 682.30 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore 0x90f66000 - 0x90fcefff com.apple.CoreServices.OSServices 4.1 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices 0x91007000 - 0x91046fff com.apple.CFNetwork 129.22 (129.23) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CFNetwork.framework/Versions/A/CFNetwork 0x91059000 - 0x91069fff com.apple.WebServices 1.1.3 (1.1.0) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/WebServicesCore.framework/Versions/A/WebServicesCore 0x91074000 - 0x910f3fff com.apple.SearchKit 1.0.8 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit 0x9112d000 - 0x9114bfff com.apple.Metadata 10.4.4 (121.36) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata 0x91157000 - 0x91165fff libz.1.dylib /usr/lib/libz.1.dylib 0x91168000 - 0x91307fff com.apple.security 4.5.2 (29774) /System/Library/Frameworks/Security.framework/Versions/A/Security 0x91405000 - 0x9140dfff com.apple.DiskArbitration 2.1.2 /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration 0x91414000 - 0x9141bfff libbsm.dylib /usr/lib/libbsm.dylib 0x9141f000 - 0x91445fff com.apple.SystemConfiguration 1.8.6 /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration 0x91457000 - 0x914cdfff com.apple.audio.CoreAudio 3.0.5 /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio 0x9151e000 - 0x9151efff com.apple.ApplicationServices 10.4 (???) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices 0x91520000 - 0x9154cfff com.apple.AE 314 (313) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE 0x9155f000 - 0x91633fff com.apple.ColorSync 4.4.10 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSync.framework/Versions/A/ColorSync 0x9166e000 - 0x916e1fff com.apple.print.framework.PrintCore 4.6 (177.13) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore 0x9170f000 - 0x917b8fff com.apple.QD 3.10.27 (???) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD 0x917de000 - 0x91829fff com.apple.HIServices 1.5.2 (???) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices 0x91848000 - 0x9185efff com.apple.LangAnalysis 1.6.3 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis 0x9186a000 - 0x91885fff com.apple.FindByContent 1.5 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/FindByContent.framework/Versions/A/FindByContent 0x91890000 - 0x918cdfff com.apple.LaunchServices 183 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices 0x918e1000 - 0x918edfff com.apple.speech.synthesis.framework 3.5 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis 0x918f4000 - 0x91934fff com.apple.ImageIO.framework 1.5.8 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO 0x91947000 - 0x919f9fff libcrypto.0.9.7.dylib /usr/lib/libcrypto.0.9.7.dylib 0x91a3f000 - 0x91a55fff libcups.2.dylib /usr/lib/libcups.2.dylib 0x91a5a000 - 0x91a78fff libJPEG.dylib /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib 0x91a7d000 - 0x91adcfff libJP2.dylib /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib 0x91aee000 - 0x91af2fff libGIF.dylib /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib 0x91af4000 - 0x91b7cfff libRaw.dylib /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libRaw.dylib 0x91b80000 - 0x91b9bfff libPng.dylib /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib 0x91ba0000 - 0x91ba2fff libRadiance.dylib /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib 0x91ba4000 - 0x91c82fff libxml2.2.dylib /usr/lib/libxml2.2.dylib 0x91c9f000 - 0x91cdefff libTIFF.dylib /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib 0x91ce4000 - 0x91ce4fff com.apple.Accelerate 1.3.1 (Accelerate 1.3.1) /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate 0x91ce6000 - 0x91d74fff com.apple.vImage 2.5 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage 0x91d7b000 - 0x91d7bfff com.apple.Accelerate.vecLib 3.3.1 (vecLib 3.3.1) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib 0x91d7d000 - 0x91dd6fff libvMisc.dylib /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib 0x91ddf000 - 0x91e03fff libvDSP.dylib /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib 0x91e0b000 - 0x92214fff libBLAS.dylib /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib 0x9224e000 - 0x92602fff libLAPACK.dylib /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib 0x9262f000 - 0x9271cfff libiconv.2.dylib /usr/lib/libiconv.2.dylib 0x9271e000 - 0x9279cfff com.apple.DesktopServices 1.3.7 /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv 0x927dd000 - 0x92a0dfff com.apple.Foundation 6.4.10 (567.37) /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation 0x92b27000 - 0x92b3efff libGL.dylib /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib 0x92b49000 - 0x92ba1fff libGLU.dylib /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib 0x92bb5000 - 0x92bb5fff com.apple.Carbon 10.4 (???) /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon 0x92bb7000 - 0x92bc7fff com.apple.ImageCapture 3.0.4 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture 0x92bd6000 - 0x92bdefff com.apple.speech.recognition.framework 3.6 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition 0x92be4000 - 0x92beafff com.apple.securityhi 2.0.1 (24742) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI 0x92bf0000 - 0x92c81fff com.apple.ink.framework 101.2.1 (71) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink 0x92c95000 - 0x92c99fff com.apple.help 1.0.3 (32.1) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help 0x92c9c000 - 0x92cbafff com.apple.openscripting 1.2.7 (???) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting 0x92ccc000 - 0x92cd2fff com.apple.print.framework.Print 5.2 (192.4) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print 0x92cd8000 - 0x92d3bfff com.apple.htmlrendering 66.1 (1.1.3) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HTMLRendering.framework/Versions/A/HTMLRendering 0x92d62000 - 0x92da3fff com.apple.NavigationServices 3.4.4 (3.4.3) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/NavigationServices.framework/Versions/A/NavigationServices 0x92dca000 - 0x92dd8fff com.apple.audio.SoundManager 3.9.1 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CarbonSound.framework/Versions/A/CarbonSound 0x92ddf000 - 0x92de4fff com.apple.CommonPanels 1.2.3 (73) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels 0x92de9000 - 0x930defff com.apple.HIToolbox 1.4.10 (???) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox 0x931e4000 - 0x931effff com.apple.opengl 1.4.16 /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL 0x9327f000 - 0x9327ffff com.apple.Cocoa 6.4 (???) /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa 0x93281000 - 0x93937fff com.apple.AppKit 6.4.10 (824.48) /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit 0x93cb8000 - 0x93d33fff com.apple.CoreData 91 (92.1) /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData 0x93d6c000 - 0x93e25fff com.apple.audio.toolbox.AudioToolbox 1.4.7 /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox 0x93e68000 - 0x93e68fff com.apple.audio.units.AudioUnit 1.4.2 /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit 0x93e6a000 - 0x9402bfff com.apple.QuartzCore 1.4.12 /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore 0x94071000 - 0x940b2fff libsqlite3.0.dylib /usr/lib/libsqlite3.0.dylib 0x940ba000 - 0x940f4fff libGLImage.dylib /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib 0x940f9000 - 0x9410ffff com.apple.CoreVideo 1.4.2 /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo Model: MacBook2,1, BootROM MB21.00A5.B07, 2 processors, Intel Core 2 Duo, 2 GHz, 2 GB Graphics: Intel GMA 950, GMA 950, Built-In, spdisplays_integrated_vram Memory Module: BANK 0/DIMM0, 1 GB, DDR2 SDRAM, 667 MHz Memory Module: BANK 1/DIMM1, 1 GB, DDR2 SDRAM, 667 MHz AirPort: AirPort Extreme, 1.4.4 Bluetooth: Version 1.9.5f4, 2 service, 0 devices, 2 incoming serial ports Network Service: AirPort, AirPort, en1 Serial ATA Device: TOSHIBA MK8034GSX, 74.53 GB Parallel ATA Device: MAT****ADVD-R UJ-857D USB Device: Built-in iSight, Micron, Up to 480 Mb/sec, 500 mA USB Device: Bluetooth USB Host Controller, Apple, Inc., Up to 12 Mb/sec, 500 mA USB Device: Apple Internal Keyboard / Trackpad, Apple Computer, Up to 12 Mb/sec, 500 mA USB Device: IR Receiver, Apple Computer, Inc., Up to 12 Mb/sec, 500 mA
Quite a few of those errors are with Postgres, is that the db you configured?
I was hoping to get as simple as possible of an environment build as possible to make up a howto, so I cleaned out a bunch of stuff and relied more on hand builds (macports dependencies duplicate too much that I already have installed) and now pythonw is failing with a bus error when I try to run fpdb.py.
I've attached the crash code below (fpdb-error.log doesn't get written to), but I think the main difference now from when I had partial success is that I'm running the latest 2.6 uni installer from python.org. I'm not quite sure which version of python was working before, since I had 2.5 installed as well as copies from macport and the gtk+ native port environment. That confusion was part of the reason for trying to start over a bit more from scratch, since the whole situation wasn't lending itself well to a set of instructions that I could post to help out other mac users.
If there's nothing obvious that I'm overlooking, I'll probably try to clear everything out again and start from scratch. I'll try using 2.5 if I can dig up a decent build again (macports keeps trying to put 2.4 on...)
I've attached the crash code below (fpdb-error.log doesn't get written to), but I think the main difference now from when I had partial success is that I'm running the latest 2.6 uni installer from python.org. I'm not quite sure which version of python was working before, since I had 2.5 installed as well as copies from macport and the gtk+ native port environment. That confusion was part of the reason for trying to start over a bit more from scratch, since the whole situation wasn't lending itself well to a set of instructions that I could post to help out other mac users.
If there's nothing obvious that I'm overlooking, I'll probably try to clear everything out again and start from scratch. I'll try using 2.5 if I can dig up a decent build again (macports keeps trying to put 2.4 on...)
You need to pick a toolset and stick with it i'd suggest - fink or macports, native or x11. Fink(stable!) + x11 is probably your best bet, i don't envy the compile.
The error looks like the new version oy python/pygtk attempting to set hardware up incorrectly.
I wish you luck.
Thanks for the quick reply.
That's good to know. I was hoping to do some testing on my existing HH's before running it live on the PokerStars client, but maybe that's the next step after I get it working again. I suppose that the table viewer and hud are the main tools that have been implemented so far anyway.
I was able to build pygtk from source against the native gtk+ package. I'm going to try this time using macports as much as possible. If I'm lucky I won't need the native gtk and I can suggest a solution to other mac users that minimizes the number of copies of python that will be installed...
I've had X working for a while here, but I think I broke some things last time I tried updating gimp. I know OpenOffice is working under X, but xfig and gimp are broken. I definitely had more patience for hacking a few years ago when I ran Linux. OS X spoiled me.
Thanks. I hope to report back later with something useful to the community.
Ugh... looks like pygtk is a build it yourself job, or a "get X11 running" job.
We are all using 2.5. 2.6 might be a little bit fresh at the moment, i think you'll have more success with the older version.
You need to pick a toolset and stick with it i'd suggest - fink or macports, native or x11. Fink(stable!) + x11 is probably your best bet, i don't envy the compile.
We are all using 2.5. 2.6 might be a little bit fresh at the moment, i think you'll have more success with the older version.
You need to pick a toolset and stick with it i'd suggest - fink or macports, native or x11. Fink(stable!) + x11 is probably your best bet, i don't envy the compile.
I've had X working for a while here, but I think I broke some things last time I tried updating gimp. I know OpenOffice is working under X, but xfig and gimp are broken. I definitely had more patience for hacking a few years ago when I ran Linux. OS X spoiled me.
I wish you luck.
That is the log file from fpdb. When setting up fpdb, I followed the instructions on the site
http://fpdb.****************/docs-install-windows.php
so I am not sure what data base I am using.
My two cents on possible places for performance improvement:
- As noted, many places of the python code aren't exactly well written or performant. However, the VAST majority of CPU load is in MySQL - when bulk importing I have around 85-90% MySQL load (on small DBs, 2-5k hands). So my best guesses for places for performance improvements in import are:
- If possible, commit multiple lines of e.g. HandsActions in one go, rather than one SQL access per line.
- Use a unix socket (or the Windows equivalent, assuming there is one) for accessing the DB rather than TCP/IP.
- Using PostgreSQL or SQLite may or may not produce significantly better or worse performance
- Remove useless SQL accesses (e.g. siteID could be hardcoded easily as it is filled by table setup anyways) and change crappy ones (e.g. I'm not buying that it is necessary to do a SELECT after an INSERT just to get the id of the new field...).
- using
might help a bit.
However, quite honestly, I think the biggest performance gains could be made by optimising the database itself, e.g. ensuring it's on a fast drive (or at least in the fastest region of whatever drive(s) you have), using RAID0, 5 or 6 if you can, fiddling with configuration options of the DB such as caching, ...
Now onto some other things
Actually the HUD can display much more, you just need to edit the rows and columns fields then add lines - e.g. I have 20 fields for holdem, and default for everything else.
The dependencies (listed on the webpage) and a text editor. Though ideally you should use git to always grab the latest version of my tree, but if you really hate git just use the latest alpha release.
To send patches:
- Ideal would be for you to have a public git tree
- Alternatively I'll take diffs
- As a last resort I'd take whole files.
On python exception handling: I honestly don't know if it's faster than "if divider!=0" or not (I'd be inclined to agree with you, a simple numerical check is pretty much by definition faster than exceptions. fpdb_import now has some timing, you could use that as an example. However, as noted above, I don't think that too much can be gained there, tho every tick counts and assuming there is no reduction in reliability or cleanness I'd take any performance improving patch.
Editors: My best suggestion is Exclipse+pydev, from your posts I'm guessing you have a sufficiently powerful machine to use those. There are others but I can't remember the names (one might've been called SPE), I tried one or two and was rather disappointed tbh. But I'm not a big IDE fan so don't take my word for it.
Format: No formal spec. However, there's examples in the form of real PS hands in the regression-test folder.
Sites: Looks that way
If their format is similiar to PS or FTP then I think the easiest&best way to do this would be to write a converter that turns your cake/everleaf hands into PS or FTP hands and have that called if such a history file is detected.
Is there no file fpdb-error.log or fpdb-error-log.txt?
That shouldn't work anymore, significant errors should be stored in a log file. (this will at some point be fixed so that the errors are stored in the log as well as printed to stdout) Note that the file may not be filled until fpdb exits, though that's obviously not the issue for you since it exits immediately.
Brilliant, keep us posted Instructions would be very useful, afaik there is no tracker that runs in mac.
- As noted, many places of the python code aren't exactly well written or performant. However, the VAST majority of CPU load is in MySQL - when bulk importing I have around 85-90% MySQL load (on small DBs, 2-5k hands). So my best guesses for places for performance improvements in import are:
- If possible, commit multiple lines of e.g. HandsActions in one go, rather than one SQL access per line.
- Use a unix socket (or the Windows equivalent, assuming there is one) for accessing the DB rather than TCP/IP.
- Using PostgreSQL or SQLite may or may not produce significantly better or worse performance
- Remove useless SQL accesses (e.g. siteID could be hardcoded easily as it is filled by table setup anyways) and change crappy ones (e.g. I'm not buying that it is necessary to do a SELECT after an INSERT just to get the id of the new field...).
- using
Code:
UPDATE HudCache SET vpip = vpip+1, prf = pfr+0, ... WHERE ...;
However, quite honestly, I think the biggest performance gains could be made by optimising the database itself, e.g. ensuring it's on a fast drive (or at least in the fastest region of whatever drive(s) you have), using RAID0, 5 or 6 if you can, fiddling with configuration options of the DB such as caching, ...
Now onto some other things
To send patches:
- Ideal would be for you to have a public git tree
- Alternatively I'll take diffs
- As a last resort I'd take whole files.
On python exception handling: I honestly don't know if it's faster than "if divider!=0" or not (I'd be inclined to agree with you, a simple numerical check is pretty much by definition faster than exceptions. fpdb_import now has some timing, you could use that as an example. However, as noted above, I don't think that too much can be gained there, tho every tick counts and assuming there is no reduction in reliability or cleanness I'd take any performance improving patch.
Anyone know of any nice IDE type editors, that will help me cross reference what code goes to where, and which does what when?
Is there a document describing the PS hand history format, and/or the eventual "fpdb" format?
Since I currently do all my play on Everleaf and Cake, once I understand what all is going on in here, I guess I might be the one leading the charge to get alternative site support
Is there a document describing the PS hand history format, and/or the eventual "fpdb" format?
Since I currently do all my play on Everleaf and Cake, once I understand what all is going on in here, I guess I might be the one leading the charge to get alternative site support
Format: No formal spec. However, there's examples in the form of real PS hands in the regression-test folder.
Sites: Looks that way
If their format is similiar to PS or FTP then I think the easiest&best way to do this would be to write a converter that turns your cake/everleaf hands into PS or FTP hands and have that called if such a history file is detected.
What should I -expect- to happen when running fpdb.py ?
Here's what I actually get:
no error logs.
Here's what I actually get:
Code:
E:\fpdb\pyfpdb>fpdb.py Failed to load libs for graphing, graphing will not function. Please install num py and matplotlib. todo: implement obtain_global_lock Opened and read profile file C:\Documents and Settings\Eric.JUBY\Application Dat a\fpdb\default.conf E:\fpdb\pyfpdb>
Brilliant, keep us posted Instructions would be very useful, afaik there is no tracker that runs in mac.
That is the log file from fpdb. When setting up fpdb, I followed the instructions on the site
http://fpdb.****************/docs-install-windows.php
so I am not sure what data base I am using.
http://fpdb.****************/docs-install-windows.php
so I am not sure what data base I am using.
On python exception handling: I honestly don't know if it's faster than "if divider!=0" or not (I'd be inclined to agree with you, a simple numerical check is pretty much by definition faster than exceptions. fpdb_import now has some timing, you could use that as an example. However, as noted above, I don't think that too much can be gained there, tho every tick counts and assuming there is no reduction in reliability or cleanness I'd take any performance improving patch.
I've managed to get fpdb running without a lot of excessive hacking today. Despite getting the error that numpy and matplotlib couldn't be loaded, I can get a simple graph up. Loading my HH is the extent of my current tests. Testing the table viewer and HUD will have to wait a couple of days.
I've attached some notes below, feel free to reproduce them in any way that you'd like. These steps actually use the X server, but I think some additional configuration will remove the need for it.
0. Need XCode 2.5 or better and some version of X windows. I'm using macports for as much as possible. Head to
http://www.macports.org/
and pick up a dmg for your OS X version.
NOTE: MacPorts will download source for all packages and compile binaries. Depending on your computer, connection etc, the steps below will take several hours to complete. Your complete attention will not be needed for most of it though.
1. Macports for python, pygtk, etc
Get python 2.5:
sudo port install python25
sudo port install python_select
sudo python_select python25
Now we want pygtk.
sudo port install py25-gtk
will install glib2 and the other dependencies. We also want numpy and matplotlib
sudo port install py25-matplotlib
Now mysql-python
sudo port install py25-mysql
This installs mysql5 as a dependency.
2. Configure mysql
Some info on configuring mysql can be found at
http://2tbsp.com/content/install_and...sql_5_macports
sudo /opt/local/lib/mysql5/bin/mysql_install_db --user=mysql
sudo mkdir /opt/local/var/run
sudo /opt/local/bin/mysqld_safe5 &
sudo /opt/local/lib/mysql5/bin/mysql_secure_installation
Now run
mysql5 -u root -p
CREATE DATABASE fpdb;
GRANT ALL PRIVILEGES ON fpdb.* TO 'fpdb'@'localhost' IDENTIFIED BY 'newPassword' WITH GRANT OPTION;
Replace newPassword with a suitable password.
3. Configure fpdb
Now create ~/.fpdb and copy docs/default.conf to it. Edit the file and enter the password you set in mysql just above.
Now start your X windows client, open a shell, find the pyfpdb/fpdb.py file and run
pythonw path_to/fpdb.py &
http://www.macports.org/
and pick up a dmg for your OS X version.
NOTE: MacPorts will download source for all packages and compile binaries. Depending on your computer, connection etc, the steps below will take several hours to complete. Your complete attention will not be needed for most of it though.
1. Macports for python, pygtk, etc
Get python 2.5:
sudo port install python25
sudo port install python_select
sudo python_select python25
Now we want pygtk.
sudo port install py25-gtk
will install glib2 and the other dependencies. We also want numpy and matplotlib
sudo port install py25-matplotlib
Now mysql-python
sudo port install py25-mysql
This installs mysql5 as a dependency.
2. Configure mysql
Some info on configuring mysql can be found at
http://2tbsp.com/content/install_and...sql_5_macports
sudo /opt/local/lib/mysql5/bin/mysql_install_db --user=mysql
sudo mkdir /opt/local/var/run
sudo /opt/local/bin/mysqld_safe5 &
sudo /opt/local/lib/mysql5/bin/mysql_secure_installation
Now run
mysql5 -u root -p
CREATE DATABASE fpdb;
GRANT ALL PRIVILEGES ON fpdb.* TO 'fpdb'@'localhost' IDENTIFIED BY 'newPassword' WITH GRANT OPTION;
Replace newPassword with a suitable password.
3. Configure fpdb
Now create ~/.fpdb and copy docs/default.conf to it. Edit the file and enter the password you set in mysql just above.
Now start your X windows client, open a shell, find the pyfpdb/fpdb.py file and run
pythonw path_to/fpdb.py &
It should be possible for anyone with an sf account to edit the wiki
Feedback is used for internal purposes. LEARN MORE