Today I saw James Padolsey ‘s blog about the result of two consecutive bitwise non-operations equivalent to the floor.

Then skiyo blog did the next test, here is my code:

1
2
3
4
5
6
7
8
9
10
11
$time  =  microtime ( 1 ) ; 
for ( $i = 0 ; $i <= 100000 ; $i ++ )  { 
    ~~ 4.9 ; 
} 
echo  microtime ( 1 )  -  $time ; 
echo  "<br>" ; 
$time  =  microtime ( 1 ) ; 
for ( $i = 0 ; $i <= 100000 ; $i ++)  { 
    Floor ( 4.9 ) ; 
} 
echo  microtime, and ( . 1 )  -  $ Time ;

The result of this operation on my machine is

0.013797998428345
0.041538000106812

We can see that ~~ is almost three times faster than the floor.

But we need to know why ~~ is equivalent to the floor.

Here we need to involve a hex conversion and take a non-process.

Now we need a possible condition. Our variable is a signed integer 5.

We now give it a bitwise non-operation.

The binary of 5 is 0000 0101

Bitwise none after 1111 1010

At this time, the first sign bit 1 indicates a negative number. Negative numbers need to be inverted and +1.

The result of the other bit inversion is 000 0101 +1, and the result is 000 0110

Plus the previous symbol, it is -6.

At this time we gradually find a famous formula ~num = -(num + 1)

Go back to the above topic. If the above is not an integer and is a decimal 5.9?

Then the Zend engine will discard the binary part of the decimal part when calculating the fetch.

So ~5.9 will get -6.

Then do a bitwise non-. According to the above formula, we get 5.. This effect is the same as the floor().

What. You worry about using ~~ and leaving the floor will be a problem?

This answer is ok

For example, you can test with the following code

1
2
3
Echo ~~ 99999999999999.99 ; 
echo  "<br />" ; 
echo  floor ( 99999999999999.99 ) ;

The result of running on my computer is

276447231
99999999999999

We can see that it is overflowing with ~~.

So in a relatively small number of operations.. still use ~~ instead of the floor.

Be aware in JavaScript and PHP. The default variables can all be signed.

  • Author: Wanda Hundley
  • Category: PHP

Wp-goo.gl is a WordPress plugin that converts links in your articles or comments into short URLs for goo.gl. Using the [goo.gl=”name”] link[/goo.gl] or the [goo.gl] Link [/goo.gl] in the article will automatically resolve to the goo.gl short URL; you don’t need to enter it in the comments. These specific tags, wp-goo.gl, will automatically convert them to short URLs. Due to the need to make a request, the cURL extension must be enabled on your server! Note: This plugin will permanently change the link you entered!

Wp-goo.gl allows you to publish links in your posts or comments using goo.gl short URL service. With [goo.gl=”name”]link[/goo.gl] or [goo.gl]link[/goo .g] you will not have to write such special codes. wp-goo.gl will change the links automatically. The cURL functions must be available on your server. WARNING: This plug-in will permanently change your Input link!

wp shortener

Instructions:

1. Pass the wp-goo.gl directory to your wp-content\plugins.
2. Open wp-goo.gl in the background.
3. Adding the [goo.gl=”name”] link[/goo.gl] or the [goo.gl] link[/goo.gl] will automatically resolve to the short URL of goo.gl when posting the article.
4. You can set the article or comment in the settings -wp-goo.gl!

== Installation ==

1. Upload `googl-url-shortener-for-wordpress` to the `/wp-content/plugins/` directory
2. Activate the plugin through the ‘Plugins’ menu in WordPress
3. Use [goo.gl=”name” ]link[/goo.gl] or [goo.gl]link[/goo.gl] in your posts.

Please test if you have any questions, please contact us with subject HTML classes for beginners and our team at Skiyo will help you.

Download:

http://goo.gl/zU7K

Foreword: Hi, I am not a tank. I am 54chen. I am entrusted by the motivation of the Brothers Society. I will pass a technical article for everyone to eat and watch while eating and to strengthen digestion.

With the development of the Internet, more and more technologies are beginning to focus on user experience. People-oriented is a long-term solution. So when uploading, everyone no longer meets a single “browse” button and has launched an upload progress bar — the function. As an interpreted language, PHP, how to do the detection of uploaded files, how to implement the upload progress bar with its behind-the-scenes principle, 54chen will be developed step by step in this article.

I. Implementation articles

In general, using PHP to implement the upload progress bar is as follows:

1. APC extension (the author is the founder of PHP, PHP has joined the APC extension after 5.2)

