Tuesday, February 08, 2011

Public/Private Key Encryption with Java and PHP

Lately, I was struggling with the differences between PHP and Java HMAC encryption methods. Although encryption is rarely used in my most day to day programming tasks, it can probably be useful for people who may need it in the future.

In specific HMAC-SHA256 is used "for calculating a message authentication code (MAC) involving a cryptographic hash function in combination with a secret key". An interesting scenario is that a service that is hosted in a PHP Web application Server interacts with a Java client application client that consumes this service (for example Android mobile application). Since the client knows its private key it can encrypt an agreed message so the server then can verify with the given encrypted signature and authenticate the client.

Enough with talking, let's see how it is done in Java vs. PHP with the following code snippets:


/**
* Encryption of a given text using the provided secretKey
*
* @param text
* @param secretKey
* @return the encoded string
* @throws SignatureException
*/
public static String hashMac(String text, String secretKey)
throws SignatureException {

try {
Key sk = new SecretKeySpec(secretKey.getBytes(), HASH_ALGORITHM);
Mac mac = Mac.getInstance(sk.getAlgorithm());
mac.init(sk);
final byte[] hmac = mac.doFinal(text.getBytes());
return toHexString(hmac);
} catch (NoSuchAlgorithmException e1) {
// throw an exception or pick a different encryption method
throw new SignatureException(
"error building signature, no such algorithm in device "
+ HASH_ALGORITHM);
} catch (InvalidKeyException e) {
throw new SignatureException(
"error building signature, invalid key " + HASH_ALGORITHM);
}
}


where HASH_ALGORITHM is defined as

private static final String HASH_ALGORITHM = "HmacSHA256";


Where in PHP, it's even simpler:

echo hash_hmac('sha256', $message, $secretKey, false);

Wednesday, January 12, 2011

Eclipse PDT and Zend Studio Awarded 'Best PHP IDE' in InfoWorld 2011 Technology of the Year Awards

What is common to Apple iPad, Google Android, VMWare vSphere and Eclipse PDT/Zend Studio?

I have some good news for the Eclipse PDT and Zend Studio team. The InfoWorld Test Center has chosen our tools, Eclipse PHP Development Tools and Zend Studio for one of our 2011 Technology of the Year Awards (Best PHP IDE). The award is based on the ,
comparative review by Rick Grehan.

According to InfoWorld their Technology of the Year Awards, chosen annually by InfoWorld reviewers, go to the best products we tested during the prior calendar year. To be eligible to win, the product has to be reviewed by the InfoWorld Test Center, it has to be outstanding, and it has to belong to a product category that we consider extremely important. In short, Technology of the Year Award winners are rare and special.



On behalf of Eclipse and Zend, we are honored to receive this award as a confirmation of our technology vision and dedication to building the best possible IDE for the PHP community we are committed to the evolution of Eclipse PDT as more and more developers seek to add PHP to their skill set for application development in Web environment.

Congratulation to the team!

Tuesday, November 02, 2010

New 10 Top Zend Studio 8.0 Features (applies mostly to Eclipse PDT 2.2.1)

After one and a half years of community development and Zend internal hard work, Zend Studio 8.0 is officially released today after 3 months in beta!

During the beta term I tweeted about the new features and I wanted to aggregate everything to one blog so you can all review it in one place.

  1. New Analyze Network Usage and Performance with Zend Studio 8.0 http://yfrog.com/3dc06xp #zendcon Top Studio new features #1
  2. New Running #php Applications on VMWare Workstation through Zend Studio 8.0 http://yfrog.com/69z0tp Top Studio new features #2
  3. New remote server support (ftp/ssh) http://bit.ly/9ei3hf Top Zend Studio new features #3
  4. New #phpunit configuration files support http://bit.ly/aN2w3e Studio new features #4
  5. New jQuery Support http://yfrog.com/7f1jap Top Studio new features #5
  6. New native installers http://yfrog.com/5i4itp Top Studio new features #6
  7. New content assist with templates http://yfrog.com/0r5j9p Top Studio new features #7
  8. New hover information box http://yfrog.com/6x26763202p - Top Studio new features #8
  9. New "Inspect" action in #php editor http://yfrog.com/5j3sssp - Top Studio new features #9
  10. Enhancements for Windows 7 http://yfrog.com/mlxu3p (thanks #mylyn) - Top Studio new features #10
