Tuesday, December 1, 2015

Laravel Troubleshoot: Get the composer install working

In my spare time, I started my new hobby project. And I chose Laravel framework for this project. After a few weeks working on this project, I changed my workspace and started with a new clone from my git repository. But when I tried to run :

$ php artisan serve

the code seemed not working. I got this kind of error:

require(../bootstrap/../vendor/autoload.php): failed to open stream: No such file or directory in .../bootstrap/autoload.php on line 17
PHP Fatal error:  require(): Failed opening required '/../vendor/autoload.php' (include_path='.:/usr/share/php:/usr/share/pear') in /../bootstrap/autoload.php on line 17

And I realized that I forgot to run:

$ composer install

a command to resolve all Laravel dependencies. But I got another error on that command :(

Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for laravel/framework v5.0.14 -> satisfiable by laravel/framework[v5.0.14].
    - laravel/framework v5.0.14 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.

So, I did my search on this error and found out that I needed to install another PHP extension my crypt with these commands:

$ sudo apt-get install mcrypt
$ sudo apt-get install php5-mycrypt
$ sudo php5enmod mcrypt

After that I ran the composer install to resolve all the dependencies and php artisan serve seemed to be working again :)

Wednesday, May 6, 2015

ASP.NET Tips: Redirecting all uppercase letter in URL into lowercase URL

For the purpose of SEO, sometimes we need a way to enforce all URL into lowercase. In order to do that in an ASP.NET project, we can add a URL rewrite rules in the web config file inside the system.webserver tag.

Here is the configuration of URL rewrite looks like:

<system.webserver>
    <rewrite>
       <rules>
          <rule name="LowerCaseRuleRedirection" stopProcessing="true">
               <match url="[A-Z]" ignoreCase="false"/>
                <action type="Redirect" url="{ToLower:{URL}}" />
           </rule>
        </rules>
    </rewrite>
</system.webserver>

Please leave a comment if you find my post useful. Happy coding programmers! :)

Tuesday, January 6, 2015

CPNTools Troubleshoot: Beta execution aborted Reference is none.

Long time no see. Installing CPNTools for Windows is easy, but today I have a problem when installing cpntools on a Windows Server 2008. Actually the problem was not within the installation process but I can't run the CPNTools because there was an error that keep saying "CreateWindow failed. Error: 0. Create Child Window failed. Error 1406. # Beta execution aborted: Reference is none. # Error during dump: Access violation. Abortion." and creating a quite long dump file. 

I did searching for the error, and followed some guides like:
  • reinstalled the JDK/JRE.
  • made sure the system environment variable JAVA_HOME points to the installation location (e.g., c:\Program Files\Java\jre8)
  • made sure my PATH includes the bin directory under JAVA_HOME (in the example, it would have to include c:\Program Files\Java\jre8\bin).

But none of them worked. So I keep searching, but still no answer. And suddenly I remembered that there is a feature which is called Data Execution Prevention (DEP). DEP is a security feature that can help prevent damage to your computer from viruses, harmful programs, and other security threats. But sometimes DEP can also prevent your programs from being executed, and this also happened to my CPNTools. So to solve this I needed to add my cpntools.exe

You can solve it by following this step: 
Control Panel -> System and Security -> System -> Advanced System Settings.
It will open the System Properties Dialog and move to the Advanced tab and click the "Settings" button. Another dialog will be opened, and you need to go to "Data Execution Prevention" tab and add the cpntools.exe to the whitelist. And now my CPNTools works nicely. :D

======================================================
Bellow is the complete content of my cpntools.dump:

Beta execution aborted: Reference is none.

