Thứ Năm, 11 tháng 5, 2017

Adding an existing project to GitHub using the command line

My answer is not different but I am adding more information because those that are new could benefit from filling in the gaps in information.

After you create the repo on github they have instructions. You can follow those. But here are some additional tips because I know how frustrating it is to get started with git.
Let's say that you have already started your project locally. How much you have does not matter. But let's pretend that you have a php project. Let's say that you have the index.php, contact.php and an assets folder with images, css, and fonts. You can do it this way (easy), but there are many options:

Option 1

Login to your github account and create the repo.

enter image description here
In the following screen you can copy it down where you need it if you click the button (right side of screen) to "clone in desktop". 
enter image description here
You can (or do it another way) then copy the contents from your existing project into your new repo. Using the github app, you can just commit from there using their GUI (that means that you just click the buttons in the application). Of course you enter your notes for the commit.

Option 2

  • Create your repo on github as mentioned above.
  • On your computer, go to your directory using the terminal. using the linux command line you would cd into the directory. From here you run the following commands to "connect" your existing project to your repo on github. (This is assuming that you created your repo on github and it is currently empty)
first do this to initialize git (version control).
git init
then do this to add all your files to be "monitored." If you have files that you want ignored, you need to add a .gitignore but for the sake of simplicity, just use this example to learn.
git add .
Then you commit and add a note in between the "" like "first commit" etc.
 git commit -m "Initial Commit"
Now, here is where you add your existing repo
git remote add github <project url>
But do not literally type <project url>, but your own project URL. How do you get that? Go to the link where your repo is on github, then copy the link. In my case, one of my repos is https://github.com/JGallardo/urbanhistorical so my resulting url for this command would just add .git after that. So here it would be
git remote add github https://github.com/JGallardo/urbanhistorical.git
Test to see that it worked by doing
git remote -v
You should see what your repo is linked to.
enter image description here
Then you can push your changes to github
git push github master
or
git push origin master
If you get an error, try
git push -f origin master

Thứ Năm, 30 tháng 3, 2017

Cho mượn tiền mà có nguy cơ bị QUỴT, hãy nói với “con nợ” của bạn những điều này

Việc cho mượn tiền rồi mất cả tiền lẫn bạn không còn quá lạ lẫm trong cuộc sống này, nhưng hãy nghe vị cao tăng này bày cho bạn cách mượn tiền không mất còn lời.Trong cuộc sống này, dù muốn dù không thì cũng đôi lần bạn sẽ được hỏi mượn tiền. Và từ chối là việc vô cùng khó khăn, nhưng có những người dù bạn biết rằng cho mượn sẽ mất thì cũng không cam lòng tí nào. Vậy làm sao để cho người mượn tiền tự giác trả nợ?

Việc cho mượn tiền rồi mất cả tiền lẫn bạn không còn quá lạ lẫm trong cuộc sống này, nhưng hãy nghe vị cao tăng này bày cho bạn cách mượn tiền không mất còn lời.Trong cuộc sống này, dù muốn dù không thì cũng đôi lần bạn sẽ được hỏi mượn tiền. Và từ chối là việc vô cùng khó khăn, nhưng có những người dù bạn biết rằng cho mượn sẽ mất thì cũng không cam lòng tí nào. Vậy làm sao để cho người mượn tiền tự giác trả nợ?
Theo lời dạy của một bậc cao nhân, có cách để bạn có thể từ chối được việc cho vay tiền mà vẫn không làm mất lòng người mượn. Đó là hãy nói với họ những điều này:
Trong cuộc sống này việc khó nhất chính là vay nợ
Bạn hãy đứng ở vị trí người đi vay và nhớ lấy điều này: Người cho bạn vay nợ hay giúp đỡkhi bạn gặp khó khăn là người vô cùng đáng quý, nhất là ở xã hội bây giờ, con người ta chỉ biết sống cho mình. Vì vậy, gặp người sẵn sàng giúp đỡ mình lúc khó khăn thì phải luôn ghi nhớ, trân trọng cả đời.
Người cho bạn mượn tiền khi cần chưa hẳn là người ta dư dả, nhưng vì tình nghĩa, người ta sẵn lòng giúp đỡ thí chủ vào lúc khốn đốn.

