JAR (Java ARchive) is an archive file format typically used to aggregate many Java class files and associated metadata and resources (text, images and so on) into one file to distribute application software or libraries on the Java platform.
JAR files are built on the ZIP file format and have the .jar file extension. Computer users can create or extract JAR files using the jar command that comes with a JDK. They can also use zip tools to do so; however, the order of entries in the zip file headers is important when compressing, as the manifest often needs to be first.
How to create jar file
Into directory, there are at least java class files. It is important create the manifest file. Manifest file contains information about version, author, main class and other data about application created. Follow the TicTacToe example MANIFEST.MF file:
$ cat MANIFEST.MF
Change directory where there are java class files and MANIFEST.MF file. To create jar file, edit this command line:
jar cfm TicTacToe.jar MANIFEST.MF TicTacToe*class
How to run jar file
The jar file created is runnable with follow command line:
java -jar TicTacToe.jar
JAR file manipulations
JAR file is a compress file and it is possible manipulate it in different ways:
- view the contents of a JAR file
jar tf TicTacToe.jar
- extract the contents of a JAR file
jar xf TicTacToe.jar
- extract specific files from a JAR file
jar xf TicTacToe.jar META-INF/MANIFEST.MF
Java files are source code edited by programmers from where to create executable files. An example about code structure is a sample TicTacToe game:
- create java file with main class (ie: TicTacToe class) and assign it the TicTacToe.java name
- if application is simple and uses few and simple classes, insert these class auxiliary into TicTacToe class
- else create one file for each class and declare each class into TicTacToe class
It is not possible run directly TicTacToe.java file. It needs to compile java file:
javac -g TicTacToe.java
and then it is possible run application recall name of main class:
This method is same if there are created one file for each class.
The infrastructure about MySQL Master Slave replication involves:
- MySQL custom configuration
- MySQL custom recall
- Optimization and performance about point 1 and 2
Often there are open source that customizes MySQL recall, and it is not simple to adapt a MySQL Master Slave infrastructure. So that any simple idea is considered.
More open source uses user session, and table about session could be unique problem about a system of Master Slave replication with more slave.
Each slave could permit a read-only permission for each table excluding table session with these MySQL commands:
grant select on database_name.* to 'mysql_user'@'localhost';
grant all on database_name.table_session to 'mysql_user'@'localhost';
Each works well with your favorite text editor. It is important that there is a default editor known. In debian and in other linux distro, default editor is vi.
You could change default editor:
- during distro installation
- custom each user into .bashrc or .profile file with line:
- custom locally in a shell session and/or particular program:
env EDITOR=nano crontab -e
MySQL performance covers a wide area: configuration file (/etc/my.cnf), table schema, query structure, cache system, and so on.
MySQL Master Master replication is a double MySQL Master Slave replication between two MySQL instances: one MySQL instance (Mi1) is Master and the other MySQL instance (Mi2) is Slave and vice versa.
Minimal configuration file (/etc/my.cnf) of each mysql instance is similar:
There is few difference.
server-id = 1
server-id = 2
If the servers are not alternative, and both writes into database, then it is important to be alert to the schema of the tables and it could be important add different auto increment configuration.
auto_increment_increment = 2
auto_increment_offset = 1
auto_increment_increment = 2
auto_increment_offset = 2
The initializing and starting replication is even to MySQL Master Slave replication between two MySQL instances.
It is important to assess the risks of a desynchronization between two MySQL instances. The errors can arise in the retrieval of information from the slave. If both instance writes into database, the reasons can be many:
- MySQL instances create a record considered as identical to the schema of a table (error 1062, duplicate entry)
- MySQL instances can not communicate due to lack of network for a time sufficient to change log file
- SQL syntax could be contain an error (error 1064, sql syntax)
- and the list is endless
It may need to add the slave skip errors configuration into /etc/my.cnf:
slave_skip_errors = 1062,1064
It may need to delete error on the fly with MySQL commands:
stop slave; set global SQL_SLAVE_SKIP_COUNTER=1; start slave;
Thread safety is a computer programming concept applicable in the context of multi-threaded programs. A piece of code is thread-safe if it only manipulates shared data structures in a manner that guarantees safe execution by multiple threads at the same time.
There have been a few options available for a while to get PHP performing well on linux or IIS.
One solution is to configure web service to use PHP in FastCGI mode which allows PHP processes to be recycled rather than killed off after each PHP request and also allows you to run several PHP processes at once, making PHP much much faster with the added bonus that as it is using the CGI interface there is little or no incompatibility issues with PHP extensions.
The utilization of non thread safe binaries does not allow to use FastCGI mode!
Thread Safety enable.
# aptitude install apache2-mpm-worker libapache2-mod-fcgid php5-cgi && a2enmod fcgid && /etc/init.d/apache2 restartThread Safety disable.
# aptitude install apache2-mpm-prefork libapache2-mod-php5 && a2dismod fcgid && /etc/init.d/apache2 restart
If your non thread safe binaries software not works, it was because installing apache2-dev package on my system automatically installs apache2-thread-dev whose apxs2 tells the PHP build system to build with thread-safety on. Therefore, the solution was to directly install apache2-prefork-dev package.
phpSHIELD is a premier php Encoder product. Loaders for phpSHIELD encoded scripts are free to download and install.
Check your servers PHP version. You do this by typing the command:
php -vCheck your system architecture. You do this by typing the command:
The result will either be i386 or x86_64. You will need this information to download the correct PHPshield loaders.
Check your PHP extensions_directory. You do this by typing the command:
php -i|grep extension_dirMy path is
extension_dir => /usr/lib/php5/20090626 => /usr/lib/php5/20090626
You must first delete any loaders that may already be in your extensions directory
Download PHPshield Loaders. You must now download the appropriate PHPshield loader, based on your system architecture. below is a list of the files we have available for download
- Linux, i386, v5.2.x
- Linux, x86_64, v5.2.x
- Linux, i386, v5.3.x
- Linux, x86_64, v5.3.x
mv phpshield.5.2.lin /usr/lib/php5/20090626/
mv ixed.5.3 /usr/lib/php5/20090626/
First you need to find out the location of your main php.ini file. This file is the main configuration file for PHP on your server.
You do this by typing the command below
php -i|grep php.iniYou should get a result that shows something like this
Loaded Configuration File => /etc/php.ini
In the case of our example above, the path we want it /etc/php.ini (others, /etc/php5/apache2/php.ini)
Now run the command below. Remember to use your own php.ini directoy path in the command above
echo "extension=ixed.5.3" >> /etc/php.ini
Restart your web server
It is important create a mysql user into each instance that it could exec only replication actions, in mysql shell:
create user replica@localhost;
grant replication slave on *.* to replica@localhost identified by 'replicapassword';
Minimal configuration file (/etc/my.cnf) of each mysql instance is:
Last step is initializing and starting replication. In mysql shell:
change master to master_host='ip.server.master',
If you want resetting replication:
If you want show which it is binary file and position:
show master status;
show slave status;