Vi segnalo questa interessante lettura:

Over the past decade, the world has seen advances in rootkits running on Windows and Unix operating systems that few would have thought possible. Now, it's Mac OS X's turn, as a security researcher plans to share a variety of techniques for developing the ultra-stealthy programs for the Apple platform.

Comments Nessun Commento »

Vi segnalo questa interessante lettura:

A user can save their login information by ticking off a checkbox in the login form and AutoLogin will store their information in a cookie to automatically log them in (using the Auth Component) on their next visit.

Comments Nessun Commento »

Vi segnalo questa interessante lettura:

snydeq writes "Pwn2Own winner Charlie Miller has revealed an SMS vulnerability that could provide hackers with root access to the iPhone. Malicious code sent by SMS to run on the phone could include commands to monitor location using GPS, turn on the phone's microphone to eavesdrop on conversations, or make the phone join a DDoS attack or botnet, Miller said. Miller did not provide detailed description of the SMS vulnerability, citing an agreement with Apple, which is working to fix the vulnerability in advance of Black Hat, where Miller plans to discuss the attack in greater detail. 'SMS is a great vector to attack the iPhone,' Miller said, as SMS can send binary code that the iPhone processes without user interaction. Sequences can be sent to the phone as multiple messages that are automatically reassembled, thereby surpassing individual SMS message limits of 140 bytes."

Read more of this story at Slashdot.

Comments Nessun Commento »

Vi segnalo questa interessante lettura:

MegaZine 3 is an open source & free Flash pageflip engine for presenting any content with a book-like interface where users can flip the pages.

It is built with ActionScript 3 & customized very easily via XML files.

Free Flash Pageflip

Features of MegaZine 3:

  • deep linking with integrated SWFaddress support
  • control bar to navigate through pages easier (can be disabled)
  • page caching for faster browsing
  • ability to use any content in pages like sound, images, movies & more
  • easy customization of background, colors & ability to create transparent pages
  • advanced localization support (even sounds, iamges can be bound to languages)
  • image zooming & image galleries inside pages

This pageflip engine is well-documented & a working demo can be found here.

Tip: There is a batch-script offered at the download page for auto converting PDF documents into Flash pageflip presentations.

Some other free pageflip engines:

Special Downloads:
Free Admin Template For Web Applications
jQuery Dynamic Drag’n Drop
ScheduledTweets

Advertisements:
SSLmatic - Cheap SSL Certificates (from $19.99/year)
Dreamhost $50 Discount Code: WRD
Follow WebResourcesDepot At Twitter And Get More Resources!

Tags:

Related posts

Comments Nessun Commento »

Vi segnalo questa interessante lettura:

Cake has a wonderful shell script function built into it called extract that will run through your code and create a .po file full of all of the text contained within your __('My text here') calls. You can then pass these files onto to translators to modify them for your languages. When you want to add variables though, you have to break it up into pieces which may change the context of the phrase. Here's a way around that.

Comments Nessun Commento »

Vi segnalo questa interessante lettura:

After whinging loudly about not having access to the Google Wave preview, Santa GOOG dropped me an invite. Last night I held a Wave Q&A on Twitter; here are the results, complete with screenshots.

Comments Nessun Commento »

Vi segnalo questa interessante lettura:

A prehistoric complex, including two 6,000-year-old tombs, has been discovered by archaeologists in Hampshire.

Comments Nessun Commento »

Vi segnalo questa interessante lettura:


Google Apps Sync for Microsoft Outlook is a plug in that allows Microsoft Outlook to run on the Google Apps backend rather than Microsoft Exchange Server. End users can continue to use the familiar Microsoft Outlook interface for email, calendar and contacts as they transition to Google Apps.

Editions included:
Premier and Education Editions

Languages included:
Available worldwide with US English interface

How to access what's new:
You can download Google Apps Sync for Microsoft Outlook at www.google.com/apps/get-outlook-sync.

For more information:
http://googleenterprise.blogspot.com/2009/06/use-microsoft-outlook-with-google-apps.html

Get these product update alerts by email
Subscribe to the RSS feed of these updates

Comments Nessun Commento »

Vi segnalo questa interessante lettura:

Hey folks,

