However fondly you treat your application, errors happen and they happen often when it is being developed. That’s obvious you want to get all the tracing information during the development stage and something like ‘Application Error’ page if the error occurs on the production.
Everybody knows error handler can be set in PHP through set_error_handler. The same about exceptions for which set_exception_handler is used. But it really works only for user-defined errors and uncaught exceptions. It doesn’t affect any of fatal error for instance. Well, PHP has such stuff as register_shutdown_function to deal with them. We can create ErrorHandler class and subscribe the handlers in the beginning of the script
If you are used to switch between JS and PHP programming, it obviously happened to you to miss some of JS flexibility in PHP. I felt it every time when declaring a callback function , being eager to apply something from JS like that...
In the previous article we examined the only way of code analysis – PHP tokinizer. But digging deeper you’ll find many of options. Well-known expert of the subject Sebasitan Bergmann points out following.
As far as you see, with such a set of tools you can do whatever you want. But here we are going to discuss the only application, which is known as code sniffing.
Ok, you have some team, working on the projects and, obviously, you have some code convention to adhere. The lead, making code review, checks the compliance with standards by sight. Common, tell me you are not fond of it. There is an amazing tool but again by Sebastian Bergmann so-called PHP CodeSniffer.
First I decided rewrite my old BlogSlideShow JS-class. In fact I have a plan to rewrite all of my old works gaining to update functionally and appearance regarding to nowadays fashion and make better their code. So, after I finished with implementation on fluent JS, without use of any external library I ported it on jQuery. After that I wrote also implementation on YUI3. I’m fond of both those frameworks and found that is a good practice top have the same task solved thrice in different ways. So here is my observations experienced the task.
Let’s assume our application has a UI translation module. We created dictionary and use terms from there within the code of application components. Everything is clear so far. But one day we begin to suspect that not all of the terms presented in the dictionary are really used within the application. Besides, probably some of terms which are used in components are not available in the dictionary. So we need a script to traverse all the source code files searching translation module use occurrences. Having the list of all encountered terms the script can compare it with the terms of the dictionary.
RIA is considered as one of the mostly particular to the modern Web feature, and often stands for the trend, according to which web-applications tend to desktop applications. Nonetheless the approach is very relative. Overwhelming majority of “rich” web-applications is still built on the “request-response” model. I.e. events of the client side can be reflected on the sever side, but not vice-versa. In order to make such a trivial thing as a chat, you have to go with tricks. There are different techniques to emulate bi-directional connections. Usually solutions of the kind are called Comet, thanks to Alex Russell of Dojo.
Eventually I reincarnated my personal site using alpha version of Sapid CMF 2. I’m still in progress refining the CMS release, but actually the only what I brought from old version is its name. So, what is going to be?
About 10 years ago web-projects were mostly static and development process pretty simple. Now difference between web-applications and desktop applications disappears, functional complexity of web-projects grows up. It demands to new requirements. That’s usual now – the project is long-term , many of experts take part (non-experts as well). Everybody brings to the project backlog new ideas and goals, before the development stage as well as after. You see, goals and stories mutate and so the tasks. Preliminary estimation by time loses its reasonability. Obviously, it’s needed especial development methodology. Among so popular nowadays Agile methods there are exactly what we need – Feature Driven Development (FDD).
Has it ever occurred to you to fancy about all Facebook applications are simple and similar per se? All of these virtual hugs, gifts, greeting cards, wishes, likenesses, poke, smiles, karma-exchange and other psychological “stroking” differ only with the form, in which user get their portion of attention. Thus this niche is always open for persons interested to test their own ideas. Facebook applications enroll the audience in the way viral marketing works. Users invite their friends to use the application, those friends invite new user the same way. You see, if you have a worth idea, theoretically you can obtain the audience which works out at 20 millions of Facebook users. So there is nothing surprising in that some amateur Facebook applications are sold for tens of thousand dollars.
Project X at Crytek GmbH. No details till the project is launched (NDA's signed)
Age of Web 2.0
Size of my contribution: information architecture analyze on early stages, technical design (UML, documentation), PHP (on Zend Framework) and JS (on YUI3) project component development.
POZZZY is social system to aggregate entertainment, which has features of social news system (Digg.com), collective blog (Slashdot.org) and social bookmark system (del.icio.us). Pozzzy is an OpenID server/consumer, supports MicroID, Pavatar, hCard, XFN and FOAF.
Size of my contribution: idea, projection, programming
Age of XML Sapiens
XML Sapiens is an XML-based language used for describing of web-application data, presentation and functionality composition.
XML Sapiens allows to prepare a set of data structure declarations, content field type set, functionality and use all of them within site designing. Reusing of those components reduces costs of web-development and lets to avoid low-level programming.
Size of my contribution: idea, projection, specification developing
Site Sapiens is an enterprise content management system including web content management system (WCMS), web-application development environment, web-integration platform.
Web 2.0 Technological Foundation: AJAX, RIA, SOA
Leading program methodologies: AOSD/AOP, XML Sapiens, TDD, Replicating DB Architecture
Site Sapiens has been chosen as CMS for projects of Russia, Belarus, Ukraine markets such companies as The Coca Cola Company, Renault, Elle, Mars.
Size of my contribution: idea, projection, programming (everyting except AJAX-framework and XML Sapiens processor program code. Since version Site Sapiens 3.1 I left the project and it is deleloping without me).
SAPID CMF is a framework for rapid creation of content-based application of Web 2.0 generation. SAPID CMF allows to organize effectively process of new application development, data, structures, representation and functionality
components reusing, rich user interfaces creation.
Size of my contribution: idea, projection, programming
SAPID CMS - is a freeware tool for site creation and management. SAPID is distinguished through the comfortable Ajax-based site structure management interface and high flexibility of design, content and functionality integration.
SAPID does not need DB (file-flat CMS). SAPID is inline CMS. It means that site documents are editable in a way "what you see is what you get", a document in delivery phase looks same as in administrative phase.
Size of my contribution: idea, my share of projection and developing ~ 50%, promotion, cretion of sapid-club.com, special editions SAPID SHOP, SAPID Gallery, SAPID Personal Site).
Internet Auction Web Services API
The solution contains class library, which realize web services on server side, load balancing engine, samples of interaction with web services on client side, documentation (Web Services API Guide, 60 pages) and presentation.
Size of my contribution: library programming, documenting
Age of MySITE
MySITE - is the first full-function information space control system in Belarusian Internet. MySITE allows web-systems construction, management, scaling and change. MySITE does not require special knowledge for administration area user interface management. The system includes additional modules for management of a electronic catalogue, reports on attendance, advertising management, forums system management, interrogations and posting management.
Size of my contribution: idea, projection, programming
In year 2000 STC ATLAS (at that time a part of SoftLine Group) developed the following projects under my supervision: a web-site of Central commission of elections and referenda of the Republic of Belarus -"Elections 2000";Informational analytical server of Administrative office of the President of the Republic of Belarus.
In summer 2001 I had been offered to develop an electronic publications system MyPRESS.
It is a universal program complex which includes all basic functions of content control systems and allows creating and leading periodic WEB based editions. Sites management system MySITE has been created on MyPRESS basis in autumn.
This bookmarklet provides a controllable overlay with an image of page graphical design over top of the developed HTML. In fact it is similar to the well-know Pixel Perfect Firefox extension, which doesn't work properly with last Firefox builds for a while.
Page navigation using touch gestures on mobile devices
Usually we hide all auxiliary page components on mobile to save space of the viewing area. So we have to provide in return alternative navigation tool out of the screen. Since keyboard with navigation keys isn't available, we can use touch gestures.
The plugin turns your markup into a slide-show with a set of fancy configurable transition effects. The plugin tries to render the effects with CSS3 transitions. However if the browser does not support CSS3, the same effects will be achieved by JS.
Every available effect is encapsulated into a separate module. One can remove redundant effect modules from jquery.t-effects and leave the only code responding to his requirements.
That is a jquery plugin, which emulates HTML5 Form behavior on old browsers.The plugin also allows to customize form submission validation tooltips and field validation callbacks (e.g. via XMLHttpRequest).
Currently the plugins serves following input types: text, email, url, number, tel and following input properties: novalidate, placeholder, required, autofocus, pattern, min, max
Either you likely provide already sharing buttons to you blog posts or not, you may be interested in this light-weight solution. Why? Because it’s fancy, it takes very little space on your page and it is so easy to attach.
Have you ever noticed Google+ has an amazing feature called Google Feedback. You click on feedback highlight an area of the site page and getting screenshot with your marking on it sent to the Google support team. If you wonder of having this tool on your own, just take my code and adapt for your requirements.
I'm passionate about software product quality, particularly code architecture.
I have a strong belief that regardless of a programming language developer needs
a framework primarily for a consistent abstraction and the framework must not replace the language, but guide
Scss/Compass styles following SMACSS conventions, semantically meaningful HTML and
Software architecture, domain driven design
HTML5 + CSS3
Continuous Integration and Deployment
Test-driven development / BDD
An accomplished web developer specializing in Object-Oriented Design and Analysis with extensive experience in the full life cycle of the software development process.
Information Architecture: including metadata standards, classification schemes, knowledge of representation
CRYTEK GmbH(senior web developer)Frankfurt am Main, Germany
PHP5.x, remote APIs such as Google, Facebook, Twitter, Gamespy, automated building with ANT/Grunt, CI-server Jenkins
Designed and built Site Sapiens ECMP. Took part in development of more than half of hundred web-sites.
2007 - initiated and developed POZZZY startup. It was a social system to aggregate entertainment, which had features of social news system (Digg.com), collective blog (Slashdot.org) and social bookmark system (del.icio.us).
2006 - designed and built Site Sapiens 3.0 ECMP
2005 - PHP Programming Innovation Award October 2005 Winner of PHP Classes
2005 - created once popular Open Source CMS SAPID (sapid.sf.net)
2004 - wrote the specification of language XML Sapiens for CMS developers
2003 - designed enterprise information area management platform Site Sapiens
since 2003 - Senior web developer at Red Graphic Systems company
Developed a few dozens of web-project including some Intranet/Internet portals of Administrative office of the President of the Republic of Belarus. Initiated, designed and developed the first known CMS in Belarus - MySite
2002 - deputy head of Stc. Atlas studio
2001 created site management system MySITE
2001 created electronic publications system MyPRESS
2000 – 2001 - head of web-development InternetService studio
My duties included development of small business applications based on Clarion RDBMS. Created an interactive GUI extension (mouse control, pseudo-graphic) for Clarion using C /Assembler and applied to develop.
1993 – 1994 - programmer at BelarusRezinoTechnika joint-stock company (http://www.aobrt.by/en/)
1989, 90 – twice winner of All-Union contest for programming innovations and Soviet Union schoolboy conference member. Winner of the All-Union Lenin’s grant.
Speaker at the international congress PHPconf’2005
Speaker at Internet-forums by’99, by’00, by’01, by’02, by’03, by’04
Speaker at the international e-commerce congress etp'2001
Participant in broadcasts programs on the Belorussian TV and national radio as an Internet-technology expert