I'll probably have another post about the guys at Zend and community that helped with this release, so stay tuned if you want to hear about the team.



Tuesday, September 07, 2010

Five (more) tips for speeding up Eclipse PDT

In a previous blog post written by Zviki Cohen, five simple tips were suggested to help Eclipse PHP Development Tools (PDT) users speeding up their development environment . I want to share five more tricks that can dramatically improve your experience with Eclipse and PDT. Not only these tips help speeding up performance but also make your PHP source code more controlled.

1. Exclude non-source-code folders and manage wisely your project buildpath - Buildpath is a set of paths indicating what folders should be scanned (built) by Eclipse. If the project Buildpath includes its root (for example) then all folders that include images, javascript , style sheets and other non-source related files are listed to the scanner. Although theoretically most of these files are not actually scanned since non-PHP content types files are skipped, Eclipse keeps track on changes and make some redundant operations on these folders that may contain thousands of irrelevant files, hence perform bad .

2. Setup project include path - to optimize the include/require statements path resolving it is more than useful to make sure that the project include path settings are set correctly. Representing the actual include path is a key to make things work smoothly.

3. External libraries are not part of your code, don't keep it under your project resources - this is a classic project configuration mistake. Make sure that frameworks and external libraries are not included under your project sources, instead link it to your project as a library. Eclipse can relate to these ("static"/"read-only") frameworks differently than your ("dynamic"/"writeable") code which is under constant development. Frameworks should be scanned once and not be part of your project source code.

4. Split your project into sub-projects and modules - it makes sense you separate your core business, services, client side interface, tests and other modules into different projects that have different natures and make the components more flexible and easy to be re-used and maintained by others. Often, I see PHP projects that include dozens of thousands of flat hierarchy source code that is hard to maintain and configure.

5. Share your project configuration files with your team. Configure your project once and make sure all team members follow the same conventions and management rules. These files are located under your project root (the dot files) and can be shared in your source code repository.

To summarize things "Mastering your development environment is as important as mastering your source code" - this concept is sometimes forgotten by scripting language developer who are used to a flat hierarchy source code. Although I consider this as a major strength of scripting languages it doesn't mean that project management should be flat...



Wednesday, May 12, 2010

How do you like to "use" it?

According to the PHP.net manual "PHP namespaces support two kinds of aliasing or importing: aliasing a class name, and aliasing a namespace name". So basically this leaves two options for the average case:



Aliasing a namespace name



namespace ns1\ns11\ns111 {
class c1 { }
}
namespace ns2\n21 {
use \ns1\ns11\ns111;
$v = new ns111\c1();
}

Aliasing a class name



namespace ns1\ns11\ns111 {
class c1 { }
}
namespace ns2\n21 {
use \ns1\ns11\ns111\c1;
$v = new c1();
}

While both options are useful developers will probably prefer to use the one over the other in different cases. For example if your script imports many classes declared in one namespace, only one namespace can be imported avoiding the need to import each class separately.

Option A:

use \ns1\ns11\ns111\c1;
use \ns1\ns11\ns111\c2;
use \ns1\ns11\ns111\c3;
use \ns1\ns11\ns111\c4;
use \ns1\ns11\ns111\c5;

$v = new c1(new c2(new c3(new c4(new c5()))))


Option B:

use \ns1\ns11\ns111;
$v = new ns111\c1(new ns111\c2(new ns111\c3(new ns111\c4(new ns111\c5()))))

How Eclipse PDT should complete your "use" statement?


A real cool feature in Eclipse PDT is that use statements are completed automatically for you. The question is what method should be considered:
1. Aliasing a class name
2. Aliasing a namespace name
3. Depends on the case, what are the different cases?

