Friday, August 7, 2015

Friday, June 5, 2015

Dọn dẹp kho ống kính máy ảnh

Bà con ACE thân mến, hiện mình đang dọn dẹp "cơ cấu" lại cái kho của mình để cho nó chuyên nghiệp hơn. ACE nào yêu thích lens MF thì đây là cơ hội cho mọi người, đây là đồ mình bỏ công sức tuyển lựa sưu tầm dùng để học và sáng tác. Đa số ngoại hình rất tốt, ko phải lens treo đầu dê bán thịt chó ngoài chợ. ACE nào thắc mắc tại sao giá mắc này nọ thì để giải thích đơn giản như vầy. Cái nào cũng có giá của nó. Những lens này cái thời của nó ko hề rẻ, chỉ là bây giờ người ta ko thích cực khổ giống ông bà ngày xưa khi chụp ảnh phải ngồi canh ngồi chỉnh bằng máy cơ tê hết cả đít, Kit lens thì sáng, rõ và nét nhưng 10 cái như 1, ko có bokeh, ko có chất ảnh gì khác người grin emoticon

bà con muốn khác biệt thì cứ Manual Focus lens mà quay tay. Vừa chơi vừa học sẽ thấy giá trị nó khác ngay.

Bạn nào có nhu cầu liên hệ mình qua đt cho lẹ 0909 513 255 (nhắn tin mỏi tay lắm)
https://drive.google.com/open…


1tr3 Beroflex 28mm f2.8 Minolta MD mount

1tr3 Soligor 135mm f2.8 tele-auto Minolta MD mount
1tr8 Minolta mc rokkor-sg 28mm f/3.5 Minolta MD mount
1tr8 Sakar mc 135mm f 2.8 Nikon AI mount
2tr1 Vivitar Series 1 28-105mm F2.8-3.8 FD Mount VMC Macro Focusing Zoom
2tr3 Tokina RMC FAST 35-105mm F3.5 Close Focus Canon FD mount 72mm filter (bị sương ở trong, ra Tèo lau là xong ngay)
2tr5 starblitz 24mm f2.8 macro pentax pk mount
7tr Pentacon 300mm f4 M42 mount 19 Blades
8tr Lester dine Kiron 105mm f2.8 macro 1:1 Minolta MD mount
2tr5 Minolta MC Rokkor-PG 50mm f1.4
7tr5 Panagor PMC Auto Macro 1:1 90mm f2.8 Canon FD mount

900k Industar 50-2 50mm f/3.5 M42 mount

1tr4 Helios 44 2 58mm f2 8 blades M42 mount

1tr7 Helios 44m-4 58mm f/2 M42 mount

1tr5 Pentax SMC-A 50mm f2



Kiron 1tr5 28-210mm f/4-5.6 Macro Konica AR mount

Kiron 1tr5 30-80mm f3.5-4.5 macro PK mount

Kiron 1tr7 80-200 mm f/4 Macro 1:4 Zoom Lens PK mount

Kiron 1tr7 28mm F2 MC FD mount

Kiron 1tr9 28-85mm f/2.8-3.8 macro MD mount

Kiron 2tr2 70-150mm f4 Macro OM mount

Kiron 2tr5 28mm F2 MC PK mount

Kiron 2tr7 70-210mm f/4 macro with zoom lock OM mount

Tuesday, May 26, 2015

Ubuntu 14.04 - Mysql Galera Cluster for Wordpress

This cluster has 2 nodes run in multi master mode

Installing cluster
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
sudo add-apt-repository 'deb http://mirror3.layerjet.com/mariadb/repo/5.5/ubuntu trusty main'
sudo apt-get update -y ; sudo apt-get install -y galera mariadb-galera-server rsync

Configuring cluster
On each of the host in the cluster add this configuration
vi /etc/mysql/conf.d/galera.cnf
[mysqld]
#mysql settings
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0
#galera settings
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="my_wsrep_cluster"
wsrep_cluster_address="gcomm://192.20.3.31,192.20.3.32"
wsrep_sst_method=rsync

Stop MariaDB instance in all of the Galera hosts
sudo service mysql stop

Init the Galera cluster on my 1st node by start MariaDB
sudo service mysql start --wsrep-new-cluster

Just start MariaDB on my 2nd node
sudo service mysql start

