Install Imagik php windows

This works perfect for me:
Windows 8 64 bit
php 5.6

Steps to Install ImageMagick on Xamp for Windows:

Detailed guide for newbies like me (Took a long time to get it to work)

I initially followed:
http://php.net/manual/en/imagick.installation.php
but after installation, PHPInfo under imagick shows
number of supported formats = 0

So I followed these steps, clobbered from various sources
to get it to work.

1. Open PHPInfo and check:
Architecture = x86 or x64
Thread Safety = yes or no

2. Download ImageMagick from:

http://windows.php.net/downloads/pecl/deps/

In my case I downloaded: ImageMagick-6.9.3-7-vc11-x86.zip
because the Architecture under PHPInfo is x86
as for vc11 or vc14
search google for “visual c++ 11 runtime” or
“visual c++ 14 runtime” and install it

3. Unzip and copy all dlls from the bin subfolder to the
Apache bin directory. It’s a bunch of CORE_RL_*.dll
and IM_MOD_RL_*.dll plus a few other dlls.

In my case, I installed Xampp in E:\xampp, so:
(from zip) bin/*.dll –> E:\xampp\apache\bin

4. Goto:
http://pecl.php.net/package/imagick

as of today, latest is 3.4.1 so I went to:
http://pecl.php.net/package/imagick/3.4.1/windows

My PHP version is: 5.6.18, and Thread Safety is Yes from
Step #1, so I downloaded:
5.6 Thread Safe (TS) x86
I got: php_imagick-3.4.1-5.6-ts-vc11-x86.zip

5. Unzip and copy “php_imagick.dll” to the php extension folder:

In my case:
php_imagick.dll –> E:\Xampp\php\ext

Note: this ZIP also contains dlls which other guides says
to extract to the extension folder of apache.
NO NEED TO DO IT. Step #3 has taken care of it.

6. Edit “php.ini” and add at the very end (could be
anywhere I suppose):

[Imagick]
extension=php_imagick.dll

For super newbies: click the ‘config’ button in the Xampp Control Panel UI,
and select “php.ini” and edit it. It will be copied to
the correct php.ini when Xampp is restarted. I had
trouble at first since there are several php*.ini scattered
all over.

7. Restart Apache

8. Check PHPInfo
scroll to section (or find): imagick
number of supported formats: 234

If there is no “imagick” section or “supported format” is 0,
something went wrong.

Hope this helps.

referer:
http://php.net/manual/en/imagick.setup.php#119083
http://php.net/manual/en/imagick.setup.php#119084

Giám đốc và câu chuyện với cô thư ký chân dài vòng eo 56

Trong suy nghĩ nhiều người, chuyện giám đốc và thư ký từ rất dễ nảy sinh nhiều vấn đề, tuy nhiên, không phải trường hợp nào cũng vậy.

Trên mạng xã hội đã từng xuất hiện rất nhiều câu chuyện liên quan đến mối quan hệ giữa cô thư ký xinh đẹp và giám đốc tài ba.
Đó thường là những vấn đề nhạy cảm mà không một bà vợ của các giám đốc nào muốn mắc phải. Nhưng “không có lửa sao có khói” và những câu chuyện đánh ghen vẫn xảy ra khá nhiều.
Bởi vậy mà đoạn chia sẻ nói về một người giám đốc từ chối tình ý của cô thư ký xinh đẹp được đăng mới đây đã thu hút được rất nhiều sự quan tâm với hàng ngàn lượt like, chia sẻ và bình luận.

Anh là một người đàn ông, hơn nữa lại là một người đàn ông biết yêu cái đẹp, anh có động lòng chứ, nhưng anh nhìn xuống bàn tay trái của mình, anh thấy chiếc nhẫn cưới mà vợ anh đã đeo vào tay anh khi cả hai còn nghèo khó.
Anh bỗng tỉnh táo trở lại.
Gửi cô thư ký có đôi chân dài và vòng eo 56cm!
Anh biết khi em bước vào công ty của anh, tất cả cánh đàn ông đều phải ngước nhìn, ngay cả anh, một người đàn ông được đánh giá là có “trái tim sắt đá” cũng phải thú nhận rằng, không ít lần anh đã lén nhìn và ngưỡng mộ nhan sắc của em.
Nhưng anh nghĩ, đó chỉ là phản xạ bình thường của một con người biết ngưỡng mộ và yêu cái đẹp mà thôi.
Em ý thức được nhan sắc nữ thần của mình. Em luôn trở thành tâm điểm chú ý của công ty khi khoác lên người những bộ cánh ôm sát, tôn thêm vóc dáng hoàn hảo.
Những chiếc váy ngắn, hoặc xẻ cao để lộ đôi chân dài miên man của em cũng đủ khiến cho bao ánh mắt của cánh mày râu bối rối. Em trở thành nữ hoàng của các anh chàng ở công ty và là cái gai trong mắt của những đồng nghiệp nữ.
Em trở thành nữ hoàng của các anh chàng ở công ty và là cái gai trong mắt của những đồng nghiệp nữ.
Anh phải công nhận rằng, em là một phụ nữ thông minh. Những lần em giúp anh giải quyết vấn đề trong công việc, anh đã nhận ra điều đó.

Và anh cũng nhận ra ánh mắt em nhìn anh có những ẩn ý gì. Anh biết em xinh đẹp và thông minh, nhưng có lẽ, vì em có quá nhiều lợi thế nên em quá tự tin về mọi thứ, trong đó có cả việc em nghĩ rằng, anh sẽ phải ngã vào vòng tay em.
Thời gian gần đây, anh thấy em hay nán ở lại sau giờ làm việc để đợi anh, em thường xuyên chuẩn bị những món ăn nhẹ hoặc cà phê rồi mang vào phòng làm việc cho anh, em cũng thường xuyên cố tình đụng chạm vào người anh.
Rồi ánh mắt em nhìn anh đầy khiêu khích, mời gọi, những điều đó anh đều biết cả, nhưng anh luôn dặn với lòng mình rằng, anh đã là người đàn ông có vợ.
Hôm nay cũng vậy, sau khi chúng ta đi gặp khách hàng về khá muộn, em đòi đi cùng xe với anh, em ngồi gần anh, mùi hương nước hoa dịu nhẹ phả vào mặt anh khiến anh choáng váng.
Em cố tình cho anh thấy khuôn ngực căng tròn, vòng eo nhỏ đáng mơ ước và đôi chân dài bất tận của mình khi mặc một chiếc váy vô cùng gợi cảm.
Em chủ động áp sát người vào anh rồi nói câu: “Em yêu anh”. Lúc đó anh thực sự mất phương hướng. Anh là một người đàn ông, hơn nữa lại là một người đàn ông biết yêu cái đẹp, anh có động lòng chứ.
Nhưng anh nhìn xuống bàn tay trái của mình, anh thấy chiếc nhẫn cưới mà vợ anh đã đeo vào tay anh khi cả hai còn nghèo khó, anh bỗng tỉnh táo trở lại.
Anh đã đẩy em ra và nói: “Em về nhà đi, anh cũng phải về nhà, vợ con anh đang đợi”. Có lẽ lúc đó, em thấy xấu hổ và tức giận lắm.
Em nói với anh rằng, có hàng tá đàn ông xếp hàng để được em ban phát tình yêu, thế mà đây em đã chủ động dâng hiến cho anh nhưng anh lại từ chối. Anh đúng là gã đàn ông ngu ngốc.

Anh không nói gì, chỉ lên xe rồi lái thẳng về nhà.

Em à, em còn trẻ, lại xinh đẹp, thông minh, và tất nhiên sẽ có một người đàn ông khác yêu em, muốn có em. Anh đã có gia đình và anh phải có trách nhiệm với gia đình của anh.

Em chưa lập gia đình nên em chưa hiểu được cảm giác mình phải luôn luôn bảo vệ nó là như thế nào đâu. Anh không chê em, chỉ là anh biết mình phải làm gì.

Anh đã có gia đình và anh phải có trách nhiệm với gia đình của anh.

Lần thứ hai, em chủ động cởi bỏ mọi thứ trước mặt anh khi hai chúng ta đi công tác và nghỉ cùng một khách sạn, em nói rằng, em chấp nhận làm “người tình giấu mặt của em” nhưng anh đã mặc lại áo cho em rồi nói: “Chân em dài, eo em thon thật đấy nhưng vợ anh mới là người giúp anh có được ngày hôm nay” .

Em không biết rằng, trước đây anh chỉ là một thằng khố rách áo ôm, ngay cả chiếc xe đạp cũng không có mà đi. Lúc đó, không có cô gái nào dám đến gần anh, nhưng vợ anh đã đến, ở bên cạnh và giúp anh học xong mấy năm đại học.

Vợ anh cũng đã bỏ qua lời khuyên can của gia đình để nhận lời cầu hôn của anh. Cô ấy đã làm đủ nghề để chạy ăn từng bữa. Có đợt mùa hè nóng nực, anh thấy vợ mình ngồi giữa đống áo len, mồ hôi chảy như tắm, cô ấy bảo phải tranh thủ làm hàng để lấy tiền mua áo mới cho anh còn kịp đi dự hội thảo.
Vợ anh đã hy sinh gần hết quãng đời thanh xuân của mình cho anh, cô ấy chấp nhận xấu xí, chấp nhận những vết rạn để sinh cho anh những đứa con ngoan ngoãn.
Và cũng chính cô ấy chạy ngược chạy xuôi vay mượn, ủng hộ anh để anh có thể thành lập công ty riêng. Anh không thể vì một chút ham muốn nhất thời mà phản bội lại cô ấy được.
Vậy nên cô gái chân dài, eo thon ạ, anh đành phải kiên quyết từ chối lời đề nghị của em. Anh yêu vợ anh, thương vợ anh và cảm thấy nợ cô ấy rất nhiều.
Anh sẽ dùng cuộc đời còn lại của mình để trả nợ cho cô ấy. Em hãy tìm một người đàn ông tốt và để người đó có cơ hội mang lại cho em hạnh phúc.

(Bài viết thể hiện một quan điểm về cách đối nhân xử thế trong cuộc sống và cũng không phải tình huống thực của tác giả)

Theo Trí Thức Trẻ

ElasticSearch & php & mysql thực hành – Phần 10 – queue capacity 1000

Sau khi bạn đã có được 1 lượng dữ liệu lớn cho index của bạn. Và chạy test với lượng request ( search hoặc index) lớn mỗi ngày có thể bạn sẽ đối mặt với những Error sau đây khiến ES bị ngưng chạy, thậm chí gây cho các service khác trong cùng server cũng bị ngưng trệ, không chạy được.

Biểu hiện:

Khi xem log của elasticsearch. Bạn sẽ gặp 1 trong những (hoặc tất cả) error message sau:

– rejected execution (queue capacity 1000)
– failed to reduce search
– java.lang.OutOfMemoryError: Java heap space

Nguyên nhân:

ES cần nhiều RAM hơn cái lượng mà bạn đang dành cho nó. Bạn cần tăng RAM thêm cho ES (tăng ES_HEAP_SIZE)

Cách kiểm tra lượng memory ES đang dùng:

Bạn chạy dòng lệnh sau:

curl -XGET 'http://localhost:9200/_cluster/stats?human&pretty'

Kết quả sẽ in ra nhiều thông số của ES. Trong đó bạn chú ý đến thông số memory:

 "jvm" : {
  "max_uptime" : "16.7h",
  "max_uptime_in_millis" : 60333921,
  "versions" : [ {
	"version" : "1.8.0_51",
	"vm_name" : "OpenJDK 64-Bit Server VM",
	"vm_version" : "25.51-b03",
	"vm_vendor" : "Oracle Corporation",
	"count" : 1
  } ],
  "mem" : {
	"heap_used" : "1.8gb",
	"heap_used_in_bytes" : 1995711136,
	"heap_max" : "3.7gb",
	"heap_max_in_bytes" : 4054515712
  },
  "threads" : 258
},

heap_max là 3.7 GB, và heap_used là 1.8GB. Như vậy là tốt, memory sử dụng trong giới hạn cho phép.
Khi bạn bị out of memory thì heap_used sẽ thường xuyên bằng hoặc lớn hơn heap_max. Bằng dòng lệnh trên bạn có thể check trong thời điểm hiện tại ES có dùng quá nhiều memory hay không.

Khi bạn bị out of memory. Hãy restart lại ES. Và chạy dòng lệnh trên liên tục để check ( vì nó sẽ thay đổi theo từng giây). Sau khi khởi động, heap_used sẽ tăng dần cho đến khi đạt hoặc vượt ngưỡng heap_max. Lúc đó bạn hiểu rằng bạn cần tăng thêm heap_max cho ES.

Change Heap size:

Cách config Heap size mình đã giới thiệu ở phần 7: setting ES, các bạn có thể xem lại.

ES ngốn khá nhiều RAM khi lượng request lớn. Nếu bạn có 10 GB ram thì nên để cho ES max là 5 GB RAM.

Để thay đổi heap size bạn làm như sau:
Trong file:
/etc/default/elasticsearch(In CentOS: ‘/etc/sysconfig/elasticsearch’ or /etc/init.d/elasticsearch):

ES_HEAP_SIZE=512m
MAX_OPEN_FILES=65535
MAX_LOCKED_MEMORY=unlimited

Trong file:

/etc/elasticsearch/elasticsearch.yml:

bootstrap.mlockall: true

setting mlockall như trên để ngăn swapping.

Restart lại ES.

Chú ý: đường dẫn đến file config elasticsearch có thể khác nhau. Bạn cần tìm đúng file đó. Như trường hợp của mình thì nó là file:

/usr/local/share/elasticsearch/bin/elasticsearch.conf. Do mình dùng Service wrapper để elasticsearch chạy như 1 service.
Mình config như sau:

set.default.ES_HEAP_SIZE=4000
set.default.MAX_OPEN_FILES=65535
set.default.MAX_LOCKED_MEMORY=unlimited

Trước đây mình tìm hiểu trên nhiều bài viết thì họ hướng dẫn config thí dụ 1GB, 1g, 2G … để config với đơn vị Gigabyte.
Mình đã thử config là 4g. Nhưng khi restart lại thì gặp lỗi:

java.lang.OutOfMemoryError: Direct buffer memory

Nhìn lại file config của mình thì nhận ra là file config của mình nó nhận ES_HEAP_SIZE theo MB. Đoạn config trong file như sau:

# Initial Java Heap Size (in MB)
wrapper.java.initmemory=%ES_HEAP_SIZE%

# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=%ES_HEAP_SIZE%

Tức là thay vì viết là 4g thì phải viết là 4000 (tức 4000MB) thì mới đúng. Chứ 4g nó sẽ hiểu là 4MB
Vì chỗ này và chưa thạo về cách check heap_used mà mình mất cả tuần loay hoay với lỗi OutOfMemoryError. Các bạn cần xem kỹ file config và check heap_used xem config đã đúng chưa.

Kiểm tra và ước lượng:

Sau khi restart ES. Bạn chạy lệnh check heap size usage trên kia để xem kết quả.

Nếu heap_max được update như bạn đã thay đổi thì bạn đã config đúng, còn không thì phải xem lại.
Bạn check liên tục, nếu heap_used tăng dần đến hạn và vượt heap_max thì bạn phải change lại heap size để tăng thêm cho nó.
Nếu heap_used ổn định ở 1 hạn mức nào đó nhỏ hơn heap_max thì bạn đã config thành công. Yên tâm sẽ không bị Out of memory nữa
Nếu heap_used ổn định ở 1 mức thấp hơn nhiều heap_max thì bạn nên change lại heap size, giảm bớt xuống tránh việc cấp phát memory cho ES nhiều quá gây thừa thãi.

Kết: Khi dùng ES thì bạn ko thể tránh khỏi việc dành nhiều RAM cho nó. Nhưng hiệu quả thì khá vượt trội so với dùng mysql. Có thể đáp ứng được lượng request lớn, query search, filter phức tạp đều được giải quyết nhanh chóng. Nếu server có nhiều RAM và tất nhiên là bạn config đúng thì sẽ thấy ES chạy rất êm.

Hi vọng bài viết giúp giải quyết đúng vấn đề các bạn đang gặp phải.

Change and Update WordPress URLS in Database When Site is Moved to new Host

When you want to moving a wordpress site to different server, you need to update domain name in database.

  1. Update url in database
  2. UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldurl', 'http://www.newurl') WHERE option_name = 'home' OR option_name = 'siteurl';
    
    UPDATE wp_posts SET guid = replace(guid, 'http://www.oldurl', 'http://www.newurl');
    
    UPDATE wp_posts SET post_content = replace(post_content, 'http://www.oldurl', 'http://www.newurl');
    
    UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://www.oldurl', 'http://www.newurl');
    
  3. Update your WordPress config file to reflect the new database

“wp-config.php” should be in your web document root – change, databasename, username, password and host values:

define('DB_NAME', 'databasename');

/** MySQL database username */
define('DB_USER', 'username');