2.PECL extension module upload progress

Whether it is APC or upload progress, you need to compile the source code, because the original PHP function is impossible to read the contents of the temporary folder. Let’s look at how to use and the key code:

APC implementation method:
1. Install APC
2. Configure php.ini, set the parameter apc.rfc1867=1
3. Keycode:
1
2
3
4
5
6
7
8
9
10
IF  ( $ _SERVER [ 'REQUEST_METHOD' ]  ==  'the POST' )  {   // upload request 
	$ Status  = apc_fetch ( 'upload_'  .  $ _POST [ 'APC_UPLOAD_PROGRESS' ] ) ; 
	$ Status [ 'DONE' ]  =  . 1 ; 
	echo  json_encode ( $status ) ;   // Output to the ajax call in the client page, please find the 
	exit for the relevant documentation ; 
}  elseif  ( isset ( $_GET [ 'progress_key' ] ))  {    // read the upload progress 
	$ Status  = apc_fetch ( 'upload_' . $ _GET [ 'progress_key' ] ) ; 
	echo  json_encode ( $ Status ) ; 
	Exit ; 
}
Uploadprogress implementation method:
1. Install uploadprogress using PECL
2.php.ini set uploadprogress.file.filename_template = “/tmp/upd_%s.txt”
3. Key code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
twenty one
twenty two
twenty three
twenty four
25
26
If ( $_SERVER [ 'REQUEST_METHOD' ] == 'POST' )  { 
	if  ( is_uploaded_file ( $_FILES [ 'upfile' ] [ 'tmp_name' ] ) )  { 
		$upload_dir  =  'your_path/' ; 
		$ext         =  strrchr ( $_FILES [ 'video' ] [ 'name' ] ,  '.' ) ; 
		$sessid      =  $_POST [ 'UPLOAD_IDENTIFIER' ]  ;
		$tmpfile     =  $upload_dir  .  $sessid ; 
		$sessfile    =  $upload_dir  .  $sessid  . $ext ; 
		if  ( move_uploaded_file ( $_FILES [ 'upfile' ] [ 'tmp_name' ] , $tmpfile ) )  { 
			//Uploaded successfully 
		} 
	} 
}  Elseif  ( ! empty ( $_GET [ 'sessid' ] ) )  { 
	header ( "Expires: Mon, 26 Jul 1997 05:00:00 GMT") ; 
	Header ( "Last-Modified:"  .  Gmdate ( "D, D the MYH: I: S" )  .  "GMT" ) ; 
	header ( "the Cache-Control: NO-Store, NO-Cache, MUST-revalidate" ) ; 
	header ( "the Cache-Control: POST-Check = 0, pre-Check = 0" ,  to false ) ; 
	header ( "Pragma: NO-Cache" ) ; 
	header ( "the Content-the Type: text / HTML; charset = UTF 8" ) ; 
	$unique_id  =  $_GET [ 'sessid' ] ;
	$uploadvalues  = uploadprogress_get_info ( $unique_id ) ; 
	if  ( is_array ( $uploadvalues ) )  { 
		echo  json_encode ( $uploadvalues ) ; 
	}  else  { 
			//read progress failed, additionally processing logic 
	} 
}

II. Principles

Notice the red function in the previous article.

Download to uploadprogress1.0.1 for source code analysis and comment in the code.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
twenty one
twenty two
twenty three
twenty four
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
static  void uploadprogress_file_php_get_info ( char  * ID , the zval * the return_value )  { 
	char S [ 1024 ] ; 
	char  * filename ; 
	char  * Template ; 
	the FILE * F. ; 
	TSRMLS_FETCH ( ) ; 
	Template = INI_STR ( "uploadprogress.file.filename_template" ) ;  // Read the set template 
	if  ( strcmp ( here)Template ,  "" )  ==  0 )  { 
		return ; 
	}  else  { 
		filename = uploadprogress_mk_filename ( id , template ) ; // 
		If  yes, create if ( ! filename )  return ; 
		F = VCWD_FOPEN ( filename ,  "rb" ) ; 
		if  ( F )  { 
			array_init ( return_value ) ; 
			while  (Fgets ( s ,  1000 , F )  )  { // read the first address of the result data of a string *s from the stream; 1000-1: read the length of the data block at a time, the default value is 1k, ie 1024; F The file pointer 
				char  * k ,  * v ,  * e ; 
				int index =  0 ; 
				e = strchr ( s , '=' ) ;  // find the first occurrence of the character = in the string s 
				if  ( ! e )  continue ; 
				* e =  0 ;  /* break the line into 2 parts */ 
				v= e + 1 ; 
				k = s ; 
				/* trim spaces in front of the name/value */ 
				while  ( * k &&  * k <=  32 ) k ++; 
				while  ( * v &&  * v <=  32 ) v + +; 
				/* trim spaces everywhere in the name */ 
				for  ( e = k ;  * e ; e ++ )  if  ( * e <= 32 )  {  * e =  0 ;  break ;  }  				/* trim spaces only at the end of the value */  				/* http://pecl.php.net/bugs/bug.php?id=14525 */  				//for (e=v; *e; e++) if (*e <= 32) { *e = 0; break; } if (v != NULL) { // when the file has content for (index = strlen(v) ; index > 0; index--) { 
						if  ( v [ index ]  >  32 )  break ;  //cumulative 
						v [ index ]  =  0 ; 
					} 
				} 
				add_assoc_string ( return_value , k, v ,  1  ) ; 
			}
 
			Fclose ( F ) ; 
		} 
	}
 
	If  ( filename ) efree ( filename ) ; 
	return ; 
}

