Categories

Showing posts with label Development. Show all posts
Showing posts with label Development. Show all posts

Wednesday, August 27, 2014

XAMPP MSSQL connection problem, php_sqlsrv.dll

I recently tried to install or add the PHP mssql driver to connect with the ms sql server.  Official compiled dll for the php_sqlsrv is until version 5.4, and does not support PHP version 5.5 and beyond.

I tried adding the extension, but XAMPP keeps on telling me there is something wrong.  It gives a message like "startup: sqlsrv: unable to initialize module..".  I searched the internet for some time, until I came across a solution on my particular problem.

It seems there is a need to compile a newer version of the php_sqlsrv driver.  Thankfully someone did that for me since I certainly have no idea how to compile this source file.  This is only for test purposes only, so hopefully the compiled dll does not have anything else besides the intended purpose of connecting to the ms sql server.

Here is the link to that file: http://social.msdn.microsoft.com/Forums/sqlserver/en-US/e1d37219-88a3-46b2-a421-73bfa33fe433/unofficial-php-55-drivers-x86

Friday, August 22, 2014

Which is better? Notepad++ or Sublime text?

I have been searching lately for a better code editing application.  Some use sublime, some use notepad++ for website development.  I came across different websites saying Notepad++ is better, some say sublime text is better.

Here is one that is clear and objective comparison of both: http://text-editors.findthebest.com/compare/9-45/Notepad-vs-Sublime-Text

What it comes down to, is for what specific task will you be using the editor towards?  Some argue Notepad++ can compile on the editor itself.  Others argue, Sublime text can be used on different OS, such as Mac, Linux, Windows.

Both are almost identical, and can be customize to your specific layout.  But as far as latest language updates for the web, I noticed that sublime text supports the new syntax in CSS3.  I have been using Notepad++ occasionally, and when using intelli-sense, Sublime text offer much updated language file.

There is nothing wrong with Notepad++, if it can serve your specific project needs, then stick with it.  It is a stable build and free.  Sublime text on the other hand is not free and expensive for an editor.  It cost $70, and free update on current version only.  If there is a new version, the license you purchased is only good up to the point of latest update of version bought.

Note: out of the box, Sublime text already has intelli-sense working.  While Notepad++ you will need to allow autocomplete thru this steps: Settings>Preference>Auto-Completion tick on the checkbox to enable auto-complete on each input.




Monday, April 14, 2014

Windows host file helps in speeding up MySQL localhost access

We had a problem before, where the PHP page does not load as fast as it should on mySQL database access.  We seem to have solved it by allowing the 127.0.0.1 to point to localhost.

What we did was removed the comment sign # to resolve the ip as localhost.

Host file is found at the following directory: c:\windows\system32\drivers\etc\
File name is hosts.

There are a lot of source material on the internet to edit the host file.

This is one of them:
http://helpdeskgeek.com/windows-7/windows-7-hosts-file/

Wednesday, December 4, 2013

PHP PDO why the error message given has the computer name, and domain

I have been trying to connect to mySQL server locally and there is an error give with Password:NO.

After searching for a while there is a simple explaination the username and password I have given does not have rights to the database I have specified, hence the error message.

The solution and explination can be found here: http://stackoverflow.com/questions/13002409/why-php-pdo-uses-a-different-from-hostname-to-the-one-used-by-mysql-connect-wh

Hope this helps. Happy coding.

Wednesday, October 30, 2013

IIS Compression of content urlCompression

It has been a busy week for me on updating this blog.  Dealing with a 3rd party developer and letting me learn something new.  I don't know everything and I seldom pretend knowing something I don't.

What I have learned from dealing with a 3rd party developer is this option of IIS to compress the content and giving it to the client browser.  I sure wasn't aware of it.  According to this source: http://www.codinghorror.com/blog/2004/08/http-compression-and-iis-6-0.html

IIS 6 is the server I am currently using for a website done by a 3rd party developer.  So that article I linked above is a bit helpful in explaining it.  And another link on how to enable it: http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/d52ff289-94d3-4085-bc4e-24eb4f312e0e.mspx?mfr=true

Here is a link for the IIS 7 configuration: http://www.iis.net/configreference/system.webserver/urlcompression

urlCompression replaces the settings of the IIS in .Net.
Which I found out was already set to send compressed files to browsers.  And does not need to be set at all, it is only in IIS 6 and below where it is disabled, since some browsers then do not accept compressed files.

According to the first link, compression makes the plain text size by 75 percent.  Not bad, but still if you have a small bandwidth, that will still affect your server and clients that are accessing it constantly.

Saturday, October 26, 2013

what is the value represented in clientCache cachControlMaxAge

I have been given a code by a 3rd developer to update the website they created in .Net.