Call chain: (nti_ms)

  item <handleframeChanged#> in ~beta/guienv/private/winnt/guienv_ntiprivate
    -- windowContents#canvas#windowitem#interfaceObject# in ~beta/guienv/private/winnt/guienv_ntiprivate
  item <*> in ~beta/guienv/private/winnt/guienv_ntibody
    -- * in ~beta/guienv/guienv
  item <*> in ~beta/guienv/guienv
    -- frame# in ~beta/guienv/guienv
  item <frame#> in ~beta/guienv/guienv
    -- windowContents#canvas#windowitem#interfaceObject# in ~beta/guienv/private/winnt/guienv_ntiprivate
  item <*> in ~beta/guienv/guienv
    -- size# in ~beta/guienv/guienv
  item <size#> in ~beta/guienv/guienv
    -- windowContents#canvas#windowitem#interfaceObject# in ~beta/guienv/private/winnt/guienv_ntiprivate
  item <create#>create# in ~beta/guienv/guienv
    -- open#open#open# in ~beta/postwimp/foundation/guisurface
  item create#<create#> in ~beta/guienv/guienv
    -- open#open#open# in ~beta/postwimp/foundation/guisurface
  item <*> in ~beta/guienv/private/winnt/guienv_ntibody
    -- open#open#open# in ~beta/postwimp/foundation/guisurface
  item open#open#<open#> in ~beta/guienv/guienv
    -- main#window#interfaceObject# in ~beta/postwimp/foundation/guisurface
  item <init#>init# in ~beta/postwimp/foundation/guisurface
    -- GUISurface#Surface# in ~beta/postwimp/foundation/guisurface
  item init#<init#> in ~beta/postwimp/foundation/abstractsurface
    -- GUISurface#Surface# in ~beta/postwimp/foundation/guisurface
  item <*> in ~beta/postwimp/foundation/private/worldbody_nti
    -- * in ~beta/postwimp/foundation/private/worldbody_nti
  item <*> in ~beta/postwimp/foundation/private/worldbody_nti
    -- platformSetWindowEnv# in ~beta/postwimp/foundation/private/worldbody
  item <platformSetWindowEnv#> in ~beta/postwimp/foundation/private/worldbody
    -- PROGRAM-~CPNWorkSpace#Workspace#World#SystemEnv#SysHead# in C:/cpn2000/cpntools/cpntools
  item <setWindowEnv#> in ~beta/postwimp/foundation/world
    -- PROGRAM-~CPNWorkSpace#Workspace#World#SystemEnv#SysHead# in C:/cpn2000/cpntools/cpntools
  item <start#> in ~beta/guienv/private/winnt/guienvntsystemenvbody
    -- PIOPRIVATE-~ in ~beta/guienv/private/winnt/guienvntsystemenvbody
  comp <BASICSCHEDULER-~>SysHead# in ~beta/guienv/private/winnt/guienvntsystemenvbody
    -- PROGRAM-~CPNWorkSpace#Workspace#World#SystemEnv#SysHead# in C:/cpn2000/cpntools/cpntools
  comp BASICSCHEDULER-~<SysHead#> in ~beta/basiclib/basicsystemenv
    -- BETAENV-~ in ~beta/basiclib/betaenv

  item <*> in ~beta/basiclib/betaenv
    -- BETAENV-~ in ~beta/basiclib/betaenv
  basic component in ~beta/basiclib/betaenv


Low level information:

