Tuesday, February 10, 2015

How to Enable PHP in Apache for Mac OS X Yosemite


System Level Web Root

The default system document root is still found at
http://localhost/

The files are shared in the filing system at
/Library/WebServer/Documents/
For mac, the default php config is disabled, so here I will show you how to start the PHP server on Mac

If you are going to use the document root at /Library/WebServer/Documents it is a good idea to allow any .htaccess files used to override the default settings – this can be accomplished by editing the httpd.conf file at line 217 and setting the AllowOverride to All and then restart Apache.

sudo nano /etc/apache2/httpd.conf
Also whilst here allow URL rewrites so your permalinks look clean not ugly.
Use the search "Control + W"
Uncomment in httpd.conf

LoadModule rewrite_module libexec/apache2/mod_rewrite.so
Type in Terminal
sudo nano /etc/apache2/httpd.conf
Use “control” + “w” to search within nano and search for ‘php’ this will land you on the right line then uncomment the line (remove the #):

LoadModule php5_module libexec/apache2/libphp5.so
Write out and Save using the nano short cut keys at the bottom ‘control o’ and ‘control x’ Reload apache to kick in
sudo apachectl restart

To see and test PHP, create a file name it “phpinfo.php” and file it in your document root with the contents below, then view it in a browser.

Thursday, December 11, 2014

Binary Search - Java


public int binarySearch(int A[], int target) {
  int start = 0;
  int end = A.length - 1;
  while (start <= end) {
   int mid = (end - start) / 2 + start;
   if (target < A[mid]) {
    end = mid - 1;
   } else if (target > A[mid]) {
    start = mid + 1;
   } else {
    return mid;
   }
  }
  return -1;
  
 }
Tips of boundary:

终止条件:i <= j,  i < j
mid的上下取值:  i+(j-i)/2, j-(j-i)/2
分半的时候取:mid, mid-1, or mid+1

1. 如果终止条件i <= j, mid取向为 i + ( j - i ) / 2, 分半的时候取 mid-1 or mid+1;
2. 如果终止条件i < j, mid取向两种都需要用到,分半的时候需要用到 mid;一般取mid的时候,终止条件往往是i < j


Monday, December 8, 2014

Mac Folder System Tips

It's interesting as well as a little bit confusing when you change your operation system from Windows to Mac OS X, so I want to write down some tips to classify functions of each folder.

1. The Beginning: -> /

In OS X, the top level of the hard drive is called /. It's just a single slash. Your Mac displays "Macintosh HD".

Inside / are several folders. /Library and /System are important to the inner workings of OS X. Do not change them unless you know what you are doing.

2. Self-Explantory: -> /Applications

New installed software will be dragging in this folder.

3. Manager all Users Files: -> /Users

An OS X machine may have several individuals user accounts on it. So inside the Users folders will save accounts information.

4. Manager your Files: -> /Users/<yourname>

Every user has their own home folder. This is the folder where you can put your documents, pictures, music, etc. There are several folders already in your home folder by default: 

  •  /Users/<yourname>/Desktop 
Anything in this folder will be shown on your desktop 

  •  /Users/<yourname>/Documents
This is a good place to keep documents you create

  • /Users/<yourname>/Library
This contains information specific to your account that OS X needs. Only modify or put things in this folder if you know what you're doing.

  • /Users/<yourname>/Movies
A good place to store movies you create or download.

  • /Users/<yourname>/Music
A good place to store music. If you use iTunes and use the default "Keep iTunes Music Folder Organized" option iTunes will create the /Users/yourname/Music/iTunes folder.

  • /Users/<yourname>/Pictures
A folder for storing your pictures. If you use iPhoto it will keep its photo library in a folder inside /Users/yourname/Pictures.


  • /Users/<yourname>/Public
Anything inside this folder will be visible to the other user accounts on your computer, and also to other people on your network

Thursday, December 4, 2014

Hashtable vs HashMap vs HashSet

Hashtable
1. Retain values of key-value pair
2. Didn’t allow null for both key and value, and will get NullPointerException if add null value
3. It is synchronized, so it comes with its cost. Only one thread can access in one time
Hashtable table = new Hashtable();
table.put(1, "Beijing");
table.put(2, "Boston");
table.put(3, null); /* NullPointerException at runtime*/
 
System.out.println(table.get(1));
System.out.println(table.get(2));
System.out.println(table.get(3)); 

HashMap
1. Retain values of key-value pair
2. It allows null for both key and value
3. It is unsynchronized, so come up with better performance
HashMap map = new HashMap();
map.put(1, "Keys");
map.put(2, null);
  
System.out.println(map.get(1));
System.out.println(map.get(2));
HashSet
1. Retain object, doesn't store key-value pairs
2. Does not allow duplicate values, which means HashSet can be used where you want to maintain a unique objects
HashSet set = new HashSet();
set.add ("CA");
set.add ("MA");
set.add ("PA");
  
if (set.contains("MA")) {/* if MA, it will not add but shows following message*/
     System.out.println("Already found");
} else {
    set.add("NY");
}

Tuesday, November 25, 2014

hashCode() and equals() in JAVA

In java, a combination of the hashCode() and equals() methods are used when storing and when looking up objects in a hashtable.
Basically the default implementation of hashCode() provided by Object is derived by mapping the memory address to an integer value.
If you look into the source code of Object class you will find the following code for the equals() method.
public boolean equals(Object obj) {
 return (this == obj);
}

Here is an example of how hashCode() and equals() works: The Emp class, at first, we only override the hashCode() method:
public class Emp {
 private int age;
 public Emp(int age) {
  super();
  this.age = age;
 }
 // variable age is the significant factor
 public int hashCode() {
  return age;
 }
 
}
In the test, we'll see that even though we override the hashCode() method, the result of emp1.equals(emp2) is "false":
public static void main(String[] agrs) {
  Emp emp1 = new Emp(23);
  Emp emp2 = new Emp(23);
  
  System.out.println("emp1.hashCode()--->>>"+emp1.hashCode());  //emp1.hashCode()--->>>23
  System.out.println("emp2.hashCode()--->>>"+emp2.hashCode());  //emp2.hashCode()--->>>23
  System.out.println(emp1.equals(emp2));  // false
}
Then let's override the equals() method as well:
public class Emp {
 private int age;
 public Emp(int age) {
  super();
  this.age = age;
 }
 // variable age is the significant factor
 public int hashCode() {
  return age;
 }
 
 public boolean equals(Object obj) {
  boolean flag = false;
  Emp emp = (Emp) obj;
  if (emp.age == age) {
   flag = true;
  }
  return flag;
 } 
}
The test:
public static void main(String[] agrs) {
  Emp emp1 = new Emp(23);
  Emp emp2 = new Emp(23);
  
  System.out.println("emp1.hashCode()--->>>"+emp1.hashCode()); //emp1.hashCode()--->>>23
  System.out.println("emp2.hashCode()--->>>"+emp2.hashCode()); //emp2.hashCode()--->>>23
  System.out.println(emp1.equals(emp2)); //true
}
So, here are Three rules that are good to know about implementing the hashCode() method in classes:
If object1 and object2 are equal according to their equals() method, they must also have the same hash code.
If object1 and object2 have the same hash code, they do NOT have to be equal too.

And also, if you are going to override the one of the methods( ie equals() and hashCode() ) , you have to override the both otherwise it is a violation of contract made for equals() and hashCode().

Monday, October 27, 2014

Mac Commands


alias     Create an alias
alloc     List used and free memory
awk       Find and Replace text within file(s)

basename  Convert a full pathname to just a folder path
bash      Bourne-Again SHell (Linux)
bless     Set volume bootability and startup disk options
break     Exit from a loop

cal       Display a calendar
case      Conditionally perform a command
cat       Display the contents of a file
cd        Change Directory
chflags   Change a file or folder's flags
chgrp     Change group ownership
chmod     Change access permissions
chown     Change file owner and group
chroot    Run a command with a different root directory
cksum     Print CRC checksum and byte counts
clear     Clear terminal screen
cmp       Compare two files
comm      Compare two sorted files line by line
complete  Edit a command completion [word/pattern/list]
continue  Resume the next iteration of a loop
cp        Copy one or more files to another location
cron      Daemon to execute scheduled commands
crontab   Schedule a command to run at a later date/time
cut       Divide a file into several parts

date      Display or change the date & time
dc        Desk Calculator
dd        Data Dump - Convert and copy a file
defaults  The Mac OS X user defaults system
df        Display free disk space
diff      Display the differences between two files
diff3     Show differences among three files
dig       DNS lookup
dirname   Convert a full pathname to just a path
dirs      Display list of remembered directories
diskutil  Disk utilities - Format, Verify, Repair
ditto     Copy files and folders
dot_clean Remove dot-underscore files
dscacheutil Query or flush the Directory Service/DNS cache
dscl      Directory Service command line utility
du        Estimate file space usage

echo      Display message on screen
ed        A line-oriented text editor (edlin)
enable    Stop or start printers and classes
env       Set environment and run a utility
eval      Evaluate several commands/arguments
exec      Execute a command
exit      Exit the shell
expect    Programmed dialogue with interactive programs
          Also see AppleScript
expand    Convert tabs to spaces
expr      Evaluate expressions

false     Do nothing, unsuccessfully
fdisk     Partition table manipulator for Darwin UFS/HFS/DOS
find      Search for files that meet a desired criteria
fmt       Reformat paragraph text
fold      Wrap text to fit a specified width
for       Expand words, and execute commands
foreach   Loop, expand words, and execute commands
fsck      Filesystem consistency check and repair
fsaclctl  Filesystem enable/disable ACL support
fs_usage  Filesystem usage (process/pathname)
ftp       Internet file transfer program

GetFileInfo Get attributes of HFS+ files
getopt    Parse positional parameters
goto      Jump to label and continue execution
grep      Search file(s) for lines that match a given pattern
groups    Print group names a user is in
gzip      Compress or decompress files

head      Display the first lines of a file
hdiutil   Manipulate iso disk images
history   Command History
hostname  Print or set system name

id        Print user and group names/id's
if        Conditionally perform a command
info      Help info
install   Copy files and set attributes

jobs      List active jobs
join      Join lines on a common field

kextfind  List kernel extensions
kill      Stop a process from running

l         List files in long format (ls -l)
ll        List files in long format, showing invisible files (ls -la)
less      Display output one screen at a time
ln        Make links between files (hard links, symbolic links)
locate    Find files
logname   Print current login name
login     log into the computer
logout    Exit a login shell (bye)
lpr       Print files
lprm      Remove jobs from the print queue
lpstat    Printer status information
ls        List information about file(s)
lsbom     List a bill of materials file
lsof      List open files

man       Help manual
mkdir     Create new folder(s)
mkfifo    Make FIFOs (named pipes)
more      Display output one screen at a time
mount     Mount a file system
mv        Move or rename files or directories

net       Manage network resources
networksetup Network and System Preferences
nice      Set the priority of a command
nohup     Run a command immune to hangups

onintr    Control the action of a shell interrupt
open      Open a file/folder/URL/Application
osascript Execute AppleScript

passwd    Modify a user password
paste     Merge lines of files
pbcopy    Copy data to the clipboard
pbpaste   Paste data from the Clipboard
pico      Simple text editor
ping      Test a network connection
pkgutil   List installed packages
pmset     Power Management settings
popd      Restore the previous value of the current directory
pr        Convert text files for printing
printenv  Print environment variables
printf    Format and print data
ps        Process status
pushd     Save and then change the current directory
pwd       Print Working Directory

quota     Display disk usage and limits

rcp       Copy files between machines
repeat    Execute a command multiple times
rm        Remove files
rmdir     Remove folder(s)
rpm       Remote Package Manager
rsync     Remote file copy - Sync file tree (also RsyncX)

say       Convert text to audible speech
sched     Schedule a command to run at a later time.
screen    Multiplex terminal, run remote shells via ssh
screencapture Capture screen image to file or disk
sdiff     Merge two files interactively
security  Administer Keychains, keys, certificates and the Security framework
sed       Stream Editor
set       Set a shell variable = value
setenv    Set an environment variable = value
setfile   Set attributes of HFS+ files
shift     Shift positional parameters
shutdown  Shutdown or restart OS X
sleep     Delay for a specified time
softwareupdate System software update tool
sort      Sort text files
split     Split a file into fixed-size pieces
stop      Stop a job or process
su        Substitute user identity
sudo      Execute a command as another user
sum       Print a checksum for a file
switch    Conditionally perform a command
systemsetup Computer and display system settings

tail      Output the last part of files
tar       Tape ARchiver
tee       Redirect output to multiple files
test      Condition evaluation
textutil  Manipulate text files in various formats
time      Measure Program Resource Use
touch     Change file timestamps
traceroute Trace Route to Host
tr        Translate, squeeze, and/or delete characters
true      Do nothing, successfully
tty       Print filename of terminal on stdin
type      Describe a command

umask     Users file creation mask
umount    a device
unalias   Remove an alias
uname     Print system information
unexpand  Convert spaces to tabs
uniq      Uniquify files
units     Convert units from one scale to another
unset     Remove variable or function names
unsetenv  Remove environment variable
users     Print login names of users currently logged in
uuencode  Encode a binary file
uudecode  Decode a file created by uuencode

vi        Text Editor

wc        Print byte, word, and line counts
where     Report all known instances of a command
which     Locate a program file in the user's path
while     Execute commands
who       Print all usernames currently logged on
whoami    Print the current user id and name (`id -un')

xargs     Execute utility - passing arguments
yes       Print a string until interrupted

Friday, October 3, 2014

Git error: src refspec master does not match any

I encounter an error when I push my code into my github, and here is the reason why this happen: I've created a new repository and added some files to the index, but I haven't created my first commit yet. So I did this: Add files:
$ git add index.php 
Add comments:
$ git commit -m "Initial commit" 
And finally, I can do the remote push:
$ git remote add origin git@github.com:QuanCat/instant_search.git
$ git push -u origin master