Also found in the source code:

1
2
3
4
5
6
PHP_MINIT_FUNCTION ( uploadprogress ) 
{ 
	REGISTER_INI_ENTRIES ( ) ; 
	php_rfc1867_callback = uploadprogress_php_rfc1867_file ; 
	return SUCCESS ; 
}

Modified php_rfc1867_callback in MINIT to extract the key code of uploadprogress_php_rfc1867_file:

1
2
3
4
5
6
7
8
9
10
11
12
an upload_id = emalloc ( strlen ( * E_DATA -> value )  +  . 1 ) ; 
strcpy ( an upload_id ,  * E_DATA -> value ) ; 
Progress -> an upload_id = an upload_id ; 
Progress -> time_last   = Time ( NULL ) ; 
Progress -> speed_average   =  0 ; 
progress -> speed_last      = 0 ; 
progress -> bytes_uploaded = read_bytes ; 
progress -> files_uploaded =  0 ; 
progress -> est_sec         =  0 ; 
progress -> identifier = uploadprogress_mk_filename ( upload_id , template ) ; // put the temporary file 
progress -> identifier_tmp in the specified template location = emalloc ( strlen ( progress -> identifier )  +  4) ; 
Sprintf ( Progress -> identifier_tmp ,  "% s.wr" , Progress -> identifier ) ;

What is php_rfc1867_callback, you can see the analysis of another brother of the brother school  http://www.laruence.com/2008/11/07/586.html

Summary

When detecting the size of a temporary file, APC and upload progress are the same methods, first record, then take the size percentage.

  • Author: Wanda Hundley
  • Category: PHP

As a mid-level PHPer rookie. Bored, love to twirling in various PHP forums. I saw a lot of coding HTML for beginners had asked a lot of the same questions. And I also encountered PHP when I learned. To let PHP begin Scholars take fewer detours. So suddenly nervous. Decided to write this article. For PHP beginners only if there is an error. Also, hope to point out. Not very grateful.

PHP is actually very easy to learn a language. If you want to be proficient in PHP for three years. Less than a year is enough. But why are we still a rookie after three years?

I don’t know where to start. Learning PHP, we have to learn the database. Learning architecture. Learning object-oriented. Learning front-end. Learning Linux. Learning protocols and even artists directly lead to PHPer is now the most tired programmer.

The most tired is nothing. Often PHP is considered to be the inferior program. With the lowest salary, it is necessary to master almost all knowledge of the web. This is unfair.

The good news is that we have gradually seen a change in China. More and more companies in China have turned to PHP from Java or C#. So PHPer must have their dreams. You will all be very B. Please firmly believe.

Going far. Going back to the point I want to talk about. The following questions contain the problems I have encountered. Maybe I don’t necessarily say that, or you don’t necessarily agree with me. I am very willing to accept your opinion. In short, we Just want to make PHPer stand up 🙂

1. The problem of coding

This is not the only PHP. as long as it is on the program. It will be encountered. At least I and I have encountered people around. And on the web. Often coding problems are very difficult to solve. Very difficult to debug. Sometimes the program is out Inexplicable problems; it is hard to think of coding problems and so on.

These problems are always bothering us. So I recommend PHP beginners. Must be coded uniformly. It is strongly recommended to be unified to UTF-8. Chinese is not recommended to use GBK or GB2312, etc. Because it is not known when transmitting in AJAX. Coded.

