<?xml version="1.0"?>
<rss version="2.0">
   <channel>
      <title>Cognifty</title>
      <link>http://cognifty.com/</link>
	  <ttl>240</ttl>
      <description>Next generation PHP framework</description>
      <language>en-us</language>
      <pubDate>Wed, 03 Dec 2008 04:00:00 -0500</pubDate>
      <lastBuildDate>Wed, 03 Dec 2008 00:00:00 -0500</lastBuildDate>
      <generator>Cognifty 16</generator>
	  
      <item>
			<title>Cognifty 16: Sharing Modes and API Agents</title>
			<link>http://cognifty.com/blog.entry/id=11/cognifty_16_sharing_modes_and_api_agents.html</link>
			<category>BlogNifty</category>
			<description>

I didn't blog about release 15 specifically, so I'll combine the new features from 15 and 16 into  one post.


Release 15



Cognifty release 15 brings a new concept of &quot;Sharing Modes&quot; to the table.  A sharing mode  is a default implementation of row level security.  



Traditionally, many PHP applications completely lack any concept of groups or roles. This was one of the major road blocks which kept me from adopting applications  like &quot;DotProject&quot;.  In DotProject, if you wanted a user to be able to view   tickets, for example, this user would then be able to view all tickets in the system,  regardless of which group a certain user belonged to.  If you were to expose parts of  DotProject to your external clients, they would be able to see all tickets submitted  from all of your clients.



In a system such as this, we can see that there is some level of security, the ability  - or ROLE - to view tickets can be restricted to certain users.  But each record of dat</description>
			<pubDate>Wed, 01 Oct 2008 14:24:04 -0400</pubDate>
			<guid>http://cognifty.com/blog.entry/id=11/cognifty_16_sharing_modes_and_api_agents.html</guid>
      </item>
	  
      <item>
			<title>Cognifty 0014, nanoweb, and embedding PHP</title>
			<link>http://cognifty.com/blog.entry/id=10/latest_release_nanoweb_and_embedding_php.html</link>
			<category>BlogNifty</category>
			<description>
<p>
In honor of this release's compatibility with nanoweb and the new SQLite PDO driver, I've  written the first part of an article dealing with how to write your own virtual host  control panel, or other embedded PHP servers.
</p>

<p>
You can build a PHP-CGI binary for 1 platform, compile in  PDO and SQLite (since sqlite is just a C client library and not a server), and ship it  with nanoweb.  Now you have a full Web application stack in only about 14 Mb (depending  on what you throw into the php-cgi and how much you compile statically). 
</p>
</description>
			<pubDate>Mon, 28 Jul 2008 10:56:40 -0400</pubDate>
			<guid>http://cognifty.com/blog.entry/id=10/latest_release_nanoweb_and_embedding_php.html</guid>
      </item>
	  
      <item>
			<title>Live Cheatsheet Brings Tutorials to Life</title>
			<link>http://cognifty.com/blog.entry/id=9/live_cheatsheet_brings_tutorials_to_life.html</link>
			<category>BlogNifty</category>
			<description>
<p>
I've just added a new &quot;live cheat sheet&quot; to the <a href="http://cognifty.com/index.php/tutorial/" class="urlextern" title="http://cognifty.com/index.php/tutorial/">http://cognifty.com/index.php/tutorial/</a> section.  I've seen some other  projects which have these so-called &quot;cheat sheets&quot;, but the cheat sheet is simply a huge PDF.  These PDFs usually show a graphical representation of the software system as  a set colored blocks and arrows with tiny variables written inside the blocks.  These  variables are supposed to help you remember which functions are available at which points  in the system. 
</p>
</description>
			<pubDate>Thu, 10 Jul 2008 09:51:47 -0400</pubDate>
			<guid>http://cognifty.com/blog.entry/id=9/live_cheatsheet_brings_tutorials_to_life.html</guid>
      </item>
	  
      <item>
			<title>Is Your MVC MIA When it Comes to 404s?</title>
			<link>http://cognifty.com/blog.entry/id=8/is_your_mvc_mia_when_it_comes_to_404s.html</link>
			<category>BlogNifty</category>
			<description>
<p>
How can we capture 404 errors in MVC frameworks? Apache always finds the index.php file  that kicks off the MVC application. So, should a missing controller constitute an error at all?  Is sending a 404 the &quot;right&quot; thing to do? 
</p>
</description>
			<pubDate>Mon, 07 Jul 2008 18:35:37 -0400</pubDate>
			<guid>http://cognifty.com/blog.entry/id=8/is_your_mvc_mia_when_it_comes_to_404s.html</guid>
      </item>
	  
      <item>
			<title>Addslashes(): don't call it a comeback</title>
			<link>http://cognifty.com/blog.entry/id=6/addslashes_dont_call_it_a_comeback.html</link>
			<category>BlogNifty</category>
			<description>