To prevent startup error on 2nd node we need to copy /etc/mysql/debian.cnf content from node1 to node2 and then restart MariaDB on 2nd node

Confirm cluster status has started
mysql -u root -p -e 'SELECT VARIABLE_VALUE as "cluster size" FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME="wsrep_cluster_size"'
Enter password: 
+--------------+
| cluster size |
+--------------+
| 2            |
+--------------+
From now on the data will sync between both hosts. To test it try create one database from 1st node then go to 2nd node and see it is there.
On 1st node
mysql -u root -p
create database HelloWorld;

On 2nd node
mysql -u root -p
show databases;
if Helloworld database was there. That's kool. We're ready to go.

Grant Remote privilege to remote user on DBcluster
On one of the DB host (node1 or node2)
mysql -u root -p
create user 'handsome'@'%' identified by handsome_password;
grant all privileges on Database_name . * to  'handsome'@'%';
flush privileges;
show grants for 'handsome'@'%';

Note: 
Replace handsome with your username or root
Replace Database_name with your DB name or * to grant privileges on all Database

DNS setting
On my premise DNS server I add a Round Robin DNS record point to 2 Galera host
dbcluster -> 192.20.3.31
dbcluster -> 192.20.3.32

On my PHP app server I can connect to the dbcluster with this command
mysql -u root -p -h dbcluster 

If it not work, you could have a look on MariaDB log

Reference link:
https://www.linode.com/docs/databases/mariadb/clustering-with-mariadb-and-galera

Thursday, May 21, 2015

Tại sao đuổi học?

Ngay từ thuở còn cắp sách đến trường tôi chứng kiến không biết bao nhiêu bạn bè của mình bị đuổi học vì những lý do như đánh nhau, quay cóp, uống bia rượu, đua xe... nói chung là những lý do mà người ta quy cho là phạm tội hay lỗi trầm trọng mà qua đó sẽ dẫn đến việc cho thôi học có thời hạn hay vô thời hạn. Mà việc đuổi học này không phải chỉ riêng ở Việt Nam mà nước Tây nước Tàu nào cũng có. Tôi còn chứng kiến trước khi cho thôi học nhà trường còn bắt cả phụ huynh lên làm bản kiểm điểm đọc trước toàn trường, thật không thể nào tưởng tượng nổi.

Người ta có rất nhiều lý do để giải thích cho việc đuổi học. Nhưng quan điểm của tôi là dựa trên chức năng của nhà trường là giáo dục học sinh, trường không dạy nổi, không quản lý nổi có nghĩa là không thực hiện nổi chức năng của mình như vậy người ra quyết định đuổi học nên thôi giữ chức vụ hay đóng cửa trường vì không có khả năng dạy dỗ nổi học sinh do mình nhận vào.

Những lý do như làm ảnh hưởng đến học sinh khác là hoàn toàn không chấp nhận, nếu sợ ảnh hưởng đến học sinh khác thì tại sao nhận học sinh vào học, nhận học sinh vào học nghĩa là anh phải chịu trách nhiệm quản lý dạy dỗ và giáo dục người ta, nếu lỡ người ta vi phạm anh phải xem đó là lỗi của mình và có cách khắc phục hậu quả không đằng này lại đuổi học như vậy là từ chối trách nhiệm của mình. Nếu nói là làm ảnh hưởng đến học sinh khác thì chẳng khác nào coi người bị đuổi như một phần tử bệnh dịch nguy hiểm cần được loại trừ? Bạn phạm một lỗi và bạn trở thành một loại dịch bệnh nguy hiểm.
Có lí do đuổi học nào là muốn tốt cho học sinh bị đuổi học không? Tôi thấy đa phần là do dự luận và do ảnh hưởng đến tên tuổi của trường hay của ông/bà nào đó cho nên phải đuổi? Choáng!
Nhà trường có thể có cả tỷ lý do để chứng tỏ quyền uy đuổi học của mình nhưng nếu giáo dục thật sự xuất phát từ tình thương thì không có lý do nào có thể chấp nhận được và nó cũng đã sai chức năng và mục đích giáo dục. Nhưng việc đuổi học vẫn cứ xảy ra, nhiều người vẫn cứ hả hê ... thế thì người bị đuổi học họ sẽ cảm thấy thế nào? Họ sẽ trở thành người như thế nào? Những người khác sẽ cư xử với họ ra sao? Liệu có nơi nào để họ có thể tiếp tục được học hay ko? Học sao mà xa xỉ quá vậy.