If you want to unify the code, you should pay attention to wherever the code may appear.

1) Encoding of the header header

Personally, suggest that you should add the following sentence in your PHP (except for special headers)

1
Header ( "Content-type: text/html;charset=utf-8" ) ;

This can avoid some problems. For example, we can see that some sites submit an alert and then jump. But they do not set the encoding. If his encoding is inconsistent with the browser’s default encoding, it will be garbled.
You are pure coding HTML for beginners. Be sure to put the meta code tag in front of the title tag. If you don’t understand it, remember to put the coded information in the first line of the head tag. The final result is this.

1
2
3
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
...

2) Encoding of the file

We save the file, select the encoding must be unified. If you follow the above, we should choose UTF-8.
General editors have encoded the information in this document. If you are found not to be UTF-8, please change immediately.
For example, We opened a template file in Dreamweaver. We found GB2312 (Simplified Chinese) in the lower right corner. Do not make any changes at this time. Immediately CTRL+J and then select the encoding to change to UTF-8 mode and save.

The encoding of the file is not necessarily a PHP file. You must also ensure that your JavaScript and CSS files are UTF-8 encoded.

Another important point is that BOM. This Dongdong PHP is not very popular. So we have to choose UTF-8 without BOM format when saving. If you use the editor is UE. Then please focus Pay attention to this.

3) Database coding

I don’t want to say more about this. There are too many articles on the Internet. If you are MySQL, remember to do SET NAMES = ‘utf8’ every time you connect. And there is no horizontal line in the middle of utf8.

2. The problem of MVC

The programmer should theoretically be a perfectionist. They don’t just think about running the program. It’s also elegant.

But then again. After the program is finished according to MVC, is our code elegant? The answer is of course no.

Learning architecture is a process of understanding. When you appreciate the benefits of this architecture, you will understand its true meaning. Don’t blindly.

Sometimes we will do this. Use this month to learn MVC. Ok. I think you should do this. You learn to set your own goals.

But after a month we may not understand MVC. But at least we will base his basics according to his model. In other words, maybe we have not learned about the Sunflower Collection. But we should use the evil spirits.

3. Object-oriented issues

About PHP object-oriented problems. It has always been entangled. Some people do not think that PHP object-oriented is a good thing. Some people don’t even think that object-oriented is a good thing, such as Linus.

We don’t have to untangle this thing in the end. At least we should know from the birth of object-oriented to the present after so many years of evolution. Apply to various projects and even language. We have reason to believe that existence has its truth.

Practice is the only criterion for testing truth — the more the object-oriented development, the better the situation. It seems that our study becomes a must.

Similar to the knowledge of some architectures. Object-oriented is not so eager to learn. Object-oriented is a kind of idea. But when it comes to a certain language, its meaning will also undergo some subtle changes.

PHP’s object-oriented is very flexible. Coupled with its unique magic method. It will create a special situation of object-oriented. Perhaps this is not the same as your usual object-oriented Java.

Not necessarily putting the methods, you need into a class is object-oriented. When you realize that object-oriented coding for you brings convenience and convenience, you have a deeper understanding of object-oriented.

The so-called desire is not up. Don’t worry. You want to understand the theory of relativity within a few days. It is pure nonsense.

4. Algorithm problem

It seems that PHP is always far from the algorithm. Most of PHP’s algorithms are based on arrays. And we know that the properties of PHP’s arrays are destined to be very large when the array becomes very large.

PHP is a website. You don’t have to give her a high hat. In the web, especially in the actual situation of the front end of the PHP service, there will be very few algorithms involved.

PHP’s algorithmic interview questions are nothing more than operations on arrays or strings. Moving the brain with the manual. That’s fine.

Then you may ask. I want to learn PHP. Then I still learn algorithms?

I think you need to learn. And you need to learn the data structure. This homework is like an internal work. It will affect your coding subtly.

At this time, we will cooperate with the swordsmanship in front of us. Congratulations, you have learned the Sunflower Collection!

5. The problem of the framework

The framework of PHP is the most common in all languages. It doesn’t use frameworks. What framework is chosen is a controversial topic.

My suggestion is to recommend learning at least one framework. This can deepen your understanding of PHP. Our learning framework is not to learn how to use this framework. How to do projects.

We’re going to look at its source code. See how he implemented it. At this point, you can choose to develop a small framework yourself. It’s not good to ask for it. Don’t ask others how many projects to use.

We are just learning.

6.JavaScript issues

I can say that I have seen so many languages. The most amazing thing is JavaScript. Usually, Java has always claimed that everything is an object. I think JavaScript is everything.