/** MySQL database password */
define('DB_PASSWORD', 'password');

/** MySQL hostname */
define('DB_HOST', 'localhost');

Now everything should link up perfectly.
djave has created a nice and easy script that takes the old and new URLs and hands you the sql code for the WordPress swap, nice!

Source post:
https://wpbeaches.com/updating-wordpress-mysql-database-after-moving-to-a-new-url/

XIN HỎI THẦY: KHI Ở MỘT MÌNH NGÀI CÓ ĂN THỊT KHÔNG?

Có người khách tới chùa chơi và hỏi lão hòa thượng: “Hòa thượng, tôi muốn hỏi ngài một câu hỏi hơi “bất kính” một chút có được không ạ?”

Lão hòa thượng: “Xin ông cứ nói!”

Người khách: “Lúc ở nơi dân chúng đông đúc thì ngài ăn chay, vậy khi ở một mình trong phòng ngài có ăn thịt không?”

Lão hòa thượng hỏi người khách: “Ông lái xe tới đây phải không?”

Người khách trả lời: “Vâng, đúng ạ!”

Lão hòa thượng: “Khi lái xe phải thắt dây an toàn, xin hỏi ông là ông thắt vì sự an toàn của bản thân hay vì cảnh sát? Nếu như là vì bản thân mình thì có hay không có cảnh sát ông sẽ vẫn thắt thôi”.

Người khách: “Tôi hiểu rồi!”

Rất nhiều người nói rằng không có kỷ luật, không có người đốc thúc thì không thể duy trì thói quen của mình. Thực ra việc tuân thủ bất kì một nguyên tắc nào đó nhất thiết phải cần biết nguyên tắc ấy được thiết lập để làm gì, khi tuân thủ nguyên tắc thì điều chúng ta muốn đạt được là gì, khi đã hiểu được thì không cần tác động, mà tự giác làm theo.

(Nguồn: Tinh Hoa)