Vote here: http://twtpoll.com/omuaqn


Sunday, April 11, 2010

Thoughts on Flash (the Eclipse way)

Funny coincidence but definitely not related to Apple vs. Adobe shootout, my team was required to integrate an existing Adobe Flash application into Zend Studio 7.2.0 (an Eclipse PDT based product). Let's share this experience of integrating Eclipse and Flash:

Reusing Flash or Writing plain SWT?

It started as a simple and common requirement to provide a presentation layer for a given data source loaded into the product. Happy and enthusiastic we started designing a user friendly Eclipse perspective that provides nice diagrams and trees that present the data. Before we started to actually implement it, we were told that it would be great if we can reuse an existing Flash application that our colleges at Zend have already developed. "Adobe do this so why can't we do this?", relating to Flash Builder that is based on Eclipse and Flash. Anyway, it can save months of development and integration effort in the future.

The Good

Using a Flash application into Eclipse integrated web browser is pretty easy task. Users choose a source file in a dedicated import wizard, a new perspective is presented that includes an Eclipse view presenting the Flash application. We used a simple browser view for this end:

public class FlashView extends ViewPart {
private Browser browser;
public void createPartControl(Composite parent) {
parent.setLayout(new FillLayout());
try {
int mozilla = SWT.MOZILLA;
browser = new Browser(parent, mozilla);
refresh();
} catch (SWTError e) {
// ...
}
}
private String getText(String file) {
return "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'
codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0'
width='100%' height='100%'>
<param name='flashVars' value='...'>
<param name='src' value='myFlash.swf'>
<param name="wmode" value="opaque">
<embed pluginspage='http://www.macromedia.com/go/getflashplayer'
width='100%' height='100%'
flashVars='...'
wmode="opaque"
src='myFlash.swf'/>
</object>"
}
}


And a Jetty server for serving the Flash application is launched:


public class JettyServerManager {

public static void startJettyServer(final int port) throws Exception {
final String rootPath = getJettyRootPath();
Runnable runnable = new Runnable() {
public void run() {
server = new Server();
SelectChannelConnector connector = new SelectChannelConnector();
connector.setPort(port);

try {
server.start();
server.join();
} catch (Exception e) {
// ...
}
}
};
serverThread = new Thread(runnable);
serverThread.start();
}

public static void stopJettyServer() throws Exception {
if (server != null) {
// ...
}
}
}


The Bad


One more trick that we wanted to add in our client product is a small layer of communication between the two applications, so basically once a user clicks on a data relating to a specific workspace resource the relevant resource is opened in the editor (something like "link with editor" button).