He just mentioned I place the code, inside the <system.webServer> configuration.

After looking at it I was a bit apprehensive in implementing this setting in the web.config file:
  <staticContent> 
        <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="10.00:00:00" /> 
  </staticContent>

I have an idea, it could represent 10 days, but wasn't sure, since this is the first time I saw this code.

After an extensive search, which was hard since there isn't much result on the usage and value syntax for this settings.  Also, the result always reflect as IIS, which makes me wonder when I see it if that is correct result.

It is confirmed it represents 10 days.  Ten days cache on the client's browser cache, which I don't know how the microsoft technology can do it on client side level.  But that was the explaination on this website: http://blog.janjonas.net/2011-08-21/microsoft-iis-7-enable-client-side-browser-caching-static-content-web-config

It says that the static contents such as image file, CSS and javascript files will not change based on the instruction given to the browser, on the page header.

The other source explained for this script can be found here: http://www.iis.net/configreference/system.webserver/staticcontent/clientcache

Which is also based on the first link, to a IIS.net resource, which confuses me, since I thought this was a .Net settings.



If conditional statement in a single line using Operators (?:)

I often forget how to do the simplified condition using the (?:) symbol.  And it is very hard to search on what you meant to search at times.  It's called the ternary operator logic (?:).

I found a source where it shows just how to do it in different levels of complexity:
http://davidwalsh.name/php-shorthand-if-else-ternary-operators

In case the site goes offline.  The Ternary Logic is the process of using the following syntax: "(condition) ? (true value return) : (false value return)".  This will shorten the if/else statement to a single line.

But often this technique confuses others not familiar with it.  But it is fun way to do it.  I still prefer the long way, but will use it to shorten the code at times.

based on the website source link, here is a sample:
$var = 6;
$var_result = ($var>3 ? true:false); // it will return true

Wednesday, October 2, 2013

GIT repository problem

We have a 3rd party developer try to give us the updates thru their repository...

Problem is the instruction isn't clear on how to do the update.  They expect everyone to know this.

The development manager just placed the command (git pull origin master).  I tried running the command in gitbash.  Without any instruction of specific folder to be in.  Did he expect me to know this, when I have no idea how GIT worked in the first place.  Thanks to the internet, now I know why I get the error:

Fatal: Not a git repository (or any parent directories): .git

He should have instructed me to change my directory to the one I cloned before.  Thanks to the internet I found the solution here: http://stackoverflow.com/questions/11961600/fatal-not-a-git-repository-or-any-of-the-parent-directories-from-git-status


You have to actually cd into the directory first:

$ git clone git://cfdem.git.sourceforge.net/gitroot/cfdem/liggghts
Cloning into 'liggghts'...
remote: Counting objects: 3005, done.
remote: Compressing objects: 100% (2141/2141), done.
remote: Total 3005 (delta 1052), reused 2714 (delta 827)
Receiving objects: 100% (3005/3005), 23.80 MiB | 2.22 MiB/s, done.
Resolving deltas: 100% (1052/1052), done.

$ git status
fatal: Not a git repository (or any of the parent directories): .git
$ cd liggghts/
$ git status
# On branch master
nothing to commit (working directory clean)

Wednesday, July 31, 2013

Email Validation on PHP

I have made email validation before, but have forgotten where I placed that code.  I had to look for the RegEx (Regular Expression) around the net, there are some that work at a certain point, but does not if you had something like .com.ph or .com.us or .com.au.

There is also a question about the why the hyphen in his code does not work:
http://stackoverflow.com/questions/7939147/preg-match-email-validation-adding-hyphen-to-domain-spot

There is also this one that works, well almost (upper case letters not allowed on this one):
http://www.developphp.com/view_lesson.php?v=224

Explanations on how to add a hyphen to the Regular Expression:
http://stackoverflow.com/questions/9589074/regex-should-hyphens-be-escaped
http://stackoverflow.com/questions/6744587/simple-regex-match-any-string-with-at-least-one-hyphen


So I tweak  the code a bit to have the perfect email validation code I have seen so far, and here it is:

$email = "test@test-tester.com.ph" //<-- Works

$Syntax='/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,3})$/';

if (preg_match($Syntax, $email)) {
     echo $email . \" is a valid email. We can accept it.\";
} else { 
     echo $email . \" is an invalid email. Please try again.\";
} 

Let me know if there is an improvement for this code.

Also a bit of caveat on the preg_match() function:
preg_match() returns 1 if the pattern matches given subject, 0 if it does not, or FALSE if an error occurred

as mentioned in PHP documentation: 

Tuesday, July 16, 2013

MySQL WorkBench problem cannot create user

'Unhandled exception: Error creating account' error message when creating an account in mySQL Workbench.