Tôi chứng kiến bạn bè của mình thuở học chung học rất giỏi nhưng họ phạm sai lầm và bị đuổi học ở lứa tuổi thành niên và thế là sau 10-15 năm gặp lại tôi nhìn thấy họ mà rưng nước mắt, họ cũng mặc cảm ko thèm nói chuyện với mình. Có ai không phạm sai lầm, thế sao họ lại bị vứt ra khỏi xã hội như vậy, trẻ con hay người lớn ai cũng có thiện tâm trong lòng mình ai cũng có phút lầm đường lạc lối và hoàn toàn có thể quay trở lại con đường tốt của mình. Thế mà nền giáo dục này, xã hội này lại vứt bỏ họ và chà đạp họ.

Nếu người bị đuổi học là con cái của mình thì mình sẽ thế nào? Vì nó làm mất mặt cả dòng họ nên đuổi nó ra khỏi nhà chăng làm như vậy gia đình cũng chẳng khác gì nhà trường cũng phủi bỏ trách nhiệm giáo dục của mình chỉ khác ở chỗ là lý do, xây thì khó phá bỏ thì dễ lắm. Trường với gia đình đổ lỗi cho nhau rồi đổ lên đầu đứa nhỏ. Nơi nương tựa của người Việt mình là gia đình thế nên phải tìm cách giúp con em mình vượt qua được lỗi lầm, không đi học nghĩa là một cơ hội tốt vì có thêm thời gian để rèn luyện chấn chỉnh bản thân của mình thành một con người tốt bằng một cách thức khác chứ không phải cứ đi tới trường là con đường duy nhất. Trường đời rộng và dài lắm ai ơi, mỗi người lại mỗi ngã đâu như trường Việt thì học 16 năm trời cũng chữ thầy trả thầy chưa chắc đã bằng một người chuyên tâm học hành say mê làm việc yêu thích trong vòng vài năm là cũng đạt được thành tựu. Những người tu hành hay khổ luyện họ cũng có chỗ của họ đâu đó chứ đâu nhất thiết phải ở trường.
Vì vậy đừng đuổi học nữa! Trường học đừng chứng tỏ sự yếu kém và bất lực của mình nữa.

Ubuntu 14.04 - GlusterFS for Wordpress

Here's my setup:  Client -> Varnish cache -> 2 x Worpdress -> Memcached -> 2 x MariaDB

I need to sync Wordpress folder on both Machine, just have a look on NFS, CEPH, GlusterFS and I go with GlusterFS
sudo apt-get -y install glusterfs-server

If you don't have a on premise DNS server, we can add the server name in to hosts files
192.20.1.1    srvr-phpnode1.mydomain.vn    srvr-phpnode1    
192.20.1.2    srvr-phpnode2.mydomain.vn    srvr-phpnode2

Create a directory for Gluster Volume on both hosts
mkdir /gluster-volume

Check for other peer status
sudo gluster peer probe srvr-phpnode2
peer probe: success

sudo gluster peer status
Number of Peers: 1

Hostname: srvr-phpnode2
Port: 24007
Uuid: 225698cb-a84f-4b5b-8537-27732d752aba
State: Peer in Cluster (Connected)

Glusterfs distributed vs Replica mode (GlusterFS docs):
Distributed mean data distributes across the available bricks in a volume: write 100 files, on average, 50 on one server, and 50 on another. This is faster than a “replicated” volume, but isn’t as popular since it doesn’t give you two of the most sought after features of Gluster — multiple copies of the data, and automatic failover if something goes wrong

Create wwwVol volume on host srvr-phpnode1
sudo gluster volume create wwwVol replica 2 transport tcp srvr-phpnode1:/gluster-volume srvr-phpnode2:/gluster-volume force

(GlusterFS docs): we tell it to make the volume a replica volume, and to keep a copy of the data on at least 2 bricks at any given time. Since we only have two bricks total, this means each server will house a copy of the data. Lastly, we specify which nodes to use, and which bricks on those nodes. The order here is important when you have more bricks