Our first attempt used a dedicated socket to transfer these calls, but after reading the cross-domain policy we understood that another port is required. So three (!!!) different ports are opened for serving this application - the Jetty one, our communication channel and a cross-domain policy port (since the default one is 843 and Linux based OS can't open it we should have open another non-default one). We could live with it if it worked out, but after lots of testing it came out that Windows and Linux machines don't behave the same. On Windows the security port got the request and handles it right, then the actual communication port works as expected. On Linux the same workflow is expected but we got garbage content in our communication although the policy file was excepted and verified by the Flash engine.

Our next attempt used the same Jetty channel to broadcast the changes from the Flash application, once the Flash application wants to alert our product it sends a request to the Jetty (on the same port) and notify our product. This actually worked very nicely.

The Ugly

Well, let's say that Flash and SWT don't share the same look and feel and are naturally different. Usability in this case is a little awkward but tolerable.
To make sure our customers are not required to manually install a browser and then install a Flash player plugin on top of this browser we wanted to have our own XULRunner instance and flash player plugin installed. Although it seems that Adobe's Flash player license is pretty open we couldn't redistribute it in an easy way into our integrated browser as Adobe require to install it under a specific place using their installers.
One last usability shame is the case where an instance of a Flash view is opened and then Eclipse product is closed. Although the Jetty service is down as well (as expected) it should be launched again to serve the view again upon start.

The End Result


A simple import wizard that requires the stored snapshot is displayed:




Many thanks to Qiangsheng Wang and Jacek Pospychala!

Thursday, October 22, 2009

ZendCon, Eclipse and the Cloud

This is a wrap-up for another excellent #zendcon that took PHP one step forward this year into the enterprise world and the mainstream.

It began with several announcements about Zend Server 5.0 beta that now provides more enterprise-ready features such as code tracking tools and job queue services. It continued with an announcement of a new edition for Zend Studio 7.1 beta that is based on Eclipse PDT 2.2 with remote server and task focus programming tools integrated with the Mylyn PHP bridge. It was also the time Zend stated that it is going to invest more on making standard to interact with "the cloud" (MS, IBM, Rackspace, Nirvanix and Go-grid) with its new Simplecloud API.

Interesting points that I wanted to share:
1. Stephen O’Grady moderated a panel about the various Zend Cloud initiatives entitled Developing on the Cloud you can read his summary here.

2. This conference everyone were using Eclipse tools, it is just wonderful to see that Eclipse solutions are well adopted by the PHP community that was at first controversial about moving to Eclipse. People were also amazed by the built-in tools Eclipse provides that can be leverage by all developers such as streamline of development process features and Application life-cycle management tools.

3. Another nice conversation made with two Jetbrains developers that were really enthusiastic about their open source product that will deliver a PHP plugin really soon. I talked to them about the latest announcements (open sourcing InteliJ platform and IDE). It seems that unlike the Eclipse community Jetbrains really wants to focus on platform for development tools and will do their best to keep this goals for now. I was really impressed by the deep knowledge they have about language modeling and the methods they use internally for indexing and caching that is totally different from approaches I know in Eclipse. It will be very nice if the Eclipse community will take some time to learn some techniques from their open source project

4. Some pictures from the keynote:







So long ZendCon09!

Sunday, August 30, 2009

The (Flat and Long) Type Hierarchy of Zend_Exception

Trying to build the type hierarchy of the Zend_Exception class in Zend Framework using Eclipse PDT yields a long and flat list of Exceptions.

Should it be more "hierarchical-like"? I mean... the framework, with core and extra plugins?

Thursday, July 16, 2009

Graduation or Maturity?

This question has been puzzling me for a long time now, but maybe there is no difference at all between graduation and maturity in a lifecycle of a project?

The basic definition of a "mature project" is a project that has been in use for long enough that most of its initial faults and inherent problems have been removed or reduced by further development. On the other hand, I couldn't find consensus about the graduation step of projects. I'll take two examples from two different worlds - Java/Eclipse and PHP. As described in the proposal lifecycle of Zend Framework after a project has been recommended, the promotion step includes confirmation of unit tests and documentation in its way to graduation. It seems that the Eclipse Foundation set a few clear criteria for graduation that include adhering active community, fully operational project, and a technical review of the architecture. These two processes are so different but still I start to get a notion that graduation is not about passing criteria but only a phase that a project becomes aware of itself, and most important thing graduation is only the first step toward maturity.

Projects that pass their graduation process although have not seen widespread use yet, enjoy a core user base, are more flexible and still cannot be extensible in an easy way. Fully mature projects are projects that enjoy the publicity in a larger community and probably less flexible since many adopters already extend the previously defined API.

Anyway, the most important (and fun!) period in the lifecycle of a project is when it is graduated and starts to get all dots connected till its final maturity. This is exactly where Eclipse PDT project in, and we see more and more people that ask to extend its core capabilities.




Tuesday, July 07, 2009

Latest News from PHP/Zend Tooling World!

The first half of the year (2009) is over and the Web world got new, structured techniques for rich Web application development tools in Zend Server and Zend Studio 7.0 based on the latest Eclipse PDT project (2.1) with features such as Server integration, smart code analysis for dynamic languages, refactoring tools and more.

Instead of writing blocks of texts describing these new exciting features I want to share with you a few screen casts created by Zend (thanks Yossi L.!) that demonstrate the new capabilities provided to Web developers who work with php as their main server side engine. If you want me to elaborate on specific screen cast comment out or let me know, I promise to add details in another post.

Enjoy ;)