if you are not familiar with Mariano's Sluggable Behavior, you should definitely check it out. It's a nice tool to generate SEO-friendly urls in your application. If you are anything like debuggable.com with our long urls, you might want to look at it. ;)

If you don't know what a url slug is:

A slug is a few words that describe a post or a page. Slugs are usually a URL friendly version of the post title, but a slug can be anything you like. Slugs are meant to be used with your site's urls as they help describe what the content at the URL is. They might or might not help your SEO ranking as well for the keywords in the slug/content.

Example post url: http://flashfun247.com/games/play/racing/tg-motocross-2.

The slug for that game content is "tg-motocross-2".

This blogpost deals with migrating an existing production table into using Mariano's sluggable behavior and thereby increasing SEO friendliness of your site.

Step 1: Back up the database table

Back up the table for which you want to add slugs. We cannot be blamed for any database damage this might cause.

Step 2: Modify your database

Add a "slug" field to the table. The default length that the behavior uses is 100 chars which should be enough in most cases. So VARCHAR(100) is what you need or the equivalent for your db driver.

Step 3: Add your $actsAs declaration

Add the proper call to $actsAs to the model that you want to migrate. Put in any existing behaviors that you need as well:

php
  1. var $actsAs = array(
  2.   'Containable',
  3.   'Lookupable',
  4.   'Sluggable' => array('overwrite' => true)
  5. );

Make sure to set the overwrite option, as otherwise the behavior will refuse to overwrite the slug field the way we will do it. Also make sure to set the 'label' option if the table field that your slugs will depend on is not called 'title'.

For the full host of options, check the sluggable behavior.

Important: The field your slugs depend on (title, name or combinations) MUST NOT be empty for any row in your table. The shell takes this into account and provides you with an error log. To save you some headaches, make sure the fields are properly filled before you run the sluggish shell.

Step 4: Modify The Sluggable Behavior Code

You need to change the Sluggable behavior code on two occurances to make it work with the recent Cake releases.

1. Change Line 121 to:

php
  1. $conditions = array($Model->alias . '.' . $this->__settings[$Model->alias]['slug'] . ' LIKE' => $slug . '%');

2. Change Line 125 to:

php
  1. $conditions[$Model->alias . '.' . $Model->primaryKey . ' <>'] = $Model->id;

This is simply changing the syntax for NOT and LIKE conditions.

Step 5: Download Debuggable's Sluggish Shell

Copy the following code to a 'sluggish.php' file in your vendors/shells folder. Just mouseover the code to see it in raw text.