Vật mà bạn mượn không đơn giản là tiền, nó là sự tin tưởng, là tấm lòng trân quý của người cho mượn đến bạn. Hãy lấy đó là động lực để đầu tư đúng đắn vào tương lai, đừng nghĩ người ta giàu có cho mình vay vài đồng thì có xá gì mà tiêu hoang phí, không tính toán.
Một lần bất tín vạn lần bất tin, đừng bao giờ quỵt tiền nợ dù bạn có khó khăn đến nhường nào đi nữa. Vì như vậy không những đánh mất mối lương duyên tốt đẹp mà còn tự đạp giá trị bản thân xuống vũng bùn. Tình cảm bạn bè là thứ quý giá, tìm được người sẵn lòng giúp đỡ ta khi khó khăn lại càng đáng phải trân quý hơn.
Không những chỉ trân trọng những người cho ta mượn tiền, hay giúp đỡ ta khi khốn khó, mà trong cuộc đời này bạn hãy ghi nhớ những điều sau:
– Khi gặp chuyện xích mích dẫn đến tranh cãi đôi bên, người xin lỗi trước chưa hẳn đã sai mà do họ coi trọng mối quan hệ hơn cái tôi cá nhân của mình.
– Người luôn dành phần khó trong công việc tập thể chưa hẳn là muốn thể hiện để tiến thủ hay ngu ngốc chọn việc nặng mà là họ rất có trách nhiệm với tập thể, muốn giảm gánh nặng cho mọi người.
– Bạn làm ăn chung khi nhường phần lợi hơn cho ta, chưa hẳn họ ngốc không biết tính toán mà đó chính là con người biết sẻ chia.
– Người hay chủ động thanh toán cho các bữa hẹn chưa hẳn họ rủng rỉnh tiền bạc, mà bởi họ xem trọng chân tình dành cho thí chủ cao hơn tiền bạc.
– Người luôn sẵn tay giúp đỡ ta khi khó khăn đó là do họ yêu thương và tin tưởng ta, đừng nghĩ họ mang nợ hay là bổn phận của họ mà coi nhẹ.

Thứ Ba, 21 tháng 2, 2017

Calculating start and end dates of a week.

"How do I calculate start (monday) and end (sunday) dates from a given week number for a specified year?" Instead of having to come up with your own algorithm you can simply do the following in PHP 5.1 and higher:

<?php
// Monday
echo date(
    datetime::ISO8601,
    strtotime("2006W37"));

// Sunday
echo date(
    datetime::ISO8601,
    strtotime("2006W377"));
?>

The format is " year 'W' weeknr ( daynr )?" where the default daynr is 1 being the Monday of that week. The daynr can be in the range 0 to 7. The weeknr is the ISO week number . Please note that the " year '-W' weeknr ( '-' daynr )?" format is only supported in PHP 5.2 and higher.

Thứ Sáu, 18 tháng 11, 2016

Roundcube: connection to storage server failed

1) If you've recently updated your version of dovecot, and if you get this error in RoundCube:
connection to storage server failed
it may be that the dovecot index files are for an older version of dovecot, and don't work full with the new version.
To resolve that issue, simply delete all dovecot index files, and dovecot will re-create them when it notices they're missing.

You should test this on one User first, before doing it on all Users.
Also, backup the dovecot* files of the test User first (shouldn't be required, but not a bad thing to do)
cd /home
/etc/init.d/dovecot stop
rm -f */imap/*/*/Maildir/dovecot*
rm -f */imap/*/*/Maildir/.*/dovecot*
rm -f */Maildir/dovecot*
rm -f */Maildir/.*/dovecot*
/etc/init.d/dovecot restart
Dovecot will recreate the dovecot* files once the User logs in.




2) Causing number 2 would be if dovecot has hit the per-IP limit.  If that's the case, you'd see something like this in your /var/log/maillog:
imap-login: Maximum number of connections from user+IP exceeded (mail_max_userip_connections=10)
The solution for that is to add the following to the very bottom of your /etc/dovecot/dovecot.conf file:
mail_max_userip_connections = 15
remote 127.0.0.1 {
       mail_max_userip_connections = 40
}
where the "remote 127.0.0.1" refers to the local limit (connections from roundcube and squirrelmail), and the limit of 15, just above it, is the per-IP limit for external IP addresses.  There are a couple other ways of going about it (can be done in the "protocol imap" section, but the method metioned here also covers pop without any extra code.




3) Another error:
master: Warning: service(imap-login): process_limit (100) reached, client connections are being dropped
The solution for this is to increase the process_limit for imap.  Edit the /etc/dovecot.conf, find the "service imap-login {" section, and set a higher limit, eg:
service imap-login {
       process_limit = 800
       process_min_avail = 16
       user = dovecot
}