Jump Starting Web Application Development Using Zend Studio & Server Integration



Code Navigation



Code Analysis and Auto-fix



PHP 5.3 Development



PHP Code Refactoring



RAD Tools



Root Cause Analysis


Saturday, June 20, 2009

The Rising Star

It's "Eclipse for PHP" first year in the Eclipse simultaneous release train, and yet the final release has not been released, but studying the downloads # of the forth release candidate is a very good indication of things to come - Eclipse PHP flavor is going to be the rising star of the Galileo train.

"Eclipse for PHP" package is an Eclipse flavor including the Eclipse platform, CVS, Mylyn, DLTK and Web tools platform with an addition for PHP developers - the PDT plugin.

It is also the first year Zend releases Zend Studio (7.0) right after the community edition is released. This time we align Zend commercial product with the community edition to have the same impact for both our customers and the community.

Tuesday, June 16, 2009

Tel Aviv Eclipse DemoCamps Galileo 2009

Its time to create a buzz around the upcoming Galileo release here in my city Tel Aviv, Israel. Actually this is the first time ever this happens in Tel Aviv, and the number of attendees is really impressive, comparing to other countries around the globe.

What is an Eclipse DemoCamp?

"We are inviting individuals to organize and attend Eclipse DemoCamps around the world to celebrate the Galileo release. The Eclipse DemoCamps are an opportunity to showcase all of the cool interesting technology being built by the Eclipse community. They are also an opportunity for you to meet Eclipse enthusiasts in your city."

What's the plan?

Six presentation given by great people who volunteered to help promoting and contributing to the event.

This time Zend Technologies (the PHP company I work for ;) and the company behind PDT) helps to organize the event.

Register free here.

Saturday, May 30, 2009

Two Horizons Coincide

In recent years there has been an explosion of open source communities in several areas within the software mainline industry. Vertical and horizontal communities are founded. While vertical communities are specialized in one sector, horizontal ones developed with vertical links.

I am always excited to see two communities that find a common interest and collaborate together. A great (yet extreme) example of vertical and horizontal communities that converge is the Eclipse/Jetty project, starting with basic integration points the two communities are now associated as Jetty’s core is hosted by the Eclipse Foundation.

Eclipse and PHP Are Now (Officially) Best Friends!

What it takes for two horizontal communities of the size of Eclipse and PHP to be "best friends"? Except of course for motivation of these communities to be improved.
  1. Recognition - The Eclipse community understands that PHP developers are major section of its user’s base, and therefore takes actions. At the very first days of Eclipse, PDT was available as a plug-in that could be installed over Eclipse platform and other dependencies. With the release of Galileo, Eclipse recognizes that people enter to the Eclipse world because of PHP and releases an Eclipse PHP flavor that is created exclusively for the PHP community, exactly as provided to Java, C++ and Web tools developers.





  2. Commitment – The two communities grow together. When one makes a move, the other takes an action as well. When PHP has made the intent to deliver its new major version, Eclipse PHP Development Tools (PDT) has been adapted by supporting the new PHP 5.3 language features with an early release. Another example, since PHP is an extensible language providing a way for developers to add extensions to its core, Eclipse PDT enables those people who extend PHP to extend it as well, with API for type inference and code completion.



  3. Adoption – According to the latest Eclipse Community Survey "Eclipse IDEs are the most popular primary development environments among respondents; Eclipse JDT (60%), Eclipse PHP Development Tools (12.6%) and C/C++ Developer Tools (6.3%)." This means that for each 5 developers that use Eclipse Java IDE, there is one Eclipse PHP developer and a half C/C++ developer. Comparing these results to the 2007 community survey where PHP was not listed among the 5 top Eclipse IDEs.