I'm using workbench 5.2.31 CE.

This problem have popped up, when I'm trying to create a user in mySQL.  

There are two steps to work around this:
  1. edit the sql-mode configuration.  It can be found under Advance tab, Edit the text of sql-mode.  Remove the part "NO_AUTO_CREATE_USER," or cut it.  Then paste it back after you have created your user.
  2. Run the grant all previleges script as instructed below.

The solution is very simple.  You just have to run one of this statement in the Workbench Query window:

GRANT ALL PRIVILEGES ON *.* TO changetousername@localhost;
GRANT ALL PRIVILEGES ON *.* TO 'changetousername'@'%';

This will create an account without password.  So better set the password and change the previleges.

I don't know if this is the best work around or the worst.  But if you are desperate to add a user account.  This is the way that worked for me.

Here is part of the source of the solution:
http://stackoverflow.com/questions/15673640/unhandled-exception-error-creating-account

Tuesday, July 9, 2013

Cookie Setting troubles in PHP

I was trying to determine why the value for a cookie is not reflecting on my page.

Here are some of other developers say you should now in implementing cookies:

  1. It has to be on top before any code is generated by the page
  2. Cookie will not reflect on the same page when you set it.  It will reflect on the next loading of the page.
2nd one is true.  The first one also seems to be true, since no value is placed when I placed the code in the middle and after html codes have been rendered.

Here are the links to those recommendations:


There is a problem with the cookie when the mobile browser is never closed.  I had my browser open in the background.  Even when I set the cookie to expire in 30 mins.  It does not happened, since the browser still reads the value even beyond expire date.

Wednesday, June 19, 2013

Notepad++ free IDE for programming

I just started using this IDE called notepad++.  I have been hearing things about this app, and when I tried it, I had a bit of a hard time getting the hang of it.

The only thing I liked about it. Is the document preview on the right side, where I can see the whole code and drag the view to where I want to be.  There could be more features on this free IDE, I could just be scratching the surface.

As a free tool, I like this IDE already.  Only thing lacking, is the design window, but that could be asking for something else, when it is just an advance version of notepad.

Official website of Notepad++: http://notepad-plus-plus.org/

Friday, May 31, 2013

IIS Redirection include querystring

I mentioned before that I tried redirecting a website source for users not able to see the real website, but a folder or a domain name that points to the real site.  Little, did I know I still need to set the redirection with a placement character of $S$Q.  Example: the URL is: http://www.Domainname.com$S$Q

Placing that placement character made a big difference in passing the query string and value.

Source of the solution: http://stackoverflow.com/questions/7147806/iis-redirect-preserve-querystring

Monday, March 4, 2013

I often relay on the javascript, when it can be done on plain html and server side script

I have been guilty of using excessive javascript on my website developments, while ignoring the fact that some people, especially the iOS device users at time disable their javascript on their browsers.

I have been developing my own version of captcha, and I designed it, by using an external javascript, that in a way no one will be able to see the generated script on the page itself.

Only problem, is the method I created is not compatible with old iPad devices that have not updated their safari browser.  I was able to fix the problem, by directly placing the images on the page and not changing values on my html elements.

Friday, February 8, 2013

MS SQL Roles

This is a good topic to discuss.  MS SQL has made granular roles for specific tasks for each user, this is for security purposes of the Database Server.

You surely want certain database owner just to be able to access their database and nothing else.  Or just allow them to do a backup of their own server, this is where the database or server level roles come in.

I'm familiar of some of the roles but not all of them and at times I also forget, which role overrides the other roles, or which role is not needed.

Microsoft has the list on their site on their server level role: http://msdn.microsoft.com/en-us/library/ms188659(v=sql.105).aspx

This looks an okay reference on which is the role needed and which is not.

There is also the database level role: http://msdn.microsoft.com/en-us/library/ms189121(v=sql.105).aspx

A little off topic, I found a great blog on MS SQL versions, the list is pretty good and you will also know which version you are using.  Here is the link: http://sqlserverbuilds.blogspot.com/

Tuesday, January 29, 2013

Very good site to know the mobile screen size or viewport width

I was confident the project we are doing will will render fine on the mobile browsers of any devices.  Then when we are testing in on my Galaxy S3, I notice the condition my Jr. developer made for the CSS was not correctly triggered and I was not satisfied on the way the page was shown.

I asked, what was the problem, and according to my jr. developer: There was no way of knowing the size since every time a browser zooms, the pixel width in the viewport changes.  Which was true, when we tested it on our desktops and also on Opera mobile browser emulator.