php
  1. <?php
  2. /**
  3.  * Sluggish Shell
  4.  *
  5.  * Set overwrite => true before running this in your $actsAs declaration!
  6.  * This shell allows you to generate unique slugs for a database table ready for use
  7.  * with the sluggable behavior by Mariano Iglesias
  8.  *
  9.  *
  10.  * Sluggish Shell : Make your table sluggable
  11.  * Copyright 2009, Debuggable, Ltd. (http://debuggable.com)
  12.  *
  13.  * Licensed under The MIT License
  14.  * Redistributions of files must retain the above copyright notice.
  15.  *
  16.  * @filesource
  17.  * @copyright     Copyright 2009, Debuggable, Ltd. (http://debuggable.com)
  18.  * @link          http://www.cakefoundation.org/projects/info/cakephp CakePHP(tm) Project
  19.  * @license       http://www.opensource.org/licenses/mit-license.php The MIT License
  20.  */
  21. class SluggishShell extends Shell {
  22. /**
  23.  * undocumented function
  24.  *
  25.  * @return void
  26.  * @access public
  27.  */
  28.   function main() {
  29.     if (empty($this->args)) {
  30.       return $this->out('You need to specify a modelname');
  31.     }
  32.  
  33.     $model = $this->args[0];
  34.     $force = isset($this->args[1]) ? $this->args[1] : false;
  35.  
  36.     $Model = ClassRegistry::init($model);
  37.     $behavior = 'Sluggable';
  38.  
  39.     if (!is_object($Model)) {
  40.       return $this->out('This model does not exist.');
  41.     }
  42.  
  43.     if (!in_array($behavior, $Model->actsAs) && !array_key_exists($behavior, $Model->actsAs)) {
  44.       return $this->out('The Sluggable Behavior is not yet linked to the model.');
  45.     }
  46.  
  47.     $label = 'title';
  48.     if (isset($Model->actsAs['Sluggable']['label'])) {
  49.       $label = $Model->actsAs['Sluggable']['label'];
  50.     }
  51.  
  52.     $Model->recursive = -1;
  53.     $conditions = $force ? false : array('slug' => '');
  54.     $rows = $Model->find('all', compact('conditions'));
  55.     $count = count($rows);
  56.  
  57.     $i = 0;
  58.     foreach ($rows as $row) {
  59.       $Model->set(array(
  60.         $Model->primaryKey => $row[$model][$Model->primaryKey],
  61.         $label => $row[$model][$label]
  62.       ));
  63.       $Model->save();
  64.  
  65.       $row = $Model->find('first', array(
  66.         'conditions' => array(
  67.           $Model->primaryKey => $row[$model][$Model->primaryKey],
  68.           'slug' => ''
  69.         ),
  70.         'contain' => false
  71.       ));
  72.       if (empty($row)) {
  73.         $i++;
  74.       } else {
  75.         $this->out('Problem saving the slug for ' . $row[$model][$label]);
  76.         $this->out($Model->validationErrors);
  77.       }
  78.     }
  79.  
  80.     $this->out('Added ' . $i . ' slugs for ' . $count . ' ' . Inflector::pluralize($model));
  81.   }
  82. /**
  83.  * undocumented function
  84.  *
  85.  * @return void
  86.  * @access public
  87.  */
  88.   function help() {
  89.     $this->out('Debuggable Ltd. Sluggish Shell - http://debuggable.com');
  90.     $this->hr();
  91.     $this->out('Important: Configure your paths in the shell\'s initialize() function.');
  92.     $this->hr();
  93.     $this->out('This shell allows you to migrate a database table to use Mariano Iglesias\' Sluggable Behavior.');
  94.     $this->out('Add a slug field to the table, download the sluggable behavior, add your $actsAs declaration and run this shell.');
  95.     $this->out('');
  96.     $this->hr();
  97.     $this->out("Usage: cake sluggish ModelNameInCamelCase");
  98.     $this->out('');
  99.   }
  100. }
  101. ?>

The code is very simple. The shell takes a modelname and checks if your $actsAs declaration is properly set up. If it is, it finds all rows from the table and saves them right away, with the label field in the Model::set() call.
Since we have specified overwrite => true in the $actsAs declaration, the sluggable behavior now overwrites all slug fields in the table, giving you nice slugs.

Step 6: Run The Sluggish Shell

Run "cake sluggish ModelNameInCamelCase" in your terminal.

Step 7: Change your urls

The Sluggable behavior creates unique slugs. If two of your blogposts for example have the same title, the first one will have 'my-blogpost-title' as its slug and the second one will have 'my-blogpost-title-1'. Mariano's behavior attaches an integer to the slug depending on how often the slug was used already.

Now that you have unique slugs, you can change your controller code and view code to take account of this. If you are heavily indexed in google already, you might want to provide 301 (permanent) redirects for the old urls, or just offer both urls to access the same blogpost, but only use slugs throughout the app.

Enjoy! Post any feedback or help requests in the comments below.

-- Tim Koschuetzki aka DarkAngelBGE

Comments Nessun Commento »

Vi segnalo questa interessante lettura:

jQuery TOOLS is a set of frequently used user interface components, built with/for jQuery, to power your websites.

The library is lightweight (5.8kb) and consists of the following tools:

  • tabs
  • tooltip
  • scrollable
  • overlay
  • expose
  • flashembed

jQuery Tools

All the tools can be used together, extended, configured and styled which makes it very flexible.

Every feature in the library is very well documented & offers various examples to lower the learning curve.

It is also possible to download the tools you need rather than the whole package, combined in a one file.

Special Downloads:
Free Admin Template For Web Applications
jQuery Dynamic Drag’n Drop
ScheduledTweets

Advertisements:
SSLmatic - Cheap SSL Certificates (from $19.99/year)
Dreamhost $50 Discount Code: WRD
Follow WebResourcesDepot At Twitter And Get More Resources!

Tags: , ,

Related posts

Comments Nessun Commento »