sudo gluster volume start wwwVol
sudo gluster volume info

Volume Name: wwwVol
Type: Replicate
Volume ID: 8c1430d4-8b25-4967-9a46-39287cdedbb2
Status: Started
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: srvr-phpnode1:/gluster-volume
Brick2: srvr-phpnode2:/gluster-volume

We need /var/www will be on GlusterFS so we will mount wwwVol to /var/www on both hosts
On both hosts
mkdir /var/www

On phpnode1
vi /etc/fstab
srvr-phpnode1:/wwwVol /var/www glusterfs defaults,_netdev 0 0

mount -a 

On phpnode2
vi /etc/fstab
srvr-phpnode2:/wwwVol /var/www glusterfs defaults,_netdev 0 0
mount -a 

Other GlusterFS command
gluster volume stop VOLNAME
gluster volume delete VOLNAME

gluster volume remove-brick VOLNAME wnode1:/www
http://www.gluster.org/community/documentation/index.php/Gluster_3.1:_Deleting_Volumes
http://www.gluster.org/community/documentation/index.php/Basic_Gluster_Troubleshooting

Ubuntu 14.04 - Memcached server for Wordpress

First thing first: memcache vs memcached

According to http://blackbe.lt/php-memcache-vs-memcached/
PHP has two separate module implementations wrapping the memcached (as in memcache daemon) server.

The memcache module utilizes this daemon directly, whereas the memcached module wraps the libMemcached client library and contains some added bonuses.
Memcached module will be faster than memcache module => I'll go with Memcached module

Install Memcached daemon on my dedicate Memcached host

sudo apt-get install memcached libmemcached-tools

My memcache server listen all of its address. So edit /etc/memcached.conf
-m 20000      #amount of RAM in MB
-p 11211      #listen port 11211
-l 0.0.0.0    #listen on all interfaces

Install memcached client
In other Wordpress PHP server we need to install memcahed client and server (optional):
sudo apt-get install php5-memcached memcached libmemcached-tools php-pear
sudo mkdir /etc/php5/conf.d
ln -s /etc/php5/mods-available/memcached.ini /etc/php5/conf.d/memcached.ini

I need to store Php sessions in Memcached because store in memory will be faster than disk 
Default is session.save_handler = files
Add to /etc/php5/conf.d/memcached.ini
[Session]
session.save_handler = memcached
session.save_path = "tcp://localhost:11211"

Wordpress and Memcached
Finally edit Wordpress wp-config file to add list of Memcached server for Wordpress Total cache plugin
global $memcached_servers;
$memcached_servers = array('default' => array('192.1.3.30:11211','192.1.1.11:11211','192.1.1.12:11211'));

Now your Wordpress can Memcached it.

Monday, April 27, 2015

Ubuntu 14.04 - Canon E500 network printing and scanning at home

Recently switch my Mom machine from Windows 7 to Ubuntu Gnome 14.04 which's my favorite one. So I need to share Canon E500 (USB) printing and scanning for my other devices over Network.
I set this host with static IP: 192.168.1.10

Install Canon E500 driver

sudo add-apt-repository ppa:inameiname/stable
sudo apt-get update -y
sudo apt-get install -y cnijfilter-e500series scangearmp-e500series

Now I can add the printer from Printer Config
For Scanner: I use ScanGear instead of Simple Scan

Sharing Printer

This step is share printing service over network
Cups printing running on port 631 localhost -> go to CUPS admin at http://localhost:631/admin
In the Server part setting: Check these options
  • Share printers connected to this system
  • Allow printing from the Internet
  • Allow remote administration
  • Allow users to cancel any job (not just their own)  //this is my home purpose
=> Change Settings -> wait for Cup restarting

Manage E500 printer via CUPS. Now we need to access CUPS by its IP address, I also leave the printer name as E500-series
http://192.168.1.10:631/printers  make sure the printer E500-series is available otherwise add it to
From here you can print any test pages, maintenance, etc...I don't need to set any allowed user. Just me and my mom

Sharing Scanner

On the server (E500 connect directly via USB) tell sane to run as server
sudo vi /etc/default/saned
Run=no -> Run=yes

Allow user from my subnet
sudo vi /etc/sane.d/saned.conf
## Access list
192.168.1.0/24

service saned restart