While searching for a solution online, I stumbled upon this page:  http://i-skool.co.uk/mobile-development/web-design-for-mobiles-and-tablets-viewport-sizes/ where a list of most mobile devices and their viewport are listed.  This is very helpful in determining the smallest width you have to look for on a device.

I gave them a solution to place a width on the smallest screen possible at the viewport meta and this fixed the problem.  But being a stubborn subordinate; my jr. developer retained the current settings and just change the CSS.  Adding another pixel condition to render properly on my device.

When I asked, why do it like that, the reason according to my jr. developer was that setting a specific size will not render correctly on iPhone.  Since none of us owns an iPhone, we have to rely on the web on this findings.  According to my jr. developer the mobile website will now render correctly on the 240 pixel viewport screen, that is good enough for me.

Wednesday, December 26, 2012

Free Mobile Browser Detection code generation

While searching for a mobile browser detection code, I came across this site: http://detectmobilebrowsers.com/

This site generates the code for popular browsers to detect using the USER AGENT of the browser used.  It's free to use, and donation to keep the site alive is pretty much appreciated by the author.

This is another useful website, that is simple to use, but takes a while to dissect the code. You pretty much need to brush up on your regular expression to understand the code and what it compares.  But if you are not worried about the code behind the detection, by all means, just paste the code to your site and set the redirection page.


Thursday, October 25, 2012

Minimum & Maximum Year in MS SQL

You guys remembered the millennium bug, in year 2000?  It's where some people fear, the computers will crash, and planes will also crash when in flight, because of the bug on the year, where the computers only allow until year 2000.  Well I didn't believe it, and wasn't affected by that scare.

But, there is such things as limits I supposed.

In MS SQL 2000 & 2005, they have the following limits:

  • minimum date of 1753-01-01 00:00:00.000 
  • maximum date of 9999-12-31 23:59:59.999


This was fixed in MS SQL 2008, where they have the following limits to the dates:

  • Minimum date: 0001-01-01 00:00:00.000
  • Maximum date: 9999-12-31 23:59:59.999


If we ever reached that year 10000, then they will probably panic again like the millennium bug scare.  Or people will be cyborgs with numbers on their names and probably fear they will be affected by the limit.

Friday, September 7, 2012

Solution when submit method throws "object doesn't support this property or method" error.

Thank God, for the internet and Google.  I was able to solve this problem right away.  Somehow if you use the code: document.formname.submit() in javascript you will get an error when you named another object as 'submit'.

I was able to change the other objects name and everything was fine.  On my case the object in conflict is the submit button, that usually by default named as 'submit'.  I only change it and everything worked perfectly.

I saw the solution on the first result google gave me on the list.  The link to the solution is here: http://it.toolbox.com/wiki/index.php/Why_does_form_submit_method_throws_%22object_doesn't_support_this_property_or_method%22_error%3F

Monday, September 3, 2012

Shrinking a transaction log file in MSSQL 2008

This is always a problem with MS SQL, the log file usually grows bigger than the data file itself.  Sure, it is very important in recovery.  But do you really need it, if you have full back-up? You will only need the log file to restore a deferential back-up.


Before in MS SQL 2000 and 2005, I use the following query (before MS SQL 2008):

BACKUP LOG DBname WITH TRUNCATE_ONLY
DBCC SHRINKFILE(DBname_Log, 1)


And that did the trick, but 'TRUNCATE_ONLY' is not recognized by MS SQL 2008 anymore.

You can use 'ALTER DATABASE' and setting the recovery to 'SIMPLE' then do the shrinking, otherwise by just using the 'DBCC SHRINKFILE(DBname_Log, 1)' query, there won't be any effect.

After you do the shrinking, return the recovery back to full, as such: 'SET RECOVERY FULL'.

This is only one of the solutions found on the web, there could be others involving running your own stored procedures.  But I prefer a simple few line approach.  Solution was found here: http://msdn.microsoft.com/en-us/library/ms189493.aspx

Here is the solution I used to shrink my log file on a MS SQL 2008.


ALTER DATABASE dbname
SET RECOVERY SIMPLE;
GO

-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (dbname_log, 1)
GO

ALTER DATABASE dbname
SET RECOVERY FULL;
GO

what happened here is a shrinking of a log file to a specific target size.  This sample code was found in the solution link I provided above from a Microsoft website as Example B.

Others, suggest you backup the log file first before you shrink it.  But a 300MB backup took me a long time, what if it is 5GB of log file?

Anyways, if you prefer to back it up first, you could add this code before you alter the database recovery:


BACKUP LOG dbname TO DISK = N'D:\dbname_log.bak'
GO


You may also, run this to view the database info:

EXEC sp_helpfile

It will show the logical name, fieldid, filename(path), filegroup, size, maxsize, growth, and usage.


Hope you found your solution here. Till next time.