<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2557208617116274243</id><updated>2011-12-21T04:30:42.889-08:00</updated><category term='linux'/><category term='keyboard'/><category term='server'/><category term='windows'/><category term='flash'/><category term='media'/><category term='wowza'/><category term='video record'/><category term='shortcuts'/><title type='text'>Useful Techs</title><subtitle type='html'>Here are some of the useful technical documents that I found during my works</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://my-techs.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2557208617116274243/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://my-techs.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Anish</name><uri>http://www.blogger.com/profile/15774000976404638338</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Yu6HRTE6qws/ScoT74I1VfI/AAAAAAAABtY/pCOAIweI-84/S220/DSC02431.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2557208617116274243.post-2814713411766962825</id><published>2010-02-17T03:18:00.000-08:00</published><updated>2010-02-17T03:20:36.355-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='keyboard'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='shortcuts'/><title type='text'>100 keyboard shortcuts</title><content type='html'>&lt;span&gt;100 keyboard shortcuts&lt;br /&gt;&lt;br /&gt;CTRL+C (Copy)&lt;br /&gt;CTRL+X (Cut)&lt;br /&gt;CTRL+V (Paste)&lt;br /&gt;CTRL+Z (Undo)&lt;br /&gt;DELETE (Delete)&lt;br /&gt;SHIFT+DELETE (Delete the selected item permanently without placing&lt;br /&gt;the item in the Recycle Bin)&lt;br /&gt;CTRL while dragging an item (Copy the selected item)&lt;br /&gt;CTRL+SHIFT while dragging an item (Create a shortcut to the selected&lt;br /&gt;item)&lt;br /&gt;F2 key (Rename the selected item)&lt;br /&gt;CTRL+RIGHT ARROW (Move the insertion point to the beginning of the&lt;br /&gt;next word)&lt;br /&gt;CTRL+LEFT ARROW (Move the insertion point to the beginning of the&lt;br /&gt;previous word)&lt;br /&gt;CTRL+DOWN ARROW (Move the insertion point to the beginning of the&lt;br /&gt;next paragraph)&lt;br /&gt;CTRL+UP ARROW (Move the insertion point to the beginning of the&lt;br /&gt;previous paragraph)&lt;br /&gt;CTRL+SHIFT with any of the arrow keys (Highlight a block of text)&lt;br /&gt;SHIFT with any of the arrow keys (Select more than one item in a&lt;br /&gt;window or on the desktop, or select text in a document)&lt;br /&gt;CTRL+A (Select all)&lt;br /&gt;F3 key (Search for a file or a folder)&lt;br /&gt;ALT+ENTER (View the properties for the selected item)&lt;br /&gt;ALT+F4 (Close the active item, or quit the active program)&lt;br /&gt;ALT+ENTER (Display the properties of the selected object)&lt;br /&gt;ALT+SPACEBAR (Open the shortcut menu for the active window)&lt;br /&gt;CTRL+F4 (Close the active document in programs that enable you to&lt;br /&gt;have multiple documents open simultaneously)&lt;br /&gt;ALT+TAB (Switch between the open items)&lt;br /&gt;ALT+ESC (Cycle through items in the order that they had been opened)&lt;br /&gt;F6 key (Cycle through the screen elements in a window or on the&lt;br /&gt;desktop)&lt;br /&gt;F4 key (Display the Address bar list in My Computer or Windows&lt;br /&gt;Explorer)&lt;br /&gt;SHIFT+F10 (Display the shortcut menu for the selected item)&lt;br /&gt;ALT+SPACEBAR (Display the System menu for the active window)&lt;br /&gt;CTRL+ESC (Display the Start menu)&lt;br /&gt;ALT+Underlined letter in a menu name (Display the corresponding menu)&lt;br /&gt;Underlined letter in a command name on an open menu (Perform the&lt;br /&gt;corresponding command)&lt;br /&gt;F10 key (Activate the menu bar in the active program)&lt;br /&gt;RIGHT ARROW (Open the next menu to the right, or open a submenu)&lt;br /&gt;LEFT ARROW (Open the next menu to the left, or close a submenu)&lt;br /&gt;F5 key (Update the active window)&lt;br /&gt;BACKSPACE (View the folder one level up in My Computer or Windows&lt;br /&gt;Explorer)&lt;br /&gt;ESC (Cancel the current task)&lt;br /&gt;SHIFT when you insert a CD-ROM into the CD-ROM drive (Prevent the CD-&lt;br /&gt;ROM from automatically playing)&lt;br /&gt;Dialog Box Keyboard Shortcuts&lt;br /&gt;CTRL+TAB (Move forward through the tabs)&lt;br /&gt;CTRL+SHIFT+TAB (Move backward through the tabs)&lt;br /&gt;TAB (Move forward through the options)&lt;br /&gt;SHIFT+TAB (Move backward through the options)&lt;br /&gt;ALT+Underlined letter (Perform the corresponding command or select&lt;br /&gt;the corresponding option)&lt;br /&gt;ENTER (Perform the command for the active option or button)&lt;br /&gt;SPACEBAR (Select or clear the check box if the active option is a&lt;br /&gt;check box)&lt;br /&gt;Arrow keys (Select a button if the active option is a group of option&lt;br /&gt;buttons)&lt;br /&gt;F1 key (Display Help)&lt;br /&gt;F4 key (Display the items in the active list)&lt;br /&gt;BACKSPACE (Open a folder one level up if a folder is selected in the&lt;br /&gt;Save As or Open dialog box)&lt;br /&gt;m*cro$oft Natural Keyboard Shortcuts&lt;br /&gt;Windows Logo (Display or hide the Start menu)&lt;br /&gt;Windows Logo+BREAK (Display the System Properties dialog box)&lt;br /&gt;Windows Logo+D (Display the desktop)&lt;br /&gt;Windows Logo+M (Minimize all of the windows)&lt;br /&gt;Windows Logo+SHIFT+M (Restore the minimized windows)&lt;br /&gt;Windows Logo+E (Open My Computer)&lt;br /&gt;Windows Logo+F (Search for a file or a folder)&lt;br /&gt;CTRL+Windows Logo+F (Search for computers)&lt;br /&gt;Windows Logo+F1 (Display Windows Help)&lt;br /&gt;Windows Logo+ L (Lock the keyboard)&lt;br /&gt;Windows Logo+R (Open the Run dialog box)&lt;br /&gt;Windows Logo+U (Open Utility Manager)&lt;br /&gt;Accessibility Keyboard Shortcuts&lt;br /&gt;Right SHIFT for eight seconds (Switch FilterKeys either on or off)&lt;br /&gt;Left ALT+left SHIFT+PRINT SCREEN (Switch High Contrast either on or&lt;br /&gt;off)&lt;br /&gt;Left ALT+left SHIFT+NUM LOCK (Switch the MouseKeys either on or off)&lt;br /&gt;SHIFT five times (Switch the StickyKeys either on or off)&lt;br /&gt;NUM LOCK for five seconds (Switch the ToggleKeys either on or off)&lt;br /&gt;Windows Logo +U (Open Utility Manager)&lt;br /&gt;Windows Explorer Keyboard Shortcuts&lt;br /&gt;END (Display the bottom of the active window)&lt;br /&gt;HOME (Display the top of the active window)&lt;br /&gt;NUM LOCK+Asterisk sign (*) (Display all of the subfolders that are&lt;br /&gt;under the selected folder)&lt;br /&gt;NUM LOCK+Plus sign (+) (Display the contents of the selected folder)&lt;br /&gt;NUM LOCK+Minus sign (-) (Collapse the selected folder)&lt;br /&gt;LEFT ARROW (Collapse the current selection if it is expanded, or&lt;br /&gt;select the parent folder)&lt;br /&gt;RIGHT ARROW (Display the current selection if it is collapsed, or&lt;br /&gt;select the first subfolder)&lt;br /&gt;Shortcut Keys for Character Map&lt;br /&gt;After you double-click a character on the grid of characters, you can&lt;br /&gt;move through the grid by using the keyboard shortcuts:&lt;br /&gt;RIGHT ARROW (Move to the right or to the beginning of the next line)&lt;br /&gt;LEFT ARROW (Move to the left or to the end of the previous line)&lt;br /&gt;UP ARROW (Move up one row)&lt;br /&gt;DOWN ARROW (Move down one row)&lt;br /&gt;PAGE UP (Move up one screen at a time)&lt;br /&gt;PAGE DOWN (Move down one screen at a time)&lt;br /&gt;HOME (Move to the beginning of the line)&lt;br /&gt;END (Move to the end of the line)&lt;br /&gt;CTRL+HOME (Move to the first character)&lt;br /&gt;CTRL+END (Move to the last character)&lt;br /&gt;SPACEBAR (Switch between Enlarged and Normal mode when a character is&lt;br /&gt;selected)&lt;br /&gt;m*cro$oft Management Console (MMC) Main Window Keyboard Shortcuts&lt;br /&gt;CTRL+O (Open a saved console)&lt;br /&gt;CTRL+N (Open a new console)&lt;br /&gt;CTRL+S (Save the open console)&lt;br /&gt;CTRL+M (Add or remove a console item)&lt;br /&gt;CTRL+W (Open a new window)&lt;br /&gt;F5 key (Update the content of all console windows)&lt;br /&gt;ALT+SPACEBAR (Display the MMC window menu)&lt;br /&gt;ALT+F4 (Close the console)&lt;br /&gt;ALT+A (Display the Action menu)&lt;br /&gt;ALT+V (Display the View menu)&lt;br /&gt;ALT+F (Display the File menu)&lt;br /&gt;ALT+O (Display the Favorites menu)&lt;br /&gt;MMC Console Window Keyboard Shortcuts&lt;br /&gt;CTRL+P (Print the current page or active pane)&lt;br /&gt;ALT+Minus sign (-) (Display the window menu for the active console&lt;br /&gt;window)&lt;br /&gt;SHIFT+F10 (Display the Action shortcut menu for the selected item)&lt;br /&gt;F1 key (Open the Help topic, if any, for the selected item)&lt;br /&gt;F5 key (Update the content of all console windows)&lt;br /&gt;CTRL+F10 (Maximize the active console window)&lt;br /&gt;CTRL+F5 (Restore the active console window)&lt;br /&gt;ALT+ENTER (Display the Properties dialog box, if any, for the&lt;br /&gt;selected item)&lt;br /&gt;F2 key (Rename the selected item)&lt;br /&gt;CTRL+F4 (Close the active console window. When a console has only one&lt;br /&gt;console window, this shortcut closes the console)&lt;br /&gt;Remote Desktop Connection Navigation&lt;br /&gt;CTRL+ALT+END (Open the m*cro$oft Windows NT Security dialog box)&lt;br /&gt;ALT+PAGE UP (Switch between programs from left to right)&lt;br /&gt;ALT+PAGE DOWN (Switch between programs from right to left)&lt;br /&gt;ALT+INSERT (Cycle through the programs in most recently used order)&lt;br /&gt;ALT+HOME (Display the Start menu)&lt;br /&gt;CTRL+ALT+BREAK (Switch the client computer between a window and a&lt;br /&gt;full screen)&lt;br /&gt;ALT+DELETE (Display the Windows menu)&lt;br /&gt;CTRL+ALT+Minus sign (-) (Place a snapshot of the active window in the&lt;br /&gt;client on the Terminal server clipboard and provide the same&lt;br /&gt;functionality as pressing PRINT SCREEN on a local computer.)&lt;br /&gt;CTRL+ALT+Plus sign (+) (Place a snapshot of the entire client window&lt;br /&gt;area on the Terminal server clipboard and provide the same&lt;br /&gt;functionality as pressing ALT+PRINT SCREEN on a local computer.)&lt;br /&gt;m*cro$oft Internet Explorer Navigation&lt;br /&gt;CTRL+B (Open the Organize Favorites dialog box)&lt;br /&gt;CTRL+E (Open the Search bar)&lt;br /&gt;CTRL+F (Start the Find utility)&lt;br /&gt;CTRL+H (Open the History bar)&lt;br /&gt;CTRL+I (Open the Favorites bar)&lt;br /&gt;CTRL+L (Open the Open dialog box)&lt;br /&gt;CTRL+N (Start another instance of the browser with the same Web&lt;br /&gt;address)&lt;br /&gt;CTRL+O (Open the Open dialog box, the same as CTRL+L)&lt;br /&gt;CTRL+P (Open the Print dialog box)&lt;br /&gt;CTRL+R (Update the current Web page)&lt;br /&gt;CTRL+W (Close the current window)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2557208617116274243-2814713411766962825?l=my-techs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my-techs.blogspot.com/feeds/2814713411766962825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2557208617116274243&amp;postID=2814713411766962825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2557208617116274243/posts/default/2814713411766962825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2557208617116274243/posts/default/2814713411766962825'/><link rel='alternate' type='text/html' href='http://my-techs.blogspot.com/2010/02/100-keyboard-shortcuts.html' title='100 keyboard shortcuts'/><author><name>Anish</name><uri>http://www.blogger.com/profile/15774000976404638338</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Yu6HRTE6qws/ScoT74I1VfI/AAAAAAAABtY/pCOAIweI-84/S220/DSC02431.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2557208617116274243.post-3029960503216543305</id><published>2009-04-21T23:54:00.000-07:00</published><updated>2009-04-22T00:07:39.789-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wowza'/><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='video record'/><category scheme='http://www.blogger.com/atom/ns#' term='media'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>Wowza media server</title><content type='html'>Wowza Media Server Pro is the only industrial strength Flash streaming server software delivered by a company solely focused on media servers. With Wowza Pro &lt;strong&gt;you get it all&lt;/strong&gt;: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;High Performance&lt;/b&gt; - the &lt;em&gt;only&lt;/em&gt; solution for scaleable, true 24x7 live streaming    &lt;/li&gt;&lt;li&gt;&lt;b&gt;Protected&lt;/b&gt; - SecureToken anti-ripping technology and encrypted streaming for content protection    &lt;/li&gt;&lt;li&gt;&lt;b&gt;Innovative&lt;/b&gt; - exclusive support for &lt;a href="http://www.wowzamedia.com/h264.html"&gt;non-Flash live encoders&lt;/a&gt; and &lt;a href="http://www.wowzamedia.com/shoutcast.html"&gt;SHOUTcast re-streaming&lt;/a&gt;    &lt;/li&gt;&lt;li&gt;&lt;b&gt;Interactive&lt;/b&gt; - two-way &lt;a href="http://www.wowzamedia.com/flash-streaming-audio-server.html"&gt;streaming audio&lt;/a&gt;, &lt;a href="http://www.wowzamedia.com/flash-streaming-video-server.html"&gt;streaming video&lt;/a&gt;, shared object support and server side programming    &lt;/li&gt;&lt;li&gt;&lt;b&gt;Economical&lt;/b&gt; - 75% less than Adobe Flash Media Interactive Server   &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;There are some examples for video recording, video streaming, video chats and many more in the example section included with the package. For more details please visit:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.wowzamedia.com/support.html"&gt;http://www.wowzamedia.com/support.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.wowzamedia.com/forums"&gt;http://www.wowzamedia.com/forums&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;-&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2557208617116274243-3029960503216543305?l=my-techs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my-techs.blogspot.com/feeds/3029960503216543305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2557208617116274243&amp;postID=3029960503216543305' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2557208617116274243/posts/default/3029960503216543305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2557208617116274243/posts/default/3029960503216543305'/><link rel='alternate' type='text/html' href='http://my-techs.blogspot.com/2009/04/wowza-media-server.html' title='Wowza media server'/><author><name>Anish</name><uri>http://www.blogger.com/profile/15774000976404638338</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Yu6HRTE6qws/ScoT74I1VfI/AAAAAAAABtY/pCOAIweI-84/S220/DSC02431.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2557208617116274243.post-1982277857359857321</id><published>2009-01-08T03:35:00.001-08:00</published><updated>2009-02-10T04:37:18.191-08:00</updated><title type='text'>SalesForce Single Sign On With Symfony</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Introduction&lt;/span&gt;&lt;hr /&gt;&lt;br /&gt;Single Sign-On is a process that allows network users to access all authorized network resources without having to separately log in to each resource. Single Sign-On also gives your organization the ability to integrate with an external identity management system or perform web based single sign on to Force.com.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.awsurveys.com/HomeMain.cfm?RefID=anishthilak"&gt;&lt;img src="http://www.awsurveys.com/Pictures/AWS2_ad2_600by100.jpg" height="100" width="600" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How Single Sign-On Works&lt;/span&gt;&lt;hr /&gt;&lt;br /&gt;The high-level process for authenticating users via Single Sign-On is as follows:&lt;br /&gt;1. When a user tries to log in—either online or using the API—Salesforce validates the username and checks the user’s profile settings.&lt;br /&gt;2. If the user’s profile has the "Uses Single Sign-on" user permission, then Salesforce does not authenticate the username with the password. Instead, a Web Services call is made to the user’s single sign-on service, asking it to validate the username and password.&lt;br /&gt;3. The Web Services call passes the username, password, and sourceIp to a Web Service defined for your organization. (sourceIp is the IP address that originated the login request). You must create and deploy an implementation of the Web Service that can be accessed by Salesforce.com servers.&lt;br /&gt;4. Your implementation of the Web Service validates the passed information and returns either "true" or "false."&lt;br /&gt;5. If the response is "true," then the login process continues, a new session is generated, and the user proceeds to the application. If "false" is returned, then the user is informed that his or her username and password combination was invalid.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Enabling Single Sign-On&lt;/span&gt;&lt;hr /&gt;&lt;br /&gt;1. Contact Salesforce.com to turn on Single Sign-On for your organization.&lt;br /&gt;2. Build your SSO Web Service:&lt;br /&gt;Download the Web Services Description Language (WSDL) file, AuthenticationService.wsdl, that describes the Single Sign-On service. It can be used to automatically generate a server-side stub to which you can add your specific implementation. You can download the file from &lt;span style="font-style: italic;"&gt;Setup | Develop | API | Download Delegated Authentication WSDL&lt;/span&gt;. The &lt;span style="font-weight: bold;"&gt;file should be saved in web directory of symfony project.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_0-rw4Cj2l3Y/SHsUxae_nGI/AAAAAAAAAAU/rNFk-vrFDeg/s1600-h/authentication.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_0-rw4Cj2l3Y/SHsUxae_nGI/AAAAAAAAAAU/rNFk-vrFDeg/s400/authentication.jpg" alt="" id="BLOGGER_PHOTO_ID_5222791032021687394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. In Salesforce, specify your organization’s Single Sign-On Gateway URL by clicking&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Setup | Security Controls | Single Sign On Settings.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_0-rw4Cj2l3Y/SHtAE6QCgvI/AAAAAAAAAA8/kSkxzys-5SQ/s1600-h/gateway.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_0-rw4Cj2l3Y/SHtAE6QCgvI/AAAAAAAAAA8/kSkxzys-5SQ/s400/gateway.jpg" alt="" id="BLOGGER_PHOTO_ID_5222838645966406386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. Modify your user profiles to contain the "Uses Single Sign-On" user permission. In Salesforce, click &lt;span style="font-style: italic;"&gt;Setup | Manage Users | Profiles&lt;/span&gt; to add or edit profiles. It is recommended you create a new user with a new profile to test single sign on. Do not test with the administrator account.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_0-rw4Cj2l3Y/SHsXB5VLTaI/AAAAAAAAAAk/nSL0DrLvuos/s1600-h/image_1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_0-rw4Cj2l3Y/SHsXB5VLTaI/AAAAAAAAAAk/nSL0DrLvuos/s400/image_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5222793514203172258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_0-rw4Cj2l3Y/SHsXB69LYdI/AAAAAAAAAAs/SOvWWrszUxE/s1600-h/image_2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_0-rw4Cj2l3Y/SHsXB69LYdI/AAAAAAAAAAs/SOvWWrszUxE/s400/image_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5222793514639385042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Process Flow&lt;/span&gt;&lt;hr /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://wiki.apexdevnet.com/images/thumb/c/c1/SSO.jpg/500px-SSO.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://wiki.apexdevnet.com/images/thumb/c/c1/SSO.jpg/500px-SSO.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Token Generation&lt;/span&gt;&lt;hr /&gt;&lt;br /&gt;You can use any string as a token. But to make it secure you have to follow some encryption and decryption mechanisms. Symfony uses a plugin &lt;span style="font-style: italic;"&gt;dwCrypt&lt;/span&gt; which will provide encryption and decrption functions. For the plugin to work, Mcrypt package need to be installed which in turn requires libmcrypt­2.5.8 and mhash­0.9.9 packages.&lt;br /&gt;The installation procedure is given below:&lt;br /&gt;    1. Download and install libmcrypt­2.5.8&lt;br /&gt;        &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=87941"&gt;Libmcrypt&lt;/a&gt;&lt;br /&gt;    2. Download and install mhash­0.9.9&lt;br /&gt;        &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=4286"&gt;MHash&lt;/a&gt;&lt;br /&gt;    3. Download and install mcrypt­2.6.7&lt;br /&gt;        &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=87941"&gt;MCrypt&lt;/a&gt;&lt;br /&gt;    4. Enable mcrypt package for php.&lt;br /&gt;    5. Install dwCrypt plugin for symfony&lt;br /&gt;        &lt;span style="font-style: italic;"&gt;symfony plugin-install http://plugins.symfony-project.org/dwCryptPlugin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Implementation&lt;/span&gt;&lt;hr /&gt;&lt;br /&gt;I.Specify a link in your intranet page which map to an action which submits SSO request to salesforce.&lt;br /&gt;&lt;div style="background-color: black; color: rgb(255, 255, 255); font-size: 12px;"&gt;&lt;br /&gt;&lt;a href="http://my_intranet.com/logintosalesforce" id="salesforce" class="headermenu" target="_blank"&gt;SalesForce&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;II.Submit SSO Request&lt;br /&gt;&lt;br /&gt;The above url route to this action.&lt;br /&gt;1.Create a function in action class to send the SSO request to salesforce.&lt;br /&gt;The function should contain the following codes&lt;br /&gt;&lt;div style="background-color: black; color: rgb(255, 255, 255); font-size: 12px;"&gt;&lt;br /&gt;           $this-&gt;username = sales_force_username;&lt;br /&gt;           $this-&gt;token        = $this-&gt;generateToken($this-&gt;username);&lt;br /&gt;&lt;br /&gt;           $this-&gt;logoutURL  =  the_url_that_should_appear_after_logging_out_from_salesforce&lt;br /&gt;&lt;br /&gt;           $this-&gt;startURL     = sales_force_home_url_after_logging_in;&lt;br /&gt;           $this-&gt;ssoStartPage = "http://my_intranet.com/logintosalesforce";&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;2.Generate token&lt;br /&gt;&lt;div style="background-color: black; color: rgb(255, 255, 255); font-size: 12px;"&gt;&lt;br /&gt;public function generateToken($username)&lt;br /&gt;           {&lt;br /&gt;               $cryptService = new sfCrypt();&lt;br /&gt;               $token = $cryptService-&gt;encrypt($username);&lt;br /&gt;               return $token;&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;3.Submit Form&lt;br /&gt;&lt;br /&gt;The form should submit username and token to salesforce. The following code describes the        template&lt;br /&gt;&lt;div style="background-color: black; color: rgb(255, 255, 255); font-size: 12px;"&gt;&lt;br /&gt;&lt;form action="{$loginURL}" method="POST" name="sfdc"&gt;&lt;br /&gt;   &lt;input type="hidden" name="un" runat="server" id="username" value= "{$username}"&gt;&lt;br /&gt;   &lt;input type="hidden" name="pw" runat="server" id="token" value= "{$token}"&gt;&lt;br /&gt;   &lt;input type="hidden" name="logoutURL" runat="server" id="logoutURL" value= "{$logoutURL}"&gt;&lt;br /&gt;   &lt;input type="hidden" name="startURL" runat="server" id="startURL" value= "{$startURL}"&gt;&lt;br /&gt;   &lt;input type="hidden" name="ssoStartPage" runat="server" id="ssoStartPage" value= "{$ssoStartPage}"&gt;&lt;br /&gt;   &lt;input type="hidden" name="jse" value="0"&gt;&lt;br /&gt;   &lt;input type="hidden" name="rememberUn" value="1"&gt;&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;{$result}&lt;br /&gt;{literal}&lt;br /&gt;   &lt;script language="Javascript1.2"&gt;&lt;br /&gt;     document.sfdc.jse.value = 1;&lt;br /&gt;     document.sfdc.submit();&lt;br /&gt;   &lt;/script&gt;&lt;br /&gt;{/literal}&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;II. Get the soap request from salesforce.&lt;br /&gt;Salesforce will contact the web service in the gateway URL with a SOAP request when the form is submitted.Suppose the gateway url is 'http://my_intranet.com/WebService.php. The code for WebService.php is given below,&lt;br /&gt;&lt;div style="background-color: black; color: rgb(255, 255, 255); font-size: 12px;"&gt;&lt;br /&gt;  define('SF_ROOT_DIR',    realpath(dirname(__FILE__).'/..'));&lt;br /&gt;define('SF_APP',         'symfony_application_name');&lt;br /&gt;define('SF_ENVIRONMENT', 'soap');&lt;br /&gt;define('SF_DEBUG',       true);&lt;br /&gt;&lt;br /&gt;require_once(SF_ROOT_DIR.DIRECTORY_SEPARATOR.'apps'.DIRECTORY_SEPARATOR.SF_APP.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'config.php');&lt;br /&gt;&lt;br /&gt;ini_set("soap.wsdl_cache_enabled", "0");&lt;br /&gt;&lt;br /&gt;$server = new SoapServer(sfConfig::get('AuthenticationService.wsdl'));&lt;br /&gt;$server-&gt;setClass("myWebServiceController");&lt;br /&gt;&lt;br /&gt;$server-&gt;handle();&lt;br /&gt;?&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Notice that the file  should reside in web directory&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;myWebServiceController.class.php should be written in &lt;span style="font-weight: bold;"&gt;symfony_project&lt;/span&gt;/apps/&lt;span style="font-weight: bold;"&gt;symfony_app_name&lt;/span&gt;/lib directory.&lt;br /&gt;&lt;div style="background-color: black; color: rgb(255, 255, 255); font-size: 12px;"&gt;&lt;br /&gt;&lt;br /&gt;class myWebServiceController extends sfController&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;   public $request;&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Function to initialize SOAP request&lt;br /&gt;    * &lt;br /&gt;    * @return void&lt;br /&gt;    */&lt;br /&gt;   public function __construct()&lt;br /&gt;   {&lt;br /&gt;       $this-&gt;context = sfContext::getInstance();&lt;br /&gt;       $this-&gt;request = $this-&gt;context-&gt;getRequest();&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * The function handles soap request. It first parses the request.&lt;br /&gt;    * The user will be logged in if the&lt;br /&gt;    * response is true and will not be logged in if an exception is caught.&lt;br /&gt;    *&lt;br /&gt;    * @param Object $soapRequest - The soap request object&lt;br /&gt;    *&lt;br /&gt;    * @return array&lt;br /&gt;    */&lt;br /&gt;   function Authenticate($soapRequest)&lt;br /&gt;   {&lt;br /&gt;&lt;br /&gt;       /** This loop parses the incoming request and stores the username and token in an array*/&lt;br /&gt;&lt;br /&gt;       foreach ($soapRequest as $key=&gt;$value)&lt;br /&gt;       {&lt;br /&gt;           $loginInfo[$key] = $value;&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       try&lt;br /&gt;       {&lt;br /&gt;          /**&lt;br /&gt;You can add validation for the incoming token here. The variable $loginInfo['password'] will give the token in the request. To authenticate the user you have to set the&lt;br /&gt;  &lt;span style="font-weight: bold;"&gt;Authenticated&lt;/span&gt; parameter to &lt;span style="font-weight: bold;"&gt;true&lt;/span&gt;&lt;br /&gt;         */&lt;br /&gt;&lt;br /&gt;           return array("Authenticated"=&gt;'true');&lt;br /&gt;       }&lt;br /&gt;       catch (Exception $e)&lt;br /&gt;       {&lt;br /&gt;           throw new SoapFault("1", $e-&gt;getMessage());&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;If Authenticate is set to true, user become authenticated and can see the home page for logged-in users of salesforce.com&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;for more details please visit the article by my friend Rajeev:&lt;br /&gt;http://raajeevam.blogspot.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2557208617116274243-1982277857359857321?l=my-techs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my-techs.blogspot.com/feeds/1982277857359857321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2557208617116274243&amp;postID=1982277857359857321' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2557208617116274243/posts/default/1982277857359857321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2557208617116274243/posts/default/1982277857359857321'/><link rel='alternate' type='text/html' href='http://my-techs.blogspot.com/2009/01/salesforce-single-sign-on-with-symfony.html' title='SalesForce Single Sign On With Symfony'/><author><name>Anish</name><uri>http://www.blogger.com/profile/15774000976404638338</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Yu6HRTE6qws/ScoT74I1VfI/AAAAAAAABtY/pCOAIweI-84/S220/DSC02431.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_0-rw4Cj2l3Y/SHsUxae_nGI/AAAAAAAAAAU/rNFk-vrFDeg/s72-c/authentication.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2557208617116274243.post-245195336407562134</id><published>2009-01-08T02:07:00.000-08:00</published><updated>2009-01-08T02:21:11.027-08:00</updated><title type='text'>Install Symfony1.1 in Windows with WAMP</title><content type='html'>Install Symfony1.1 in Windows with WAMP&lt;br /&gt;&lt;br /&gt;Part 1 - Installing WAMP&lt;br /&gt;--------------------------------&lt;br /&gt;&lt;br /&gt;WAMP is a self-installing, all-in-the-box package with Apach, MySQL and PHP 5.&lt;br /&gt;&lt;br /&gt;1.Download WampServer2.0c.exe from  http://www.wampserver.com/en/  if local copy is not there.&lt;br /&gt;2.Double click WampServer2.0c.exe.&lt;br /&gt;3.Symfony needs PHP-XSL and Apache URL Rewrite Module to function normally.&lt;br /&gt;&lt;br /&gt;   a. To activate the Rewrite module - left click on WAMP’s tray icon and then in&lt;br /&gt;      Apache &gt;&gt; Apache Modules menu select rewrite_module&lt;br /&gt;      (Server will automatically reboot) &lt;br /&gt;   b. To enable XSL for php - left click on WAMP’s tray icon and then in&lt;br /&gt;      PHP &gt;&gt; PHP Extension menu look for php_xsl and click it.&lt;br /&gt;      Open C:\wamp\bin\php\php5.2.6\php.ini and remove “;” from the line:&lt;br /&gt;      ;extension=php_xsl.dll&lt;br /&gt;   c. Save and close the file.&lt;br /&gt;&lt;br /&gt;4.Add environment variables to have access to PHP &amp;amp; MySQL under the command line.&lt;br /&gt;Right-click on My Computer, then Properties. Switch to Advanced tab and click the     Environment Variables button. At the end of variable PATH let’s add; C:\wamp\bin\php\php5.2.6; C:\wamp\bin\mysql\mysql5.0.51b\bin (paths to MySQL and PHP files separated by a semicolon)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Part 2 - PEAR Install&lt;br /&gt;-----------------------------&lt;br /&gt;&lt;br /&gt;PEAR (PHP Extension and Application Repository) is a PHP extension distribution system.&lt;br /&gt;In the WAMP’s PHP directory (ie. C:\wamp\bin\php\php5.2.5\) run the go-pear. bat file. Follow the installation steps and answer the questions, the default config should be fine, so you can answer:&lt;br /&gt;[Enter] (default value) - if we want PEAR installed system wide.&lt;br /&gt;[Enter] - If we don’t want to change the directory structure.&lt;br /&gt;Y - We allow PEAR to modify our php.ini.&lt;br /&gt;And [Enter] twice to finish.&lt;br /&gt;Inside the PHP directory the installer created a PEAR_ENV.reg file, which after double-clicking will add all the PEAR variables to the registry - no need to do it by hand. Also add the path  C:\wamp\bin\php\php5.2.5\  to environmental variable similar to the one mentioned above.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Part 3 - Installing Symfony&lt;br /&gt;------------------------------------&lt;br /&gt;Open the command line and write:&lt;br /&gt;&gt; pear channel-discover pear.symfony-project.com&lt;br /&gt;&lt;br /&gt;If everything goes well, the following lines get displayed on the console:&lt;br /&gt;&lt;br /&gt;Adding Channel “pear.symfony-project.com” succeeded&lt;br /&gt;Discovery of channel “pear.symfony-project.com” succeeded&lt;br /&gt;&lt;br /&gt;Execute the following command in the console&lt;br /&gt;&gt; pear install symfony/symfony-1.1.6&lt;br /&gt;&lt;br /&gt;Part 4 - Create Symfony project&lt;br /&gt;-------------------------------------------&lt;br /&gt;&lt;br /&gt;Execute the following from command line;&lt;br /&gt;&lt;br /&gt;&gt; cd C:\wamp\www&lt;br /&gt;&gt; mkdir myproject&lt;br /&gt;&gt; cd myproject&lt;br /&gt;&gt; symfony init-project myproject&lt;br /&gt;&gt; symfony init-app testapp&lt;br /&gt;&gt; symfony init-module testapp firstpage&lt;br /&gt;&lt;br /&gt;The work can be seen at http://localhost/myproject/web/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Part 5 – Configuring Apache for the project&lt;br /&gt;--------------------------------------------------&lt;br /&gt;&lt;br /&gt;1.Open httpd.conf in the folder C:\wamp\bin\apache\apache2.2.8\conf&lt;br /&gt;You can see Listen 80 statement. Include Listen 81 below that. (You are going to host the application in port 81)&lt;br /&gt;2.Remove # from the line,&lt;br /&gt;# Include conf/extra/httpd-vhosts.conf&lt;br /&gt;3.Save and close the file.&lt;br /&gt;4.Open httpd-vhosts.conf in the folder C:\wamp\bin\apache\apache2.2.8\conf\extra&lt;br /&gt;5.Add new virtual host for your application.&lt;br /&gt;6.Save and close the file.&lt;br /&gt;7.Restart Apache : left click on WAMP’s tray icon and then in&lt;br /&gt;                     Apache &gt;&gt; Service &gt;&gt; Restart Service&lt;br /&gt;  &lt;br /&gt;8.Take a browser and type http://localhost:81/ in the address bar.&lt;br /&gt;You can see a page similar to the one given below:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[This article was created by my friend Rajeev Gopinath.  Also thanks to Anoop Philip...]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2557208617116274243-245195336407562134?l=my-techs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my-techs.blogspot.com/feeds/245195336407562134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2557208617116274243&amp;postID=245195336407562134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2557208617116274243/posts/default/245195336407562134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2557208617116274243/posts/default/245195336407562134'/><link rel='alternate' type='text/html' href='http://my-techs.blogspot.com/2009/01/install-symfony11-in-windows-with-wamp.html' title='Install Symfony1.1 in Windows with WAMP'/><author><name>Anish</name><uri>http://www.blogger.com/profile/15774000976404638338</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Yu6HRTE6qws/ScoT74I1VfI/AAAAAAAABtY/pCOAIweI-84/S220/DSC02431.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2557208617116274243.post-4880130486637388639</id><published>2009-01-06T00:35:00.000-08:00</published><updated>2009-01-06T00:44:19.883-08:00</updated><title type='text'>BITSONTHERUN  -  Hassle-free video hosting</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;Bits on the Run is a clear                 and powerful system for                  converting, managing and                  streaming video on your site.             &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;http://www.bitsontherun.com/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;     These features highlight why Bits on the Run is a full-fledged yet easy      to work with videohosting solution. Find out why we are easier to set      up, more flexible, cheaper and better to integrate than competing      products.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;ul&gt;&lt;li&gt;&lt;h2  style="font-weight: normal; text-align: left;font-family:courier new;"&gt;&lt;span style="font-size:100%;"&gt;High-Quality Video&lt;/span&gt;&lt;/h2&gt;&lt;/li&gt;&lt;li&gt;&lt;h2  style="font-weight: normal; text-align: left;font-family:courier new;"&gt;&lt;span style="font-size:100%;"&gt;Custom Video Players&lt;/span&gt;&lt;/h2&gt;&lt;/li&gt;&lt;li&gt;&lt;h2  style="font-weight: normal; text-align: left;font-family:courier new;"&gt;&lt;span style="font-size:100%;"&gt;Flexible Playlists&lt;/span&gt;&lt;/h2&gt;&lt;/li&gt;&lt;li&gt;&lt;h2  style="font-weight: normal; text-align: left;font-family:courier new;"&gt;&lt;span style="font-size:100%;"&gt;Hands-on support&lt;/span&gt;&lt;/h2&gt;&lt;/li&gt;&lt;li&gt;&lt;h2  style="font-weight: normal; text-align: left;font-family:courier new;"&gt;&lt;span style="font-size:100%;"&gt;Easy Workflow&lt;/span&gt;&lt;/h2&gt;&lt;/li&gt;&lt;li&gt;&lt;h2  style="font-weight: normal; text-align: left;font-family:courier new;"&gt;&lt;span style="font-size:100%;"&gt;Extensive API&lt;/span&gt;&lt;/h2&gt;&lt;/li&gt;&lt;li&gt;&lt;h2  style="font-weight: normal; text-align: left;font-family:courier new;"&gt;&lt;span style="font-size:100%;"&gt;Effective Advertising&lt;/span&gt;&lt;/h2&gt;&lt;/li&gt;&lt;li&gt;&lt;h2  style="font-weight: normal; text-align: left;font-family:courier new;"&gt;&lt;span style="font-size:100%;"&gt;Clear Pricing&lt;/span&gt;&lt;/h2&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2557208617116274243-4880130486637388639?l=my-techs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my-techs.blogspot.com/feeds/4880130486637388639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2557208617116274243&amp;postID=4880130486637388639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2557208617116274243/posts/default/4880130486637388639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2557208617116274243/posts/default/4880130486637388639'/><link rel='alternate' type='text/html' href='http://my-techs.blogspot.com/2009/01/bitsontherun-hassle-free-video-hosting.html' title='BITSONTHERUN  -  Hassle-free video hosting'/><author><name>Anish</name><uri>http://www.blogger.com/profile/15774000976404638338</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Yu6HRTE6qws/ScoT74I1VfI/AAAAAAAABtY/pCOAIweI-84/S220/DSC02431.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2557208617116274243.post-6272842891677004520</id><published>2008-12-26T01:02:00.000-08:00</published><updated>2009-01-21T21:44:20.275-08:00</updated><title type='text'>PhpUnderControl Framework For Symfony Projects</title><content type='html'>&lt;p style="margin-bottom: 0pt;"&gt;&lt;span style="font-size:medium;"&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0pt;"&gt;phpUnderControl is an extension for Cruise Control that integrates several PHP development tools, such as&lt;/p&gt; &lt;ul&gt;&lt;li&gt; &lt;a id="g7gg" title="PHPUnit" href="http://www.phpunit.de/pocket_guide/3.3/en/index.html"&gt;PHPUnit&lt;/a&gt; &lt;ul&gt;&lt;li&gt;Which contains a rich set of features like Unit Testing and Functional Testing, Code Coverage, Project Mess Detection and Software Metrics etc,&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;a id="uf92" title="PHP_Code Sniffer" href="https://pear.php.net/reference/PHP_CodeSniffer-0.7.0/PHP_CodeSniffer/_PHP_CodeSniffer-0.7.0---CodeSniffer.php.html"&gt;PHP_Code Sniffer&lt;/a&gt; &lt;/strong&gt; &lt;ul&gt;&lt;li&gt;For static code analysis&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;&lt;a id="bscx" title="PHPDocumentor" href="http://manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_phpDocumentor.pkg.html"&gt;PHPDocumentor&lt;/a&gt; &lt;ul&gt;&lt;li&gt;For API documentation generation. It comes with a powerful command-line tool that can, among other things, automatically create Cruise Control’s XML configuration files for your project.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;To know more about PhpUnderControl please visit the blog posted by my friend Anoop:&lt;br /&gt;&lt;a href="http://anoosphpundercontrol.wordpress.com/2008/07/29/phpundercontrol-framework-for-symfony-projects"&gt;http://anoosphpundercontrol.wordpress.com/2008/07/29/phpundercontrol-framework-for-symfony-projects&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2557208617116274243-6272842891677004520?l=my-techs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my-techs.blogspot.com/feeds/6272842891677004520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2557208617116274243&amp;postID=6272842891677004520' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2557208617116274243/posts/default/6272842891677004520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2557208617116274243/posts/default/6272842891677004520'/><link rel='alternate' type='text/html' href='http://my-techs.blogspot.com/2008/12/phpundercontrol-framework-for-symfony.html' title='PhpUnderControl Framework For Symfony Projects'/><author><name>Anish</name><uri>http://www.blogger.com/profile/15774000976404638338</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Yu6HRTE6qws/ScoT74I1VfI/AAAAAAAABtY/pCOAIweI-84/S220/DSC02431.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2557208617116274243.post-4804308371685637338</id><published>2008-12-26T00:48:00.000-08:00</published><updated>2008-12-26T00:49:24.327-08:00</updated><title type='text'>Symfony Coding Standards</title><content type='html'>&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  The golden rule: Imitate the existing symfony code &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;[1]  &lt;span&gt;&lt;span&gt;Never  use tabulations in the code. Indentation is done by steps of  4  blanks. For yml files 2 blanks should be used.  &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;[2]  Don't put  spaces after an opening parenthesis and before a closing one. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;            if ($reqvalue == _getRequestValue($name))    correct&lt;br /&gt;            if ( $reqvalue == _getRequestValue($name) )  incorrect&lt;br /&gt;&lt;br /&gt;[3]  Use  camelCase, not underscores, for variable, function and method names.  &lt;br /&gt;&lt;br /&gt;[4]  Use  underscores for helper functions name (only for symfony 1.0 stuff).&lt;br /&gt;&lt;br /&gt;[5]  Use  underscores for option/argument/parameter names.&lt;br /&gt;&lt;br /&gt;[6]  Braces  always go on their own line.&lt;br /&gt;&lt;br /&gt;[7]  Use  braces for indicating control structure body regardless of number of  statements it contains.&lt;br /&gt;&lt;br /&gt;[8]  Don't  end library files with the usual ?&gt; closing tag. This is because  it is not really needed, and because it can create problems in the  output if you ever have white space after this tag.&lt;br /&gt;&lt;br /&gt;[9]  In a function  body, return statements should have a blank line prior to it to  increase readability.&lt;br /&gt;&lt;br /&gt;function fooFunction()&lt;br /&gt;{&lt;br /&gt;    if (condition2 || condition3)&lt;br /&gt;    {&lt;br /&gt;        statement1;&lt;br /&gt;        statement2;&lt;br /&gt;        return 1;&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;        defaultaction;&lt;br /&gt;    } &lt;br /&gt;&lt;br /&gt;    return null;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[10]  All one line  comments should be on their own lines and in this format.&lt;br /&gt;// space first, with no full stop needed&lt;br /&gt;&lt;br /&gt;[11]  Avoid  evaluating variables within strings, instead opt for concatenation  es and string with a lot of substitution&lt;br /&gt;$string = 'something';&lt;br /&gt;$newString = "$string is awesome!";    // bad, not awesome&lt;br /&gt;$newString = $string.' is awesome!';   // better&lt;br /&gt;$newString = sprintf('%s is awesome', $string); // for exception messages and string with a lot of substitution&lt;br /&gt;&lt;br /&gt;[12]  Use  lowercase constants: false, true, null&lt;br /&gt;&lt;br /&gt;[13]  To  check if a variable is null or not, use the is_null() function&lt;br /&gt;&lt;br /&gt;[14]  When  comparing a variable to a string, put the string first:&lt;br /&gt;if (1 == $variable)&lt;br /&gt;&lt;br /&gt;[15]  A phpdoc  block begins with a single line ending with a point. All @...  statements does not end with a dot:&lt;br /&gt;/**&lt;br /&gt; * Notifies all listeners of a given event.&lt;br /&gt; *&lt;br /&gt; * @param sfEvent A sfEvent instance&lt;br /&gt; *&lt;br /&gt; * @return sfEvent The sfEvent instance&lt;br /&gt; */   &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2557208617116274243-4804308371685637338?l=my-techs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my-techs.blogspot.com/feeds/4804308371685637338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2557208617116274243&amp;postID=4804308371685637338' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2557208617116274243/posts/default/4804308371685637338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2557208617116274243/posts/default/4804308371685637338'/><link rel='alternate' type='text/html' href='http://my-techs.blogspot.com/2008/12/symfony-coding-standards.html' title='Symfony Coding Standards'/><author><name>Anish</name><uri>http://www.blogger.com/profile/15774000976404638338</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Yu6HRTE6qws/ScoT74I1VfI/AAAAAAAABtY/pCOAIweI-84/S220/DSC02431.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2557208617116274243.post-4133591517925503745</id><published>2008-12-25T22:43:00.000-08:00</published><updated>2008-12-26T01:42:31.368-08:00</updated><title type='text'>PHP Codesniffer standard for Symfony</title><content type='html'>&lt;span&gt;&lt;span&gt;&lt;br /&gt;I have created a standard for Symfony framework to use with PHP code sniffer.&lt;br /&gt;&lt;br /&gt;-Download and install PHP code sniffer&lt;br /&gt;http://pear.php.net/package/PHP_CodeSniffer&lt;br /&gt;&lt;br /&gt;-Check out the code from  subversion &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;a href="http://subversion.assembla.com/svn/phpsymfony/Symfony%20Code%20sniffer%20standards"&gt; http://subversion.assembla.com/svn/phpsymfony/Symfony%20Code%20sniffer%20standards&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;-Copy the Symfony directory to the code sniffer standard directory&lt;br /&gt;&lt;br /&gt;-Put --standard=Symfony for validating the file using Symfony coding standards&lt;br /&gt;&lt;br /&gt;$ phpcs --standard=Symfony /path/to/code/myfile.php&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2557208617116274243-4133591517925503745?l=my-techs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my-techs.blogspot.com/feeds/4133591517925503745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2557208617116274243&amp;postID=4133591517925503745' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2557208617116274243/posts/default/4133591517925503745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2557208617116274243/posts/default/4133591517925503745'/><link rel='alternate' type='text/html' href='http://my-techs.blogspot.com/2008/12/php-codesniffer-standard-for-symfony.html' title='PHP Codesniffer standard for Symfony'/><author><name>Anish</name><uri>http://www.blogger.com/profile/15774000976404638338</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Yu6HRTE6qws/ScoT74I1VfI/AAAAAAAABtY/pCOAIweI-84/S220/DSC02431.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2557208617116274243.post-5198178341790605785</id><published>2008-11-21T03:10:00.000-08:00</published><updated>2008-11-21T03:30:11.805-08:00</updated><title type='text'>Zend or Symfony</title><content type='html'>I am familiar with both Zend and Symfony framework for PHP. But I could not  say which is better. They are good in their own ways. In Symfony, propel as ORM and it builds. But in Zend instead of propel,  uses the classes provided by the framework. A good thing for Symfony developer is that there are many tutorials available for Symfony in web and also the forums are very active. It is very easy to get solution for a  question in Symfony from web. Zend has a very good reference document in their website, but support from outside is very low.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2557208617116274243-5198178341790605785?l=my-techs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my-techs.blogspot.com/feeds/5198178341790605785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2557208617116274243&amp;postID=5198178341790605785' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2557208617116274243/posts/default/5198178341790605785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2557208617116274243/posts/default/5198178341790605785'/><link rel='alternate' type='text/html' href='http://my-techs.blogspot.com/2008/11/zend-or-symfony.html' title='Zend or Symfony'/><author><name>Anish</name><uri>http://www.blogger.com/profile/15774000976404638338</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Yu6HRTE6qws/ScoT74I1VfI/AAAAAAAABtY/pCOAIweI-84/S220/DSC02431.JPG'/></author><thr:total>0</thr:total></entry></feed>