On the client
sudo vi  /etc/sane.d/net.conf
## saned hosts
192.168.1.10
connect_timeout = 60

Open Xsane and wait for Scanner discovery

Tuesday, April 21, 2015

Monday, April 20, 2015

Câu chuyện đôi chim ưng và cành cây

Ngày xưa, có một vị vua nhận được món quà là hai con chim ưng rất đẹp. Chúng là hai con chim ưng từ ngoại quốc, là loài đẹp nhất mà ông từng thấy. Ông đưa những con chim quý này cho người nuôi chim ưng để huấn luyện.

Một tháng đã trôi qua, và người nuôi chim báo tin cho nhà vua rằng, mặc dù một con chim ưng đã bay vút lên bầu trời một cách mạnh mẽ, nhưng con còn lại vẫn không di chuyển khỏi cành cây mà nó đã đậu.

Vị vua mời thầy thuốc cùng pháp sư khắp nơi trên đất nước để đến xem tình hình của con chim ưng này, nhưng không ai có thể làm nó bay.

Đức vua đem sự việc này bày tỏ với các quan viên trong cung điện của mình, nhưng vào ngày hôm sau, khi nhìn qua cửa sổ cung điện, vị vua vẫn thấy con chim chưa rời cành.

Dù đã thử nhiều cách khác nhưng không cách nào thành công, vị vua tự nghĩ: “Có thể ta cần một người thân thuộc với vùng quê để hiểu bản chất của vấn đề“. Vì vậy ông gọi quan cận thần của mình rồi hỏi: “Hãy đi mời một người nông dân“.

Vào buổi sáng, nhà vua rất phấn khích khi thấy con chim ưng bay cao trên khu vườn cung điện. Ông nói với quan cận thần: “Mời người đã làm ra phép lạ này đến đây“.

Vị quan nhanh chóng mời người nông dân đến để diện kiến trước đức vua. Nhà vua hỏi ông ta: “Làm cách nào mà người làm con chim ưng bay được vậy?“.

Kính cẩn cuối đầu, người nông dân trả lời: “Thưa điện hạ, không có gì khó cả, tôi chỉ đơn giản là cắt cành cây nơi con chim đậu đi“.

Tất cả chúng ta đều có thể bay, bởi đó là tiềm năng đáng kinh ngạc của con người. Nhưng theo thời gian, chúng ta ngồi trên những cành cây của mình, rồi dính mắc vào những thứ thân thuộc mà quên mất bản năng của mình.

Khả năng của con người vô tận, nhưng hầu hết chúng ta vẫn chưa thể hoàn toàn khai phá hết. Chúng ta thích những thứ quen thuộc, thoải mái, và thú vui trần tục. Vì vậy phần lớn cuộc đời, chúng ta sống tầm thường thay vì thú vị, ly kỳ và đầy ý nghĩa.

Hãy học để phá bỏ những cành cây của sự sợ hãi mà chúng ta bám vào và giải thoát bản thân để có thể bay lên một cách huy hoàng.

Friday, April 10, 2015

11 Infographics That Will Help You Improve Your Grammar and Spelling

In the era of texting, instant messaging and grumpy cat memes, proper grammar and spelling seem to have taken a backseat to the need to communicate with finger-busting speed.
But while ignoring spelling and grammar rules when texting your friends may be OK (honestly, though: it isn’t), once those pesky errors find their way into emails, articles and cover letters, they may cost you a good grade in school, not to mention a job.
YKWIM?
We hope the 11 infographics below, all of which focus on either grammar or spelling rules or common mistakes, will be both useful and a fun way to brush up on those skills.

Let’s get started with some Basic Grammar Rules

15 Grammar Goofs That Make You Look Silly

The Most Annoying Writing Mistakes

10 Hyphenation Tips

Quotation Marks and Punctuation

Common Rules for Capital Letter Usage

12 Most Misunderstood Words in English

Words You Might Misuse

Verbs and Their Prepositions

14 Mistakes With Prepositions

Apostrophes

Finally, one for fun: Eight Totally Necessary New Punctuation Marks

Aleks Todorova is the editorial director at Visual.ly. She’s a stickler for proper grammar and spelling, but wishes the Morgan Freemark were real.

http://blog.visual.ly/grammar-spelling-infographics/