4) Beyond that, check your apache logs for possible clues:
cd /var/log/httpd
tail -n 20 error_log
tail -n 20 domains/domain.com.log
tail -n 20 domains/domain.com.error.log
and the dovecot logs:
tail -n 20 /var/log/maillog


5) Check:
/etc/hosts

to ensure you see:
127.0.0.1   localhost
and that localhost does not exist under other IPs.

6) The error can also showed up when the /etc/virtual/domain.compasswd file is not in the correct format.
It should have 7 columns, separated by colons.  If you only see 2 columns, (1 colon), then run the ./build todovecot command.

Thứ Ba, 15 tháng 11, 2016

Cách khắc phục lỗi chữ bị răng cưa trong Photoshop

Nhiều bạn thắc mắc là tại sao chữ trong Photoshop lại bị răng cưa? mà không được mịn ở đường viền xung quanh chữ như hình dưới:



Nếu bạn cũng gặp trường hợp như vậy thì hãy làm theo các bước dưới đây.
B1. Chọn Text (T) để vào chữ viết bình thường.
B2. Chọn Sharp

Lý do bị răng cưa là bạn để chế độ None


Chủ Nhật, 16 tháng 10, 2016

Hướng dẫn mở và khóa port trên Linux

Trong quá trình sử dụng hoặc quản lý server linux, tùy theo mục đích và yêu cầu công việc mà bạn cần thực hiện mở hoặc khóa một cổng (port) trên server để phục vụ cho tính an toàn và bảo mật.
Bài viết sẽ hướng dẫn cách cơ bản để có thể mở hoặc khóa các port.
Một số port phổ biến thường được sử dụng:
TCP port 80 – HTTP Server
TCP port 443 – HTTPS Server
TCP port 25 – Mail Server
TCP port 22 – OpenSSH (remote) secure shell server
TCP port 110 – POP3 (Post Office Protocol v3) server
TCP port 143 – Internet Message Access Protocol (IMAP) - Management of email messages
TCP / UDP port 53 – Domain Name System (DNS)
Bạn có thể sử dụng lênh nano /etc/services (vi /etc/services) để xem danh sách các port

Mở port 80 Firewall trên Centos

Enable Firewall port 80 Centos – Mở port cho phép truy cập web trừ internet
Mặc định Centos/RedHat… chặn port 80 truy cập từ internet vào server của bạn. Vì vậy bạn cần phải mở Firewall port 80 cho truy cập vào web từ bên ngoài

# /sbin/iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT

# service iptables save

1.     Khóa cổng vào (Block Incoming Port)
 
/sbin/iptables -A INPUT -p tcp --destination-port {PORT-NUMBER-HERE} -j DROP
 
### interface section use eth1 ###
/sbin/iptables -A INPUT -i eth1 -p tcp --destination-port {PORT-NUMBER-HERE} -j DROP
 
### only drop port for given IP or Subnet ##
/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port {PORT-NUMBER-HERE} -s {IP-ADDRESS-HERE} -j DROP
/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port {PORT-NUMBER-HERE} -s {IP/SUBNET-HERE} -j DROP
Ví dụ: Để khóa imcoming port 80 (HTTP server), ta sử dụng lệnh sau:
 
/sbin/iptables -A INPUT -p tcp --destination-port 80 -j DROP
/sbin/service iptables save
Để khóa port 80 với tất cả IP, chỉ cho duy nhất IP có địa chỉ 10.7.3.2 truy cập
 
