2010-03-16(火)
Now that WINCACHE 1.1 Beta is released and it has support for user cache, you can enhance Drupal’s performance by integrating WINCACHE user cache. For this you will need to have two things already setup:
- Drupal running
- Drupal extension CacheRouter configured (The below code will work only for latest nightly builds of CacheRouter extension available at http://drupal.org/node/240745/release?api_version%5B%5D=103, 7.0 beta1 and version 5.* and 6.* won’t work)
Once you have above setup ready, integrating WINCACHE user cache is really easy. I will assume that you have copied CacheRouter extension in the ‘modules’ folder of Drupal installation. This means you should have added below lines in your file named settings.php inside folder sites\default:
$conf['cache_inc'] = './modules/cacherouter/cacherouter.inc';
$conf['cacherouter'] = array(
'default' => array(
'engine' => 'wincache',
'servers' => array(),
'shared' => TRUE,
'prefix' => '',
'path' => 'sites/default/files/filecache',
'static' => FALSE,
'fast_cache' => TRUE,
),
);
Now let’s move to next step. Please save the file named wincache.php_.txt from link http://drupal.org/node/743028 as wincache.php file to folder modules\cacherouter\engines.
Restart your server and you are done.
In order to verify that WINCACAHE is storing values in user cache, hit the homepage of your Drupal installation. Now open WINCACHE.PHP file which ships with the installation and click on tab named “User and Session Cache”. It should look something like below:
As of writing this blog, a bug in CacheRouter (daily builds) prevents any caching functionality to work. The bug has been logged at http://drupal.org/node/743238.
In order to make it work with older versions of CacheRouter build like 7.x-1.0-beta1, 6.x-1.0-rc1 or 5.x-1.0-beta9 the attache
Truncated by Planet PHP, read more at the original (another 1033 bytes)
Today I am back in the (home) office after speaking at ConFoo last week.
I gave two talks:
- Undercover Code—Supporting PHP with non-web tools; Slides (PDF); Session; joind.in
- Interfacing with Twitter; Slides (PDF); Session; joind.in
Despite some timing issues (as is always the case for me with new talks), I think both sessions went well. I got some good, constructive feedback from attendees on how the talks could be made better, and if I get the opportunity to give them again, I'll definitely take it into consideration.
Because PSAV (not the conference organizers' fault, other than trusting PSAV—a lesson all conference organizers eventually learn) was its normal bucket of fale, conference Internets weren't exactly usable. I was lucky enough to be in my home country (for a change), so I was able to tether on 3G for most of the week, and that kept me and a few others online. However, I think that most attendees didn't have the same opportunity, so if you attended one of my talks, I'd greatly appreciate it if you could head over to joind.in and post a comment or two about what you thought (talk-specific links above).
After the conference ended, Andrei stayed at my place.
On Saturday, we brewed a second annual batch of Белый, which—if all goes well—will end up at 11.5%ABV. Maybe it will be ready for next year's ConFoo. (-:
We decided to take it easy on Sunday… sort of. We spent most of the afternoon planning out a PHP extension we'd been talking about for several months: a highly-customizable and user-hookable PHP preprocessor. Afternoon turned to evening, turned to night, and by the time we turned in, we had a working—but not yet ready for release—extension. More details to come, but here's a teaser.
On PHPBuilder.com today there's a new tutorial walking you through the creation of a simple WordPress plugin that shows the latest YouTube video from your blog's channel.
Think of plugins as components where you put your functionality and widgets as components of your user interface. Building your own WordPress plugins and widgets will make your blog truly original, and all you need is basic PHP and HTML knowledge - and your imagination.
They help you get started with defining a few constants, registering the actions with WordPress, building the widget (with complete cut-and-paste-able code) and including it in your WordPress blog. You can download the complete source if you want to get started quickly.
So for whatever reason, it took me a while to figure this out earlier today:
2010/03/15 15:44:16 [info] 22274#0: *148224 client closed prematurely connection, so upstream connection is closed too while sending request to upstream, client: a.a.a.a, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/tmp/.fastcgi.till/socket:", host: "localhost"
2010/03/15 15:44:16 [info] 22274#0: *148207 client closed prematurely connection, so upstream connection is closed too while sending request to upstream, client: a.a.a.a, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/tmp/.fastcgi.till/socket:", host: "localhost"
The issue was a PHP parse error which I overlooked when I added a new file. The weird thing is, I had nothing in the logs (E_ALL, display_errors is off, but all logs are enabled and I tailed them using multitail) and nginx only displayed a blank page. The errors above were in nginx's own log file.
In response to one of the constant claims about the Zend Framwork - that it's large and bloated - Juozas Kaziukenas tries to dispel three things that people use to reinforce this belief.
Zend Framework is always considered as being the slow/bloated one. I don't think this is right, so I decided to prove that it's not correct and in fact ZF is as good as other frameworks are. This post doesn't cover any benchmarks though; this is more like a architecture review and some misconceptions disproof.
He counters the following with a bit of logic that makes the points a bit more shaky than they first seem:
- Large installation footprint
- Unnecessary features
- Use more system resources
If you're still not convinced, he offers two other tips to help streamline your Zend Framework install - profiling to find the bottlenecks and using Zend_Application sparingly as it can be a bit of a resource problem.
On the EllisLabs site there's a recent post talking about some of the big changes that've happened to their development process surrounding CodeIgniter and its future version.
EllisLab today announces changes to our internal development processes, including dropping Subversion in favor of Mercurial and adopting Assembla as our agile software development management tool. Along with these changes, CodeIgniter 2.0 pre-release code is in development, and is now hosted at the Mercurial-focused social coding site BitBucket.
They also talk about their move to the Scrum method of software development and how this (and their change of version control system) can help the future of CodeIgniter (version 2.0) come even sonoer through contributed updates and bugfixes made much simpler through the features of BitBucket (similar to Github). If you'd like to contribute, you can follow the CodeIgniter project and get busy contributing back to this great framework.
A recent tutorial (screencast) has been posted to the ZendCasts.com site looking at creating custom Zend_Form elements when you need something more than just the usual, simple elements.
This video should help you build your own composite Zend_Form element. We'll be building a phone element. The phone element will have 3 textboxes, one for geographic location, area code and local code. In the following videos will add a custom cell phone validator and some ajax validation.
You can grab a copy of the source if you'd like to follow along or you can just look around the repository to find the source for this and other great lessons from the site.
- Fixed upgrade of Blog gadget
- Update Swedish translation
for more info please see http://dev.jaws-project.com/changeset/11121
As mentioned on Solar blog and a few other places on the web, the stable 1.0.0 version of the Solar PHP framework has been released, marking a significant milestone in the framework's development.
Yesterday, I announced the release of the 1.0.0 stable version of the Solar Framework for PHP on our mailing list. (I tagged the release four days ago on Monday, but wanted to time the announcement to go along with my Solar presentation at ConFoo.)
The Changelog for the release can be found here and some of the latest updates include improved CSRF features, named actions and optimized queries.
This stable release is the culmination of about five years of development effort, with important contributions from several others in the PHP community. My many thanks to everyone who helped make this release, and all the previous releases, better than I could have made it on my own.
2010-03-15(月)
On the Ibuildings techPortal they're posted the latest podcast in their Dutch PHP Conference 2009 sessions series - Boy Baukema's talk on why every PHP developer should love Javascript.
In this talk these and more comparisons will be drawn between the two languages. The main weaknesses and strengths of JavaScript will be discussed and compared to PHP. Examples will be given of closures and lambda functions in JavaScript and they will be compared to the implementation of these same features in the upcoming PHP 5.3. And through comparison the speaker will demonstrate that the two languages are quite similar.
To listen you can either use the in-page player or you can download the mp3 directly and listen offline at your leisure.
If you've been looking for a good way to get introduced to the latest version of the Zend Framework but didn't know where to start, you might grab a spot in this upcoming webinar from Zend about the Zend Framework 1.10.
Zend Framework 1.10 sports a ton of new features, as well as completely revamped online documentation. In this webinar, Matthew Weier O'Phinney, Framework Project Lead, and Ralph Schindler, Zend Framework Software Engineer, will present a synopsis of the new features, discuss the new online documentation system and how it's built, and answer your questions about the new release.
The webinar will be happening this coming Wednesday, March 17th, at 9am PST and will be happening via WebEx. Matthew Weier O'Phinney and Ralph Schindler will be talk about the new features, current functionality that was enhanced and will answer your burning questions. To reserve your spot, head over to the registration page and enter your info.
Available for PHP Extension Writing
Slightly more than a month ago I left my job as team-lead of eZ Components at eZ Systems behind, to focus on something new. During the past month I've been contemplating about what to do next and realized that I do not want to take on a new full-time position right away. Instead I will be available to work on (custom) PHP extensions and internals related issues. Extensions are a great way around PHP's limitations and performance issues.
As first project I am working on a "QuickHash" extension for StumbleUpon. This extension circumvents PHP's hefty memory (and performance) overhead by providing more specific data structures. The extension currently implements integer sets and integer to integer hashes. I am now adding integer to string hashes and string to integer hashes. The QuickHash extension will be released under the PHP Licence and I will dedicate another post to it later.
If, like StumbleUpon, you are also interested in having work done on PHP or a specific extensions feel free to contact me. I'd be happy to discuss things with you.
It takes a VAT number issued by any European Union member and performs basic checking to see if the number can be valid.
Then the class also validate the VAT number by sending a HTTP request to a site of an European Union that checks if the given number is valid and exists.
It can send an HTTP request to retrieve and parse the YouTube search result pages for a trailer of a given movie.
The class extracts the identifier of the first result video and generates HTML to embed that video in a Web page.
ヒントはRewriteBaseだ。
これはCakePHPの問題じゃない。
Apacheの設定の問題。
だからレンタルサーバ屋に聞けばよい。
※/アプリケーション/テーブル名/とか、完全に間違った解釈なので勉強しなおしたほうが良い
機能はすでにすべて実装されており、バグの修正のみが行われています。
CakePHP 1.3.0-RC2 released
By Mark Story (mark_story)
http://bakery.cakephp.org/articles/view/cakephp-1-3-0-rc2-released
忍び歩く男 - SLYWALKER
CakePHPWorkshop関西が無事終了しました!
http://d.hatena.ne.jp/slywalker/20100315/1268617377
How to implament One Time Password for forgot-my-password and account-activation processes
By Amir Shevat (ashevat)
Sexy Cake with Krumo: Say Goodbye to print_r()
By Stacy Pawlowich (stac80)
http://bakery.cakephp.org/articles/view/sexy-cake-with-krumo-say-goodbye-to-print_r
Google PageRank Component
By Chad R Smith (chadsmith729)
http://bakery.cakephp.org/articles/view/google-pagerank-component
http://code.google.com/intl/ja/apis/maps/documentation/staticmaps/
のヘルパーだそうです。
Google static maps helper for CakePHP
By Karl Mendes (kmendes)
http://code.google.com/intl/ja/apis/customsearch/
「Google カスタム検索では、1 つのウェブサイトまたはウェブサイトのコレクション上で検索ができます。Google...
- More compatible with PHP 5.3
- Fixed compatibility with PHP 4
- Fixed error in Search gadget
- Fixed error in Jaws_Crypt
- Added paging to monthly view and archive by date actions in Blog gadget
- Fixed an issue in PostgreSQL driver
- Add Norwegian Language
- Update Turkish translation
Requirements
- PHP >= 4.3.6
- MySQL >= 4.1
- Postgresql >= 7.4
- Oracle >= 8.0
- MSSQL >= 8.0
- Firebird >= 1.5
- Interbase >= 6.0
- SQLite >= 2.8
- Apache 1.3, Apache 2, Cherokee >> 0.4.29 (under fcgi) and IIS
Download
To download the package(s) just click here!.Thanks for all of you who reported bugs!
コードで記述した部分を、その場でそのまま動かすことができ、うまくサイトに組...
It can setup a neural network work with a given number of layers.
The class takes a data set and a test output data set and runs the neural network using back propagation to to adjust weights based on network errors.
It can start counting time and at any time later stop and get the elapsed time since the start.
It takes as parameters the total number of entries in the listing, the limit number of entries displayed per page and the number of the current page.
The class shows links to browse to the first, previous, next and last pages.
It can also return the total number of pages and a string with the values for the LIMIT clause of a SELECT database query.
It can generate HTML to display one or more file upload fields in a form.
The class can also process the uploaded files by moving them to a given target directory, if they have one of the allowed file name extensions and do not exceed a given size limit.
It can generate a Flex application definition for retrieving results of a MySQL query and displaying in a data grid presented using Flex.
The class can also generate the PHP code script that runs on the server side to execute and retrieve the MySQL results.
It can copy uploaded files to a given destination directory if the directory exists and is valid.
The class can also and crop and resize files that are images.
It can send HTTP requests to the Web services API servers of different URL shortening services to perform either shortening (or expanding in the case of some of the services) of given URLs.
Currently it supports the URL shortening services: tinyurl.com, bit.ly, cli.gs, goo.gl, kl.am, is.gd, tr.im .

It can execute a given MySQL SELECT query and display the results in an HTML table.
The table attributes, row colors, pagination links, custom column, etc. can be configured.
Symfony project unveiled this week some new details about its console, routing, output escaper and request handler components during the ConFoo conference.
Development mailing list
- Discussions about i18n for forms and symfony page composing
Development highlights
Symfony 1.X branch:
r28508: [YAML] fixed parsing of folded scalars when a # sign starts a line(reverted)
Symfony 2.X branch:
- dad7..f678: [ProfilerBundle] allows the BundleStorage to use PDO_SQLITE as well as SQLite3 and fixes a bug in purge()
- 2bc4..8a4e: [Routing] changed matching to only check for method if it is available in the context
- 0d05..6422: [Routing] added requirements checking when generating a route
- d229..2430: [Console] added __get() to Command to have shorter and more readable code in commands
- fff1..37c0: [DoctrineBundle] fixed the overridding of an Entity
Development digest: 112 changesets, 24 bugs reported, 6 bugs fixed, 2 enhancements suggested, 1 enhancement closed, 7 documentation defects reported, and 37 documentation edits.
Documentation
New Job Postings
- PHP Software Engineer at NationalField - Contact: career@nationalfield.org
- PHP/Symfony developer at JCDecaux - 3 moths contract based in Plaisir, France - Contact: nicolas DOT steinmetz AT jcdedcaux DOT fr
- PHP/Symfony developer at C'Digital - Contact: contact@agencecdigital.com
New symfony bloggers
- Un blog ? pourquoi faire ? (feed) (French)
Plugins
- New plugins
- sfDoctrineRevisitedGeneratorPlugin: adds an extra theme to sfDoctrineGenerator, which adds the capability of the show action.
- apostropheFormBuilderPlugin: (no description)
- apostropheBlogPlugin: (no description)
- dcSwishPlugin: allows you to index files on the filesystem of the server and search by keywords. This can be done using a module provided by the plugin.
- sfWidgetFormjQueryDatePickerPlugin: small plugin to use jQuery's date picker in symfony. It is based on sfWidgetFormJQueryDate.
- sfjQueryDoctrineAdminPlugin: a jQuery based admin for Doctrine, using javascript and ajax (soon) to have more friendly interfaces.
- rcParallelTaskPlugin: allows to create task that can fork for parallel processing. It provides an easy way to create as many child as you want and a simple queue and lock system.
- gyImagenePlugin: (no description)
- sfUserOnlinePlugin: allows you to manage user status by changing user class in your factories.yml to sfUserOnline. This class extends sfUser class and you don't drop any user logic.
- vjCommentPlugin: it provides a comment behavior. Now, everything is commentable!
- sfPropelCachePlugin: use a Propel connection for symfony caching.
- sfdisichartPlugin: creates chart based on Highcharts-1.1.3 javascript library.
- xtDojoPlugin: (no description)
- fzDoctrinePagedRoutePlugin: provides route and route collection classes which makes it easy to create routes for paged lists and their elements.
- sfImageTransformExtraPlugin: provides all means to configure any set of thumbnail formats with all possible transformations in a YAML file. All these configured settings can be applied to any kind of source image using a nice URL schema.
- mgI18nPlugin: removed doctrine files, fixed connection access, removed __() helper dependency in the action, fixed issue with queries, updated yaml configuration, fixed learning mode insert when debug is true, added date management, add German translation, updated UPGRADE file
- sfAmfPlugin: added generator to create services for all tables, renamed function in sfAmfPluginPropelGenerator, added ValueObject generator based on schema, added Doctrine Value Object generator stub, updated Propel ValueObject generator, made some refactoring on tasks/generators, added base services generator, amfBrowser display service parent methods
- sfTrafficCMSPlugin: addon class to provide groups access checking, models are auto-configured by default now, tinymce uses sensible defaults, added home action
- sfFCKEditorPlugin: added default path to fckeditor
- sfMinifyPlugin: updated google minify, updated for symfony 1.3 and 1.4, enabled config param for js and css, added asset versions key, fixed docs for asset version, added default asset version
- sfDoctrineMasterSlavePlugin: updated slave accessor to accept a connection as an argument like the master accessor
- sfJSLibManagerPlugin: added check for sfContext instance before requesting it
- psToolboxPlugin: added psNamedCache::removePattern()
- sfImageTransformPlugin: fix to property typo, improvements to computeTargetSize method
- sfDoctrineJCroppablePlugin: added some checking that images exist & target location is writable, fixed permissions checks for importing images from data/images dir
- sfExtjsThemePlugin: added grid cell wrap to combobox editor fields
- sfMapFishPlugin: small fixes for 1.4 better compatibility
- csDoctrineSlideshowPlugin: first step towards making this plugin 1.4-compatible
- sfUnobstrusiveWidgetPlugin: removed spinner "text align" inline css rule, fixed related choices (IE & chrome)
- apostrophePlugin:
- added PDF slot and gave slideshow meta a common class to help with styling
- cleaned up PDF Slot to work better with IE6
- properly return no media ids when attaching media items to other objects
- properly return no media items for an empty list of ids when attaching media items to other objects
- persistent file upload image previews now use the same format as the original
- new aArray::getChoices method accepts objects and returns an associative array with ids as keys and the result of getName() on each object as values
- added an OPTION to the slideshow slot to display a position counter between the arrow
- added position indicator option to the slideshow and a slot class of 'single-image' to the slideshow if there is only one image in it for styling purposes
- added single image slideshow margin adjustments
- engines now work when the CMS is not mounted at the root of the site
- listToHashById now takes an optional second parameter ($method) which allows you to call something other than 'getId' to get the id
- aMultipleSelectAll and aMultipleSelect no longer require options
- aMultipleSelect now supports an 'onChange' option
- all of the static text emitted by the UI is now I18N
- all of the dates and times are now I18N by default
- constraints are now emitted as a list rather than attempting to force English grammar and a comma-separated list with "and."
- all apostrophe forms can now at least limp along (with warnings) with no parameters to the constructor
- apostropheBlogPlugin: initial support for categories, fixed the feed and made changes to sidebar categories, fixed rss feed for blog index, properly handling media attachment post MediaAPI, added images to recent posts component, fixed pagination for old blog plugin, initial filter dropdown prototypes, changes to blog plugin to support uncategorized category, changed excerpts so that full body won't be shown if excerpt is excluded, ported Blog engine category filter to Blog Events, calendar engine page settings form, recent news is reverse chronological, added 'categories' and 'notCategories' parameters to the recent posts component
- apostropheFormBuilderPlugin: added sfDoctrineActAsCommentablePlugin, added photo upload for user profiles, formatted comments for chat module
- sfSympalPlugin: fixed oldCulture is not set when changing content edit language, beginning rendering tests on asset object, changed javascript variables to not be generic so that they don't crash against project-used variables, fixed a bug where you couldn't set a default_value for a column content slot, added tinymce save trigger, fixed bug where column slots didn't respect widget and validator of slot type, added a "Column" slot type which leaves slot widget/validator to its default, fixed the editing of slots on the backend, added a config value to set the default edit_mode for any content slot, fixed inline slot bug with TinyMCE and eliminated some javascript from the template
- Tokio Group Ltd: (Dutch) webdesign & IT Solutions Company
- Versicherungsvergleich: (Deutsch) a guide for insurances and financial topics
- Singles: (Deutsch) magazine and platform for Singles
- Skycheck.com Flight Search: (Deutsch) finds and compares cheap flights all over the world
- Plancake: (English) free online todo list and tasks manager. It is open source, free, simple-to-use and feature rich.
- Stig Facts: (English) interesting Facts about BBC Top Gear's Tamed Racing Driver called The Stig
They talked about us
- Symfony, les forms et les forms embarqués
- Ein Blick auf Doctrine Core Behaviors
- Configurer WAMP avec PHP 5.3.1 pour Symfony 2.0
- Date/Time Range Selector Widget for Symfony
- Writing Efficient Tests
- Diem 5.0 stable released
- Handling Uploaded file in symfony’s admin generator
- symfony live 2010, les points clés
- Using tinyMCE with Symfony
- Comment PHP me rends fou
- LimeSurvey with load balancers, fixing the user sessions.
- Symfony CMS frameworks comparison (updated)
- Symfony reloaded : follow the white rabbit
- rcParallelTask Plugin : Un plugin pour exécuter des taches Symfony en parallèle.
- <PHP×アジャイル>~symfonyでアジャイルWebアプリケーション開発~
- Symfony: Réaliser une identification ajax avec sfDoctrineGuardPlugin
- Soporte para Symfony
- Symfony : formater une date
- Introdução ao Symfony
- Agregar campos virtuales a tu modelo para mejor el rendimiento de symfony
- hetemlにopenPNE2.14⇒openPNE3.4.2アップグレード
- Symfony 2.0 – быстрый тур – вид/the view (часть 2)
- Windows下Symfony的安装
- Injecter des valeurs avant validation du formulaire Symfony
- Symfony 2.0 and the PHP Ecosystem の超日本語訳
- (完全版)OpenPNE3インストール。
- インストールの後処理を定型化するユーザスクリプト
style="margin-bottom: 5px">
2010-03-14(日)
Hier einmal ein Announcement in letzter Minute: in zwei Tagen halte ich für Zend ein Webinar über “Sichere Applikationen auf Basis des Zend Frameworks“.
Immer mehr PHP-Entwickler setzen das Zend Framework bei der Programmierung neuer Applikationen ein. Für die Entwicklung bringt dies einige Veränderungen mit sich, da mehr und
mehr Framework-Komponenten benutzt werden und immer weniger direkt auf PHP Funktionen zurückgegriffen wird. Dadurch ändert sich auch der Prozess, wie sichere Applikationen zu entwickeln sind.In diesem Webinar erfahren Sie, welche Features des Zend Frameworks die Entwicklung sicherer Applikationen erleichtern, welche Features bei falschem Einsatz zu Sicherheitsproblemen führen können, welche Sicherheitsfeatures existieren, wie man sie einsetzt und welche Sicherheitsprobleme nach wie vor alleine gelöst werden müssen.
2010-03-13(土)
Being the verbose kind, I guess I will put in a summary at the top leaving the original post below for everyone to read all the little details. Essentially the summary is that I (and many other core developers) agree that HEAD/trunk in its current form was stalling future development on PHP. Jani indirectly jump started the discussion of moving this stumbling block out of the way by essentially doing two commits that violate the most fundamental rules of PHP development (and common sense courtesy) we have. I am worried that this will lead to confusion in the user base and other seem to think that the "ends justify the means". I also think that we need clearer processes to make it easier for new developers to have a clear path to follow in order to get things done in PHP.
Full story:
So this all requires a bit of background. I still remember my first contact with a PHP core developer. I do not quite remember the year, but it was quite some time ago. Anyway Jani was great, we filed a bug report on the imap extension. He fixed the bug in no time. IIRC we also ended up sharing a room at the second IPC in Frankfurt I attended. I think only a few years later I realized that Jani is the same guy a lot of people were complaining as being rude. But I guess few of these people realize how much time Jani has spend on verifying bug reports and what a tedious job this is, especially since most bug reports are quite low on the actual relevant details and come with a "fix my code for me, now!" attitude. In other words, I get along fine with Jani and I have great respect for his contributions to PHP.
Next piece of background. I am also one in the long list of people that has made a fool of himself by predicting a release of PHP6 in about 18 to 24 months (quite a few people have given this prediction over the past 3-4 years I guess). I have also been one of the people that has tried to motivated people at various times to finish those last 2% that seem to be missing to complete PHP6 in terms of functionality. As such I have opposed a PHP 5.4 because I felt its time to focus on finish up PHP 6 which we have promised people for so long. After releasing 5.3.0 I was hoping things would happen. But last weekend I came to the realization that we have waited long enough. That even if PHP 6 would be unicode bliss (at least in terms of features, probably not in terms of performance), the fact of the matter is that in all of the many years nobody put in the time to finish it. This imho is an indirect proof that the approach taken apparently does not hold enough merit to the world in general. Furthermore looking at internals since last summer it has been more dead than ever: PHP 6 aka HEAD aka trunk had become such a motivation killer that nothing was happening.
At the same time I knew that suggesting to move trunk to a branch and copying 5_3 to trunk would cause a lot of confusion. Not only among those reading internals, but also that this would quickly make it to the news sites of the world. Call it politics, marketing or just an unwillingness to cause thousands (millions?) of PHP developers distress and uncertainty, but I figured it would be better to propose this with a semi solid plan and giving a number of PHP core developers the heads up that I will bring this to the list, so that they also could prepare themselves. So I started talking to people offlist, either in person, via phone, via IRC/skype or via email with the full intention of going to the list no later than the end of this month, ideally sooner rather than later. I should also note, I do not code C, I also do not consider myself a unicode expert. So if I wanted to present a plan, I obviously needed to talk to people to get my facts straight.
Anyways, this week Jani decided to commit a patch. I guess I didn't mention one more piece of background. Jani had asked to get this patch into PHP 5.3 during the pre alpha stage, but at the time Johannes and I (I was co-RM back then) felt that the patch hadn't been tested enough in HEAD and that while we knew the patch fixes several bugs, we felt the risk of introducing new bugs was too high, especially since Michael who wrote the original patch for HEAD was not always around to fix things. Johannes had tried to get the patch into 5.3 six months earlier, but at the time nobody had time to do the work. So we decided to stick with the known bugs, instead of fixing them and risking new bugs in a very core component of PHP close to going alpha. So basically Jani committed a huge patch into a stable branch, without talking to anyone about this, despite knewing full well that the RM had specifically vetoed this patch in principle. Furthermore the patch from my understanding even breaks the ABI which makes the patch even more a no go.
No
Truncated by Planet PHP, read more at the original (another 6351 bytes)
After the success of Londonvasion 2008, we expressed our intention to hold annual events in different locations around the world. Due mostly to time constraints, we made the difficult decision of skipping the organisation of a conference last summer and instead held or participated in some smaller events (The Management/Developer Meeting, OSCON, etc.). We have been accumulating our excitement and are determined to make up for lost time this year!
When?
21st August, 2010
We chose a date that would not conflict with other relevant conferences taking place during the summer.
The Location
The Times Square Area
New York City, NY
United States of America
Below is a map of the area. The exact name/address of the venue will be announced at a later time. As you can see, some hotels and other interesting points have been marked for your convenience. These will be updated as more information is received and announced.
View Hotels NY in a larger map
Registration
Admission to the event will require prior registration. We will charge a nominal fee (Londonvasion was £10) to dissuade registration by individuals who have no intention of actually attending. Another announcement will be posted when the registration page is opened. A large meeting room has been booked and plenty of tickets will be available.
Sponsorship
Please email libertyvasion[AT]phpBB[DOT]com if you or your organisation are interested in sponsoring Libertyvasion. We would be happy to distribute your materials or discuss alternative means of advertising during the event. In addition to the physical event itself, we will be publishing photos and videos (as was done for Londonvasion).
Post-conference social event
After the conference, we will reconvene at a local restaurant/bar for a social event lasting into the night. The minimum drinking age throughout the United States is 21, however the restaurant does not require attendees to be 21 years old. All are welcome.
Additional information
Additional information, including summaries of anticipated talks, can be found on the Livertyvasion page. That page will be updated continuously throughout the months leading up to the event. As with Londonvasion, we also intend to publish videos and photos afterward.
Please plan your work/school/etc. responsibilities appropriately if you wish to attend. Additional information will be posted soon.
Thanks,
The phpBB Team
----------------------------------------------------------
Please use the [Discuss] Libertyvasion 2010 to discuss this announcement.
After the success of Londonvasion 2008, we expressed our intention to hold annual events in different locations around the world. Due mostly to time constraints, we made the difficult decision of skipping the organisation of a conference last summer and instead held or participated in some smaller events (The Management/Developer Meeting, OSCON, etc.). We have been accumulating our excitement and are determined to make up for lost time this year!
When?
21st August, 2010
We chose a date that would not conflict with other relevant conferences taking place during the summer.
The Location
The Times Square Area
New York City, NY
United States of America
Below is a map of the area. The exact name/address of the venue will be announced at a later time. As you can see, some hotels and other interesting points have been marked for your convenience. These will be updated as more information is received and announced.
View Hotels NY in a larger map
Registration
Admission to the event will require prior registration. We will charge a nominal fee (Londonvasion was £10) to dissuade registration by individuals who have no intention of actually attending. Another announcement will be posted when the registration page is opened. A large meeting room has been booked and plenty of tickets will be available.
Sponsorship
Please email libertyvasion[AT]phpBB[DOT]com if you or your organisation are interested in sponsoring Libertyvasion. We would be happy to distribute your materials or discuss alternative means of advertising during the event. In addition to the physical event itself, we will be publishing photos and videos (as was done for Londonvasion).
Post-conference social event
After the conference, we will reconvene at a local restaurant/bar for a social event lasting into the night. The minimum drinking age throughout the United States is 21, however the restaurant does not require attendees to be 21 years old. All are welcome.
Additional information
Additional information, including summaries of anticipated talks, can be found on the Livertyvasion page. That page will be updated continuously throughout the months leading up to the event. As with Londonvasion, we also intend to publish videos and photos afterward.
Please plan your work/school/etc. responsibilities appropriately if you wish to attend. Additional information will be posted soon.
Thanks,
The phpBB Team
----------------------------------------------------------
Please use the [Discuss] Libertyvasion 2010 to discuss this announcement.
If you attended my talk, you can rate it on the Joind.in Page
After showing you how to set up multiple PHP versions on a single machine, it's time to explain how to stuff all those compiled php-cgi executables into a single Apache web server instance.
Idea
- Instead of using mod_php, mod_fastcgi is going to be utilized.
- Every single PHP version runs its own CGI server
- Configuration of used PHP version is made per virtual host.
Installation of FastCGI
Debian
The Debian setup is painless:
aptitude install libapache2-mod-fastcgi apache2-mpm-worker apache2-suexec a2enmod actions fastcgi suexec
CentOS
The open source version of Redhat's operating system does not provide the fastcgi module for Apache, which is why one needs to install it by hand. It's trivial.
Assuming phpfarm is installed in /root/phpfarm, you need to chmod +x /root. Last but not least is setting up permissions for the fastcgi state files: chmod +x /var/log/httpd.
FastCGI setup
After mod_fastcgi is available, we need to prepare the FastCGI servers. Open /etc/{apache2,httpd}/{apache2,httpd}.conf and make it load conf/php-cgisetup.conf before including server.conf. Put the following lines into conf/php-cgisetup.conf:
#php-cgi setup #used for multiple php versions FastCgiServer /var/www/cgi-bin/php-cgi-5.2.12 FastCgiServer /var/www/cgi-bin/php-cgi-5.3.0 FastCgiServer /var/www/cgi-bin/php-cgi-5.3.1 ScriptAlias /cgi-bin-php/ /var/www/cgi-bin/
PHP-CGI setup
For each single php version you installed with phpfarm, you need to create a file /var/www/cgi-bin/php-cgi-$version and make it executable. Example for php-cgi-5.3.2:
#!/bin/sh PHPRC="/etc/php5/cgi/5.3.2/" export PHPRC PHP_FCGI_CHILDREN=3 export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_MAX_REQUESTS exec /root/phpfarm/inst/bin/php-cgi-5.3.2
Activating a PHP version in a virtual host
If you followed all of the previous steps, everything is
setup now and ready to be used. In your
/etc/{apache2,httpd}/conf/server.conf, put the following
code in each
var/www/FIXME"> AddHandler php-cgi .php Action php-cgi /cgi-bin-php/php-cgi-5.3.2
Conclusion
With the simple steps listed above and the help of phpfarm, you are able to test your web applications in a dozens or more PHP versions easily.
As as side note: The CGI versions of PHP are only used on the vhosts that you determine. All others are still served by mod_php that was probably setup before, making it trivially easy to keep your server's main web sites up-to date with your distribution's package manager.
Matthew Weier O'Phinney as a new post to his blog today looking at a few "do's" and "dont's" when it comes to working with module boostraps in your Zend Framework applications - an apparently somewhat confusing topic for several developers out there.
In Zend Framework 1.8.0, we added Zend_Application, which is intended to (a) formalize the bootstrapping process, and (b) make it re-usable. One aspect of it was to allow bootstrapping of individual application modules -- which are discrete collections of controllers, views, and models.
He talks briefly about why module boostraps are run on every request (getting into some detail on Zend_Application), how you can properly set up your boostrapping process and how you can use plugins to initialize only the things you might need and, as he openly admits, that there's just not a really good way to handle this sort of module funcionality.
Pablo Viquez has put together something that all of the Windows-based Zend Framework developers might find very useful during their next offline (or online, really) development session - a Windows Help file version of the Zend Framework manual.
As you might now, you can view and download the Zend Framework reference manual from the Zend Framework site and download it from the download section, however what I wanted was the Windows compiled version of it (CHM file). In order to get this version you need to compile the documentation, after running into some small issues, I manage to do it, and to save you some work.
He only had to fix an issue with one XML file to correct some escaping in the Zend_Feed_Writer.xml and zend.feed.writer.html files. You can download both the English CHM and the Spanish CHM files depending on your needs.
With the releases in the PHP 5.x series (5.3 and now a newly branched 5.4), people have been left wondering about PHP 6 and the promised Unicode support it will include. Development on that branch had all but stalled out and things weren't looking too good for the method of introducing full Unicode support to the language. Johannes Schluter has some good news, though - the effort has been restarted and a new approach has been decided on.
Yesterday the stagnation created by the situation has been resolved and it was decided that our trunk in svn will be based on 5.3 and we'll merge features from the old trunk and new features there so that 5.3 will be a true stable branch. The EOL for 5.2 has not yet been defined but I suggest you to really migrate over to 5.3, which usually can be done with very little work, as soon as possible.
Discussion are being made about which type of Unicode support will actually be introduced with a "string class" wrapper gathering some support behind it to provide an alternative to the current string handling.
Ian Christian has an informative new post for the Symfony developers out there. He's figured out a way to handle uploaded files with Symfony's admin generator relatively easily, changing the filename option.
When a file is uploaded using sfForm in the admin generator, by default the filename that's used is a random string, which can look bad in URLs. If you want to change this, it's not immediately obvious how - but it is incredibly simple.
The Symfony project does have some documentation on the topic, but it's not the easiest to read. It basically boils down to is defining a function in your extended class based on the name of the file where you can change the name however you'd like. Code snippets are included to make the point a bit more clear.
Jani Hartikainen poses an interesting question on his blog today - is it more correct for a function, having failed at its job, to return a value of throw an exception.
You have created a nice, well written function, but you realize you forgot something: The failure case. What should a function do when it fails? There are two schools for this - the "throw an exception" school and the "return an error value" school. But which of these is the correct approach?
He suggests that this debate has stuck around from the time when there weren't exceptions in several popular programming languages and that returning the value was the only valid way. He touches on what an exception condition is (with a few code examples) and situations where each choice might be the right way to go.
Brian Swan has posted the second part of his series looking at the difference between the MSSQL driver and the SQLSRV drivers for connecting to SQL Server databases from PHP (part one can be found here). He gets a bit more detailed in this second post.
I'm aiming to provide a high-level comparison that you might use if you were considering moving to the SQLSRV extension, but I think there is also some interesting information if you are just curious about the differences. [...] In cases where a short note wasn't enough (and there were several of these), I've provided relevant links to topics in the SQLSRV documentation.
He talks about things that one offers that the other doesn't, like prepared statements (sqlsrv) and working with stored procedures (mssql). He also mentions error handlng, persistent connections and scrollable cursors in sqlsrv. Finally he gets into a one-to-one function comparison of the two drivers with the sqlsrv function list coming up a bit short compared to the features of the more recend (and well-supported) mssql driver.
2010-03-12(金)
Phil Sturgeon has posted a look ahead at everything you need to know about the next version of the popular CodeIgniter framework, version 2.0.
It has been 6 months since the last CodeIgniter minor update and 18 months since the last major update. Through all this time we were given no information about the next release of CodeIgniter, but finally 2.0 is on the way.
Because of the Ellis Labs move to Mercurial for its version control system (and BitBucket for the repository), it allows for a more "social coding" environment where it's easier for developers to just fork and contribute. Other major changes for this upcoming version include the fact that PHP4 support will officially be deprecated, driver libraries, application "packages", a smaller reserved controller name list and the dismissal of plugins.
Check out the Changelog for more detailed information as things are updated.
- Brian Swan's Blog: What's the Right Way to Prevent SQL Injection in PHP Scripts?
- Brian Teeman's Blog: Who is the Joker in the Joomla pack?
- PHP.net: PHP 5.3.2 Release Announcement
- CatsWhoCode.com: Getting started with CouchDB: a beginner's guide
- Matthew Weier O'Phinney's Blog: Responding to Different Content Types in RESTful ZF Apps
- Zend Developer Zone: How to avoid Identity Theft in Zend Framework with Zend Auth
- Alvaro Videla's Blog: Erlang as a Fast Key Value Store for PHP
- Site News: Job Postings for the week of 02.28.2010
- Template Monster Blog: It's coming! WordPress 3.0 - Pros and Cons
- Kavoir.com: Just Hashing is Far from Enough for Storing Passwords (Dictionary & Rainbow Attacks)
Yesterday was a quite thrilling day for the PHP development team and led to some imprecise news articles so let's take a look at what happened: Over the last months many of the core contributors agreed that the current approach to bring Unicode into PHP's engine wasn't the right approach and a good thing would be to rethink it from the start. By a provocative move of one contributor the stalled situation got some more movement and Rasmus declared the current implementation to be discontinued to restart.
The past
When the foundation of what should have become PHP 6 was created a decision was made to use UTF-16 as internal encoding for "everything" inside the engine. The choice for UTF-16 was made due to the fact that PHP 6 would use the ICU library which is focused on offering UTF-16 string functions. By using UTF-16 as default encoding we'd have to convert the script code and all data passed from or to the script (request data, database results, output, ...) from another encoding, usually UTF-8, to UTF-16 or back. The need for conversion doesn't only require CPU time and more memory (a UTF-16 string takes double memory of a UTF-8 string in many cases) but makes the implementation rather complex as we always have to figure out which encoding was the right one for a given situation. From the userspace point of view the implementation brought some backwards compatibility breaks which would require manual review of the code. These all are pains for a very small gain for many users where many would be happy about a tighter integration of some mbstring-like functionality. This all led to a situation for many contributors not willing to use "trunk" as their main development tree but either develop using the stable 5.2/5.3 trees or refuse to do development at all.
The present
Yesterday the stagnation created by the situation has been resolved and it was decided that our trunk in svn will be based on 5.3 and we'll merge features from the old trunk and new features there so that 5.3 will be a true stable branch. The EOL for 5.2 has not yet been defined but I suggest you to really migrate over to 5.3, which usually can be done with very little work, as soon as possible.The future
Right now we're starting different discussions to see what kind of Unicode support we really want. Many contributors react positive on a proposed "string class" which wraps string operations in Unicode and binary forms without going deep in the engine. In my opinion such an approach might also be a way to solve some of the often criticized inconsistencies in PHP's string APIs without the need to break old code. (new code uses the new class, old code the old functions) But that idea is far from a proper proposal or even the implementation, current status is about refocusing the development and get the requirement and design discussions going. By that it's a bit early to decide whether the next version of PHP will be called PHP 5.4, PHP 6 or maybe even PHP 7.PHP is alive and kicking!
申し訳ないです。
ご提示いただいた内容も試した記憶はあるのですが、今となっては
確認出来ない状態です。(開発が進んでしまったので)
このトピックは閉じます。
ありがとう御座いました。
I’ve dumped the old hosting provider, and move the www.fornax.net server to Slicehost. So far, their service and support has been excellent!
Hopefully, everything was migrated across correctly, and all of the RSS feeds still work. Apologies in advance if this post ends up anywhere it should not — please let me know if that’s the case and I’ll be happy to fix it!
データベースの各レコードに対するアクセスコントロールについて教えてください
以下のような構造のテーブル、レコードがあると仮定します。
テーブル名:reports
>hiromi2424 様
教えていただいた方法で無事動かすことができました!
ありがとうございます!
また、var_dump()についてもご指摘いただきありがとうございます。
今後の参考にさせていただきたいと思います。
In an opinion piece posted to the php|architect site Marco Tabini suggests that we (as developers) are doing it wrong as we move further and further away from the pragmatic side of programming into the abstract.
No matter how advanced the techniques that we use, there is always something that we could be doing better. [...] Which one is right? The real problem is that the answer to that question is, "yes." That's because it lacks a specific context in which it can be inserted.
He suggests that, in our quest to figure out what the perfect case for any situation, we stop focusing on the practicality of writing applications to accomplish goals. Sometimes it's not about getting the right theory behind the code - sometimes it's just doing it.
I see a number of questions regularly about module bootstraps in Zend Framework, and decided it was time to write a post about them finally.
In Zend Framework 1.8.0, we added Zend_Application, which is
intended to (a) formalize the bootstrapping process, and (b) make it
re-usable. One aspect of it was to allow bootstrapping of individual
application modules -- which are discrete collections of controllers, views,
and models.
The most common question I get regarding module bootstraps is:
Why are all module bootstraps run on every request, and not just the one for the requested module?
To answer that question, first I need to provide some background.
Continue reading "Module Bootstraps in Zend Framework: Do's and Don'ts"
Brian Moon has a quick post that links to a but of code that gives you a progress bar for the command line that's flexible enough to be used in an number of situations.
Was just looking through some code and came across this function I wrote some time ago. If you do a lot of your processing scripts in PHP like we do, you probably need to know what is going on sometimes. So, I made a progress bar for use on the cli. I thought I would share it.
You can see a demo of it here (screencast) or just download the code. Comments on the post also point out the PEAR Console_Progressbar package and the ez Components class for creating a more advanced progress bar.

digg に投稿する
del.icio.us に追加する
はてなに追加する