Is JavaScript eager to learn? It’s hard to learn! It is usually used on the web. The general JavaScript operation is the DOM operation.

Is JavaScript difficult to learn? Difficult to learn! If we are bound by object-oriented thinking in other languages, it is difficult to understand the object-oriented JavaScript. And there are many concepts in JavaScript.

Prototype arguments call apply callee caller Concepts such as closures make us overwhelmed. Coupled with the strange JavaScript code style and its difficult to debug features directly lead us to avoid these rookies.

I once forwarded a code that implements document.ready. I have to admire the difference.

Personally feel that looking at some JavaScript framework source code is the best way to learn. I used to write my PHP framework because of the use of the unified entry + their own defined URL rules. So when you use the normal property for the get from Can not get the parameters.

At this time I thought of the formSerialize method in jQuery.form. I picked it up and made some changes. I can use it.

7.CSS issues

I think it’s different from separating CSS from JavaScript. I think CSS learning is more characteristic.

I want to say that CSS is the simplest thing. We just know some basic CSS properties. Writing a page is not a problem.

The main feature of CSS is that it must be done. You can’t write a page instead of the actual CSS book.

Another feature of CSS is that it is much more. Maybe this property can’t achieve your effect. Then you change one. This is the most stupid and most effective way 🙂

Of course, this is only the requirement of the primary CSS. After this, we have to be compatible with the browser. This is not difficult to say that several browsers open property and property at the same time.

You can also memorize some hacks, such as IE6 _ IE knows *, etc. If you think that writing CSS is not enough standard, then put the hack in a different CSS file. For example, ie6 is called ie6.css

Then use the following code on the page.

1
2
3
<!--[if lt IE 6]>
	<link href="css/ie6.css" rel="stylesheet" type="text/css" />
<![endif]-->

The more advanced is, of course, the user experience and design. I don’t know if I don’t understand it. @_@ Hope to add people.

8.linux problem

I strongly recommend that you install a Linux system on everyone’s computer. If you feel too tossing, you can choose to install Ubuntu in Wubi mode. This is the easiest and most effective way for lazy people.

When you are bored, you can download a PHP source code and try it yourself. Avoid apt-get. Because often the server version is not real or centos. There is no such command.

And apt-get is often not the latest version, and can not be customized.

Linux always has such severe problems as living. For example, if the environment is slightly different, the compiler will not pass. The service will not come.

Don’t worry at this time. Look at the error message to see the log. Google try to solve it yourself.

After compiling, don’t feel like trying out different configurations. Also, modify the source code and try again.

For example, we downloaded the source code for Nginx. Then modify some headers and other places. You can compile your HTTP Web Server.

Of course, if you call BWS or GWS, you can do 🙂

There is still a problem Linux needs to back command? This is understandable. Remember some common commands can improve the speed. I need to reflect on this point. Often some commonly used commands also need to look at the parameters.

The other one is Shell’s problem. Shell is not difficult. But the grammar is ugly in my opinion @_@. Look at the wiki to learn more than half. The main thing is to contact. We can see a phenomenon. Some companies are This is also a must for recruiting advanced PHPer.

Online Linux information is very much. Most of the problems you encounter will be encountered by others. So good at using Google. And familiar with English.

9. Language issues

The problem of this is too much war of words. In the end, no one has won. We don’t have to participate in these boring things. These are the young manures to do.

You have a cow B, do you have Linus cattle B? He sprayed C++ for so many years. How about C++?

So we don’t have to entangle ourselves. It’s OK to do what you do.

Since you have chosen PHP, don’t hesitate.

Maybe PHP is not enough when we are working on a project. Then we can use Java or C to make a middleware. This is not a good idea.

One language to play her biggest and most useful is the truth.

10. Attitude issues

Attitude must be modest and cautious. This is a virtue that a programmer should have. Don’t self-inflate.

The more you learn, the more you will find yourself.

Waiting for your cow B, you can say some arrogant words. But now we are not cattle B. At least if you see this article I wrote. You should not be a cow B. I said this article is for beginners. of:-)

11. Women’s problems

Hey.. solve this problem yourself @_@

Click to enlarge. These images are just previews. I will automatically compress and add watermarks when I upload them.

November 20, 2009

I encountered this problem when doing the form GET hook of the Punny. I don’t want to use the framework.

Looking for a code that is not readily available online..

Then analyze the form Serialize of the jQuery form plugin..

Then I summed up the test that I have tested perfectly including the select control under IE