/sbin/iptables -A INPUT -p tcp -i eth1 -s ! 10.7.3.2 --dport 80 -j DROP

2.     Khóa cổng ra (Block Outgoing Port)
 
/sbin/iptables -A OUTPUT -p tcp --dport {PORT-NUMBER-HERE} -j DROP
 
### interface section use eth1 ###
/sbin/iptables -A OUTPUT -i eth1 -p tcp --dport {PORT-NUMBER-HERE} -j DROP
 
### only drop port for given IP or Subnet ##
/sbin/iptables -A OUTPUT -i eth0 -p tcp --destination-port {PORT-NUMBER-HERE} -s {IP-ADDRESS-HERE} -j DROP
/sbin/iptables -A OUTPUT -i eth0 -p tcp --destination-port {PORT-NUMBER-HERE} -s {IP/SUBNET-HERE} -j DROP
Ví dụ: Để khóa outgoing port 25, ta sử dụng lệnh sau:
 
/sbin/iptables -A OUTPUT -p tcp --dport 25 -j DROP
/sbin/service iptables save
Để khóa outgoing port 279 đối với IP 10.7.3.5, sử dụng lệnh sau:
 
/sbin/iptables -A OUTPUT -p tcp -d 10.7.3.5 --dport 279 -j DROP
/sbin/service iptables save
Chúc các bạn thành công!

Thứ Sáu, 14 tháng 10, 2016

Backup plesk và restore trên linux, restore sang server mới

1. Backup plesk
đăng nhập plesk với quyền admin
chọn: Tools & settings > Backup manager để tạo backup
sau khi backup xong bạn có thể tải file backup về hoặc vào thư mục lưu file backup để xem.
thư mục lưu file backup: /var/lib/psa/dumps

nếu tải file backup về và đưa sang máy khác khi đó file sẽ ở dạng .tar khi đưa sang server khác bạn phải bung file này ra thư mục /var/lib/psa/dumps. ví dụ backup_info_1610111447.xml.tar

Sau khi bung file backup ra thì vào mục Tools & settings > Backup manager sẽ thấy được file backup.

2. Restore plesk
Thư mục để chạy lệnh restore plesk thường là: /usr/local/psa/bin/pleskrestore
Chạy lệnh sau để restore:

[root@localhost ~]# /usr/local/psa/bin/pleskrestore --restore /var/lib/psa/dumps/backup_file_name.tar -level server

ví dụ: [root@localhost ~]# /usr/local/psa/bin/pleskrestore --restore /var/lib/psa/dumps/backup_info_1610111447.xml.tar -level server

To restore entire server:
pleskrestore restore <backup repository root>/<server>.xml -level server

Note: When the whole server backup is restored, license keys are not restored by default. To restore license keys along with other server content, use the -license option in your restore command.

To restore entire server with license keys:
pleskrestore --restore <backup repository root>/<server>.xml -level server -license


To restore all domains belonging to a reseller:
pleskrestore --restore <backup repository root>/resellers/<reseller ID>/<reseller>.xml -level domains

To restore all reseller accounts:

pleskrestore --restore <backup repository root>/<server>.xml -level resellers

To restore two resellers from a server backup:
pleskrestore --restore <backup repository root>/<server>.xml -level resellers -filter list:JohnDoe,JaneDoe
or

pleskrestore --restore <Upload directory>/<server backup name>.tar -level resellers -filter list:JohnDoe,JaneDoe


To restore two domains owned by Plesk admin:
pleskrestore --restore <backup repository root>/<server>.xml -level domains -filter list:example.com,sample.org


To restore client's several domains defined in a file:

pleskrestore --restore <backup repository root>/resellers/SandyLee/clients/JaneDow/<client>.xml -level domains -filter <path to the file>/restore-domains.txt

MẸO: nếu báo lỗi IP ...
làm như sau vào phần quản trị database https://103.211.212.53:8443/domains/databases/phpMyAdmin/

chọn database "psa" tìm table ip_pool chỉnh sửa Exclusive thành shared

Sau đó restore lại là OK