It seems that we are (close to) reaching our goals to make Eclipse and PHP best friends.

Monday, March 09, 2009

Welcome the PDTT - PHP 5.3 Code Assist Engine Tests

pdtt is a clone of the popular phpt. Eclipse PDT uses this mechanism for testing its PHP 5.3 code assist engine. 

Since Michael has just finished implementing the second phase for PHP 5.3 support in PDT, we can now expose unit tests and ask users to add more cases to the code assist tests reposiroty.

As written in the pdtt wiki page
"The first thing you need to know about tests is that we need more!!! Although Eclipse PDT code assist works just great 99.99% of the time, not having a very comprehensive test suite means that we take more risks every time we add to or modify the Eclipse PDT Code Assist Engine implementation. The second thing you need to know is that if you can write PHP you can write tests. Thirdly - we are a friendly and welcoming community, don't be scared about writing to (pdt-dev@eclipse.org) - we won't bite!"

Basic Format for a pdtt file:
--TEST-- 
Tests a simple class name completion in namespace 
--FILE-- 
<? namespace My; class A{} class b{} $a = new My\| ?> 
--EXPECT-- 
type(A) 
type(B)

I guess that once we get some feedback from our members we will expose a better (automatic) way to submit pdtt files.

Enjoy ;)


Saturday, January 03, 2009

Seven Things - tagged by Andi Gutmans

Although till recently I thought that work and fun can't get along, Andi Gutmans is trying to prove to me, time after time, that this assumptions is completely wrong!. Yes... I've been tagged.

Seven things I want to share with you:

1. I am allergic to cats - well... at least that's what I was told when I was a kiddo, so my family had a cute dog with long hear, no cats. Now my wife insists that we should have a cat since she was grown up with cats, and I answer her that we have one cat already. Miaoo...

2. I have a super smart barber, who is a lawyer - my father, he actually replaced my mom when I was 13 years old. Curly hair is something easy to cut and I can't see any other barber since I get pretty strain by that.

3. My brother lives in Panama City with his lovely family. Last time I visited him, some guy that set next to me in the flight asked me why I use Eclipse as my development environment, I told him that I am a Java developer. He then ask me, "really? and I thought Java is dead, you should try out PHP..." :). It took me 10 minutes to convince him that I really work at Zend.

4. I am trying to figure out how to analyze X-ray images to better examine the OSA phenomena, my professor thinks it is doable at least...

5. I am very proud of my wife as she is going to be a doctor, well on 2010, and then she has more 7 years to be in residency... 2017 here we come!!!

6. I am managing 4 open source projects, 3 on Google and 1 on Eclipse. I am participating in much more.

7. My new iPhone is the most appreciated present I got from my wife. I sound like a material guy, but it just made my life much more comfortable.

Hi guys you've been tagged-

1. Kfir Karmon who is the smartest guy at Microsoft Israel Labs.
2. Yaniv Taigmanwho is going to have a knockout with his face.com startup.
3. Nick Boldt who is keeping his eyes on Eclipse PDT release engineering stuff.
4. Lior Wolf who is the most admired professor in my university ;).
5. Michael Spector, who doesn't have a blog but is the fastest coder at Zend, so he can arrange one in minutes :).
6. Philip Gabbert who met me in the last ZendCon, and became a Zend Studio fan.


And here are the rules I'm supposed to pass on to the above bloggers:
* Link your original tagger(s), and list these rules on your blog. 
* Share seven facts about yourself in the post - some random, some weird. 
* Tag seven people at the end of your post by leaving their names and the links to their blogs. 
* Let them know they've been tagged by leaving a comment on their blogs and/or Twitter.

Wednesday, November 26, 2008

Zend Framework and Dojo Integration is a Knockout!


A new screencast was released today showing off the slick integration between Zend Framework and the Dojo Toolkit. This screencast also demonstrated the tooling support which Zend Studio 6.1 provides for this end. The speaker demonstrates it by constructing a simple Web application that takes advantage of the new features, like code assist, navigation, easy to use of PHP and JavaScript.