<p>
I've seen a lot of people talking about mysql_real_escape_string() vs addslashes()  vs addcslashes().  There seems to be a lot of real confusion about what these  functions do (even with the php.net manual around), especially when it comes to   character sets.  I feel that some people are being <em class="u">scared</em> into using some escaping  methods with which they are not very familiar.   So, I've decided to lay it all out in a few charts so there is no confusion  about what each function does and how each can help protect against SQL injection attacks.
</p>
</description>
			<pubDate>Thu, 12 Jun 2008 11:25:18 -0400</pubDate>
			<guid>http://cognifty.com/blog.entry/id=6/addslashes_dont_call_it_a_comeback.html</guid>
      </item>
	  
      <item>
			<title>Paging Dr. Active Record</title>
			<link>http://cognifty.com/blog.entry/id=5/paging_doctor_active_record.html</link>
			<category>BlogNifty</category>
			<description><p>
Release 10 of Cognifty has a nice little database feature that I haven't noticed in  other libraries.  
I'm not saying they don't have them, but they don't really  announce useful tools to developers, just the same old stuff about OOP and some  directory structure loosely based on LogiCreate.
</p>

<p>
The feature about which I'm talking is the getUnlimitedCount() method.  When working with  data items, or active records, or SQL abstraction, or whatever you want to call it, the  getUnlimitedCount method runs the query it would normally run, but it selects the  total number of records without including the LIMIT or ORDER BY clauses.
</p></description>
			<pubDate>Wed, 21 May 2008 10:43:49 -0400</pubDate>
			<guid>http://cognifty.com/blog.entry/id=5/paging_doctor_active_record.html</guid>
      </item>
	  
      <item>
			<title>Filtering Spam as a Web Service</title>
			<link>http://cognifty.com/blog.entry/id=4/Filtering_Spam_as_a_Web_Service</link>
			<category>BlogNifty</category>
			<description>
<p>
Capturing spam as a Web service is becoming increasingly popular.
Services like Akismet, Akisment, Mollum, Defensio, can scan the content 
from your site's visitors, but what about the <i>behavior</i>?
</p>
</description>
			<pubDate>Mon, 28 Apr 2008 12:34:00 -0400</pubDate>
			<guid>http://cognifty.com/blog.entry/id=4/Filtering_Spam_as_a_Web_Service</guid>
      </item>
	  
      <item>
			<title>Blob Streaming in PHP</title>
			<link>http://cognifty.com/blog.entry/id=3/Blob_Streaming_in_PHP</link>
			<category>BlogNifty</category>
			<description><p>
There is one huge disadvantage to storing large files in a database when it comes to PHP, and that 
disadvantage is PHP itself, specifically the MySQL driver.  When PHP requests data from MySQL, the 
result set, if large enough, will get paged to disk on by the server.  When the MySQL client library 
in PHP gets the result, it keeps a copy of the data, and then <i>copies</i> the values into the Zend 
Engine so PHP can access it.  This can lead to 3 times the amount of data, slowing down a PHP process 
that is reading BLOBs from the database.
</p></description>
			<pubDate>Wed, 16 Apr 2008 19:15:15 -0400</pubDate>
			<guid>http://cognifty.com/blog.entry/id=3/Blob_Streaming_in_PHP</guid>
      </item>
	  
      <item>
			<title>Why people still use PHP4</title>
			<link>http://cognifty.com/blog.entry/id=2/Why_people_still_use_PHP4</link>
			<category>BlogNifty</category>
			<description><p>
Everybody thinks PHP5 is so great, I hear it all the time.  People say, "We should use PHP5, 
it's so great", "It has much better support for OOP", "You can do so much more with 5 than with 4",
 etc. etc.  You get my point.
</p>


<p>
The problem is, every new feature of PHP5 has some crippling bug that causes it to be unusable, 
or at least not usable in a way that makes your code better or easier to understand.
</p>
</description>
			<pubDate>Tue, 05 Feb 2008 19:36:17 -0500</pubDate>
			<guid>http://cognifty.com/blog.entry/id=2/Why_people_still_use_PHP4</guid>
      </item>
	  
      <item>
			<title>Release 8</title>
			<link>http://cognifty.com/blog.entry/id=1/Release_8</link>
			<category>BlogNifty</category>
			<description><p>
I'm just about ready to release version 8.  There's been a lot of visual enhancements
to the admin screens.  New jQuery tabs have been added to a lot of the content screens, 
and a graphic check mark has replaced the basic "yes/no" values in the "is published" columns.
</p></description>
			<pubDate>Mon, 04 Feb 2008 11:57:25 -0500</pubDate>
			<guid>http://cognifty.com/blog.entry/id=1/Release_8</guid>
      </item>
	  
   </channel>
</rss>