Call chain: (nti_ms)

  item <handleframeChanged#> in ~beta/guienv/private/winnt/guienv_ntiprivate
  { PC  0x49cb97Warning! nm(DumpSectionTable): Couldn't find section number of .text
 < +0x2ecb96>, object 0x2977938, proto 0x9ae2e2 handleframeChanged# [ast: 0x0008,0x0003] < +0x7fe2e1> }
    -- windowContents#canvas#windowitem#interfaceObject# in ~beta/guienv/private/winnt/guienv_ntiprivate
    { Surrounding object 0x2974020, proto 0x9afe0a windowContents# [ast: 0x0007,0x003f] < +0x7ffe09> }
  item <handleframeChanged#> in ~beta/guienv/private/winnt/guienv_ntiprivate
  { PC  0x49cb97 < +0x2ecb96>, object 0x2977938, proto 0x9ae2e2 handleframeChanged# [ast: 0x0008,0x0003] < +0x7fe2e1> }
    -- windowContents#canvas#windowitem#interfaceObject# in ~beta/guienv/private/winnt/guienv_ntiprivate
    { Surrounding object 0x2974020, proto 0x9afe0a windowContents# [ast: 0x0007,0x003f] < +0x7ffe09> }
  item <handleframeChanged#> in ~beta/guienv/private/winnt/guienv_ntiprivate
  { PC  0x49cb97 < +0x2ecb96>, object 0x2977938, proto 0x9ae2e2 handleframeChanged# [ast: 0x0008,0x0003] < +0x7fe2e1> }
    -- windowContents#canvas#windowitem#interfaceObject# in ~beta/guienv/private/winnt/guienv_ntiprivate
    { Surrounding object 0x2974020, proto 0x9afe0a windowContents# [ast: 0x0007,0x003f] < +0x7ffe09> }
  item <handleframeChanged#> in ~beta/guienv/private/winnt/guienv_ntiprivate
  { PC  0x49cb97 < +0x2ecb96>, object 0x2977938, proto 0x9ae2e2 handleframeChanged# [ast: 0x0008,0x0003] < +0x7fe2e1> }
    -- windowContents#canvas#windowitem#interfaceObject# in ~beta/guienv/private/winnt/guienv_ntiprivate
    { Surrounding object 0x2974020, proto 0x9afe0a windowContents# [ast: 0x0007,0x003f] < +0x7ffe09> }
  item <handleframeChanged#> in ~beta/guienv/private/winnt/guienv_ntiprivate
  { PC  0x49cb97 < +0x2ecb96>, object 0x2977938, proto 0x9ae2e2 handleframeChanged# [ast: 0x0008,0x0003] < +0x7fe2e1> }
    -- windowContents#canvas#windowitem#interfaceObject# in ~beta/guienv/private/winnt/guienv_ntiprivate
    { Surrounding object 0x2974020, proto 0x9afe0a windowContents# [ast: 0x0007,0x003f] < +0x7ffe09> }
  item <handleframeChanged#> in ~beta/guienv/private/winnt/guienv_ntiprivate
  { PC  0x49cb97 < +0x2ecb96>, object 0x2977938, proto 0x9ae2e2 handleframeChanged# [ast: 0x0008,0x0003] < +0x7fe2e1> }
    -- windowContents#canvas#windowitem#interfaceObject# in ~beta/guienv/private/winnt/guienv_ntiprivate
    { Surrounding object 0x2974020, proto 0x9afe0a windowContents# [ast: 0x0007,0x003f] < +0x7ffe09> }
  item <handleframeChanged#> in ~beta/guienv/private/winnt/guienv_ntiprivate
  { PC  0x49cb97 < +0x2ecb96>, object 0x2977938, proto 0x9ae2e2 handleframeChanged# [ast: 0x0008,0x0003] < +0x7fe2e1> }
    -- windowContents#canvas#windowitem#interfaceObject# in ~beta/guienv/private/winnt/guienv_ntiprivate
    { Surrounding object 0x2974020, proto 0x9afe0a windowContents# [ast: 0x0007,0x003f] < +0x7ffe09> }
  item <handleframeChanged#> in ~beta/guienv/private/winnt/guienv_ntiprivate
  { PC  0x49cb97 < +0x2ecb96>, object 0x2977938, proto 0x9ae2e2 handleframeChanged# [ast: 0x0008,0x0003] < +0x7fe2e1> }
    -- windowContents#canvas#windowitem#interfaceObject# in ~beta/guienv/private/winnt/guienv_ntiprivate
    { Surrounding object 0x2974020, proto 0x9afe0a windowContents# [ast: 0x0007,0x003f] < +0x7ffe09> }
  item <handleframeChanged#> in ~beta/guienv/private/winnt/guienv_ntiprivate
  { PC  0x49cb97 < +0x2ecb96>, object 0x2977938, proto 0x9ae2e2 handleframeChanged# [ast: 0x0008,0x0003] < +0x7fe2e1> }
    -- windowContents#canvas#windowitem#interfaceObject# in ~beta/guienv/private/winnt/guienv_ntiprivate
    { Surrounding object 0x2974020, proto 0x9afe0a windowContents# [ast: 0x0007,0x003f] < +0x7ffe09> }
  item <handleframeChanged#> in ~beta/guienv/private/winnt/guienv_ntiprivate
  { PC  0x49cb97 < +0x2ecb96>, object 0x2977938, proto 0x9ae2e2 handleframeChanged# [ast: 0x0008,0x0003] < +0x7fe2e1> }
    -- windowContents#canvas#windowitem#interfaceObject# in ~beta/guienv/private/winnt/guienv_ntiprivate
    { Surrounding object 0x2974020, proto 0x9afe0a windowContents# [ast: 0x0007,0x003f] < +0x7ffe09> }
  item <handleframeChanged#> in ~beta/guienv/private/winnt/guienv_ntiprivate
  { PC  0x49cb97 < +0x2ecb96>, object 0x2977938, proto 0x9ae2e2 handleframeChanged# [ast: 0x0008,0x0003] < +0x7fe2e1> }
    -- windowContents#canvas#windowitem#interfaceObject# in ~beta/guienv/private/winnt/guienv_ntiprivate
    { Surrounding object 0x2974020, proto 0x9afe0a windowContents# [ast: 0x0007,0x003f] < +0x7ffe09> }
  item <handleframeChanged#> in ~beta/guienv/private/winnt/guienv_ntiprivate
  { PC  0x49cb97 < +0x2ecb96>, object 0x2977938, proto 0x9ae2e2 handleframeChanged# [ast: 0x0008,0x0003] < +0x7fe2e1> }
    -- windowContents#canvas#windowitem#interfaceObject# in ~beta/guienv/private/winnt/guienv_ntiprivate
    { Surrounding object 0x2974020, proto 0x9afe0a windowContents# [ast: 0x0007,0x003f] < +0x7ffe09> }
  item <*> in ~beta/guienv/private/winnt/guienv_ntibody
  { PC  0x4a0d9b < +0x2f0d9a>, object 0x29777b8, proto 0x9a8262 * [ast: 0x0069,0x0002] < +0x7f8261> }
    -- * in ~beta/guienv/guienv
    { Surrounding object 0x2977748, proto 0x9bad8e * [ast: 0x0001,0x071f] < +0x80ad8d> }
  item <*> in ~beta/guienv/guienv
  { PC  0x4a091f < +0x2f091e>, object 0x2977748, proto 0x9bad8e * [ast: 0x0001,0x071f] < +0x80ad8d> }
    -- frame# in ~beta/guienv/guienv
    { Surrounding object 0x2977718, proto 0x9bad56 frame# [ast: 0x0001,0x0717] < +0x80ad55> }
  item <frame#> in ~beta/guienv/guienv
  { PC  0x4a1425 < +0x2f1424>, object 0x2977718, proto 0x9bad56 frame# [ast: 0x0001,0x0717] < +0x80ad55> }
    -- windowContents#canvas#windowitem#interfaceObject# in ~beta/guienv/private/winnt/guienv_ntiprivate
    { Surrounding object 0x2974020, proto 0x9afe0a windowContents# [ast: 0x0007,0x003f] < +0x7ffe09> }
  item <*> in ~beta/guienv/guienv
  { PC  0x4a1235 < +0x2f1234>, object 0x2977628, proto 0x9baecc * [ast: 0x0001,0x075f] < +0x80aecb> }
    -- size# in ~beta/guienv/guienv
    { Surrounding object 0x29775f0, proto 0x9bae9e size# [ast: 0x0001,0x0757] < +0x80ae9d> }
  item <size#> in ~beta/guienv/guienv
  { PC  0x444681 < +0x294680>, object 0x29775f0, proto 0x9bae9e size# [ast: 0x0001,0x0757] < +0x80ae9d> }
    -- windowContents#canvas#windowitem#interfaceObject# in ~beta/guienv/private/winnt/guienv_ntiprivate
    { Surrounding object 0x2974020, proto 0x9afe0a windowContents# [ast: 0x0007,0x003f] < +0x7ffe09> }
  item <create#>create# in ~beta/guienv/guienv
  { PC  0x443ab3 < +0x293ab2>, object 0x2976558, proto 0x9bbeea create# [ast: 0x0001,0x0a0d] < +0x80bee9> }
    -- open#open#open# in ~beta/postwimp/foundation/guisurface
    { Surrounding object 0x2976518, proto 0x9a40f2 open# [ast: 0x0001,0x08ae] < +0x7f40f1> }
  item create#<create#> in ~beta/guienv/guienv
  { PC  0x49864a < +0x2e8649>, object 0x2976558, proto 0x9b8f46 create# [ast: 0x0001,0x01a5] < +0x808f45> }
    -- open#open#open# in ~beta/postwimp/foundation/guisurface
    { Surrounding object 0x2976518, proto 0x9a40f2 open# [ast: 0x0001,0x08ae] < +0x7f40f1> }
  item <*> in ~beta/guienv/private/winnt/guienv_ntibody
  { PC  0x4986ce < +0x2e86cd>, object 0x2976548, proto 0x9a6e34 * [ast: 0x0021,0x0002] < +0x7f6e33> }
    -- open#open#open# in ~beta/postwimp/foundation/guisurface
    { Surrounding object 0x2976518, proto 0x9a40f2 open# [ast: 0x0001,0x08ae] < +0x7f40f1> }
  item open#open#<open#> in ~beta/guienv/guienv
  { PC  0x498676 < +0x2e8675>, object 0x2976518, proto 0x9b8f14 open# [ast: 0x0001,0x01a1] < +0x808f13> }
    -- main#window#interfaceObject# in ~beta/postwimp/foundation/guisurface
    { Surrounding object 0x29735c8, proto 0x9a4090 main# [ast: 0x0001,0x08a8] < +0x7f408f> }
  item <init#>init# in ~beta/postwimp/foundation/guisurface
  { PC  0x48ed08 < +0x2ded07>, object 0x2976458, proto 0x9a46a8 init# [ast: 0x0001,0x0b59] < +0x7f46a7> }
    -- GUISurface#Surface# in ~beta/postwimp/foundation/guisurface
    { Surrounding object 0x2973258, proto 0x9a3236 GUISurface# [ast: 0x0001,0x0048] < +0x7f3235> }
  item init#<init#> in ~beta/postwimp/foundation/abstractsurface
  { PC  0x739047 < +0x589046>, object 0x2976458, proto 0xad4702 init# [ast: 0x0001,0x0b45] < +0x924701> }
    -- GUISurface#Surface# in ~beta/postwimp/foundation/guisurface
    { Surrounding object 0x2973258, proto 0x9a3236 GUISurface# [ast: 0x0001,0x0048] < +0x7f3235> }
  item <*> in ~beta/postwimp/foundation/private/worldbody_nti
  { PC  0x48d8a3 < +0x2dd8a2>, object 0x2973248, proto 0x9a2cec * [ast: 0x0008,0x0039] < +0x7f2ceb> }
    -- * in ~beta/postwimp/foundation/private/worldbody_nti
    { Surrounding object 0x2972f38, proto 0x9a2cc0 * [ast: 0x0008,0x0002] < +0x7f2cbf> }
  item <*> in ~beta/postwimp/foundation/private/worldbody_nti
  { PC  0x48d792 < +0x2dd791>, object 0x2972f38, proto 0x9a2cc0 * [ast: 0x0008,0x0002] < +0x7f2cbf> }
    -- platformSetWindowEnv# in ~beta/postwimp/foundation/private/worldbody
    { Surrounding object 0x2972f08, proto 0xa11aaa platformSetWindowEnv# [ast: 0x0003,0x0003] < +0x861aa9> }
  item <platformSetWindowEnv#> in ~beta/postwimp/foundation/private/worldbody
  { PC  0x48d627 < +0x2dd626>, object 0x2972f08, proto 0xa11aaa platformSetWindowEnv# [ast: 0x0003,0x0003] < +0x861aa9> }
    -- PROGRAM-~CPNWorkSpace#Workspace#World#SystemEnv#SysHead# in C:/cpn2000/cpntools/cpntools
    { Surrounding object 0x2970c10, proto 0xa0e0a0 PROGRAM-~ [ast: 0x0001,0x0001] < +0x85e09f> }
  item <setWindowEnv#> in ~beta/postwimp/foundation/world
  { PC  0x631d6b < +0x481d6a>, object 0x2972ef8, proto 0xacf3ac setWindowEnv# [ast: 0x0001,0x1da3] < +0x91f3ab> }
    -- PROGRAM-~CPNWorkSpace#Workspace#World#SystemEnv#SysHead# in C:/cpn2000/cpntools/cpntools
    { Surrounding object 0x2970c10, proto 0xa0e0a0 PROGRAM-~ [ast: 0x0001,0x0001] < +0x85e09f> }
  item <start#> in ~beta/guienv/private/winnt/guienvntsystemenvbody
  { PC  0x44c4b7 < +0x29c4b6>, object 0x2972ee8, proto 0x96ddc4 start# [ast: 0x0005,0x01aa] < +0x7bddc3> }
    -- PIOPRIVATE-~ in ~beta/guienv/private/winnt/guienvntsystemenvbody
    { Surrounding object 0x2971f30, proto 0x96db8e PIOPRIVATE-~ [ast: 0x0005,0x0001] < +0x7bdb8d> }
  comp <BASICSCHEDULER-~>SysHead# in ~beta/guienv/private/winnt/guienvntsystemenvbody
  { PC  0x44ba90 < +0x29ba8f>, object 0x2972dc0, proto 0x96dade BASICSCHEDULER-~ [ast: 0x0002,0x0001] < +0x7bdadd> }
    -- PROGRAM-~CPNWorkSpace#Workspace#World#SystemEnv#SysHead# in C:/cpn2000/cpntools/cpntools
    { Surrounding object 0x2970c10, proto 0xa0e0a0 PROGRAM-~ [ast: 0x0001,0x0001] < +0x85e09f> }
  comp BASICSCHEDULER-~<SysHead#> in ~beta/basiclib/basicsystemenv
  { PC  0x740b4b < +0x590b4a>, object 0x2972dc0, proto 0xadb516 SysHead# [ast: 0x0001,0x0310] < +0x92b515> }
    -- BETAENV-~ in ~beta/basiclib/betaenv
    { Surrounding object 0x2970060, proto 0x94e3a0 BETAENV-~ [ast: 0x0001,0x0001] < +0x79e39f> }

  item <*> in ~beta/basiclib/betaenv
  { PC  0x48b24c < +0x2db24b>, object 0x2970b48, proto 0x9509aa * [ast: 0x0001,0x0c3c] < +0x7a09a9> }
    -- BETAENV-~ in ~beta/basiclib/betaenv
    { Surrounding object 0x2970060, proto 0x94e3a0 BETAENV-~ [ast: 0x0001,0x0001] < +0x79e39f> }
  basic component in ~beta/basiclib/betaenv

Legend:

The above dumps show the dynamic call stack of invoked objects.
Each dump starts at the object that was the current object when
the error occurred and continues down towards the basic component.
The descriptions have the following meaning:
1. Items are shown in two lines, like this:
      item <name#>pname1#pname2#pname3 in ifile
        -- sname#spname1#spname2 in sfile
   meaning that the item is an instance of the pattern "name" which
   has prefix "pname1" which has prefix "pname2", etc.
   This item is defined in the file "ifile".
   The part of the prefix chain enclosed in "<" and ">" indicates
   where in the action sequence the error occurred.
   The line beginning with "--" shows the textually surrounding
   pattern using the same notation.
2. The descriptor names used in the above description will normally
   have one or more "meta characters" appended. These mean:
      #  The descriptor belongs to a pattern, e.g. P: (# ... #)
      ~  Singular named descriptor, e.g. X: @(# ... #)
      *  Singular unnamed descriptor, e.g. ... ; (# ... #) ; ...
      -  Descriptor SLOT.
3. Components are shown using a notation similar to that of items:
      comp <name#>pname1#pname2#pname3 in cfile
4. The bottommost component corresponding to the basic environment is
   shown like an ordinary component, but indicated with
      basic component <name#>pname1#pname2#pname3 in cfile
5. In case the error occurred in some external code called from BETA,
   the top of the call stack is shown as
      [ EXTERNAL ACTIVATION PART ]
6. In case the BETA code has called some external code which has in
   turn called back into the BETA code, and the callback is still
   active at the point of the error, the intermediate call stack part
   is shown as
      [ EXTERNAL ACTIVATION PART ]
7. The section labeled "Low level information" can be avoided by
      set BETART=SimpleDump
   before subsequent executions of the program.

Text Editor Tips: Some Useful Brackets Extension

Brackets  is an open source and free-to-use text editor and primarily being used by web developers and designer. I mainly use Brackets for d...