This manual presents a step by step guide for getting the Web application from scratch.


Thursday, September 18, 2008

ZendCon 2008 Slides

Yesterday I gave a session about Rich Internet Application development, titled "PHP and AJAX made easier with Zend".






Ria Made Easier With Zend
View SlideShare presentation or Upload your own.

Friday, August 15, 2008

ZPortal is Open-Sourced

The pet project I have initiated at work a while ago finally goes public.

Project's name is ZPortal and from now on it is managed under Google Code. One important fact is that the "Z" prefix indicates the framework we used to build this portal, which is Zend Framework.


As an introduction to this post I want to point on the difference between "Horizontal information" which is information that anybody has and use vs. "Vertical information" which is information that only you or your organization has. In the Enterprise2.0 era we try to take advantage of these two types of information and bring it to the user (employee) so he has much more power in his daily work. Previous solutions like Wiki are not sufficient these days as they discard the horizontal layer and lack of integration points.

So what is all about? it is about Enterprise2.0. ZPortal is a system of Web-based technologies that provides rapid and agile collaboration, information sharing, and integration capabilities in the extended enterprise. For those who are not familiar with the term Enterprise2.0 but know something about Web2.0 I recommend reading this post that compares between the two methods. Actually from a user point of view ZPortal is similar to iGoogle with small differences. First the authentication method is against Microsoft Exchange Server (it can be replaced by any authentication technique but of course this is the common way thee days) second you can add internal feeds from your company as this system runs behind the company's firewall. Third you can extend this portal to your company needs.

If I'd try to depict my environment at office I would do it like this:


Finally, I want to thank two people who are not at Zend anymore but helped allot toward this project - Seva Lapsha and Yuval Kuck.



for more details visit the new ZPortal site - http://code.google.com/p/zportal/

Saturday, May 24, 2008

Eclipse PDT Bug Day

According to Eclipspedia the motivation for Eclipse Bug Day is "to help foster community outreach and growth". Since there are more and more people in the Eclipse PHP Development Tools (PDT) community that start asking for diversity in the development side, Nick Boldt has suggested to help out and contribute patches to the project "if there's Zend folks willing to coach me...". Actually, I am very excited from his (and others) proposal, since it's the first time a group of people have stated that they want to contribute to PDT.

There are three more things that worth mentioning here:
  1. I do think that PHP developers can (and should) try and contribute to this project although the core development is in Java, since trivalley this project is solely designated for them.
  2. PHPEclipse people that did great on this project, should think about a way to integrate their work and help us so we will unite the forces on one platform.
  3. Since people need to have some knowledge about our platform, we should supply basic design documents. The following two articles can be used for this end, ASTView and Abstract Syntax Tree.
Save the day, the bug day will be held on May 30th. Getting started bugs were tagged as "bugday" (thank you David!)

Thursday, April 03, 2008

PHP and JavaScript in a Single Frame

Many tutorials and blogs written about “PHP & AJAX” and “Rich Internet Application” but take no notice of a suitable development environment. Actually now days' web application tasks involve many technologies and mechanisms that come to be pretty fast a tedious work, this automatically brings many developers to search for an IDE for PHP and JavaScript.

Yesterday, I have conducted a Zend webinar, named "Developing Rich Internet Applications using Zend Studio for Eclipse". In this Webinar I presented Zend Studio for Eclipse empowered by the Ajax Tools plug-in, I went over the installation process, project management, source editing and debugging capabilities for both PHP and JavaScript including code assist, code formatter, folding elements, server-client debugging and more.



Also I have demonstrated the usage of ZF and Dojo session debugging and with the example that was given by Ralph last week. Thanks Ralph!

Also I gave a demonstration of the integrated Mozilla editor that communicated with other parts of the broser tolling (like DOM inspector, browser console, request monitor view, JavaScript Evaluator, DOM source view, CSS view and the DOM watcher).



See you next time!