What to do if your Rails application cannot connect to Mysql?

When I use my Mac to continue developing my Rails application using Mysql as the database system. It first initialized and developed in Ubuntu.

After bundling tasks, I move to rake db:create to initialize my databases for development and test environment. But the problem comes out:

Mysql2::Error: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

Ok, cd to the

/var/run/mysqld/

Oh, there’s no mysqld.sock there. Ok, so there must be the error as above error message.

So, I was wondering where mysqld.sock is in my computer? I was installed Mysql through brew and able to connect to Mysql by Mysql Workbench with no problem. So let’s see some variables. Enter to the terminal:

mysqladmin -p variables | grep socket

Provide the password, and then you will see something like:

screen-shot-2016-09-24-at-10-16-58-pm

| performance_schema_max_socket_classes                    | 10

| performance_schema_max_socket_instances                  | -1

| socket                                                   | /tmp/mysql.sock|

Wow, there comes in the socket line the mysql.sock file location

We have to connect through it.

After some research, I know that Rails settings the socket in the filedatabase.yml.

So, it’s EZ now, just replace the new found path.

It’s ok now. I can continue my work.

Advertisements

Fixing rbenv not update ruby system (rbenv version different from ruby -v)

Recently, I faced with the problem of not syncing ruby version with my Mac.

My project requires ruby version >= 2.2.2 but default version is 2.0.0.

I haved installed ruby 2.3.1  on my rbenv (ruby version manager) and set it global, but when i bundle install, there comes some error liked:

activesupport-5.0.0 requires ruby version >= 2.2.2, which is incompatible with the current
version, ruby 2.0.0p648

Even rbenv version shows:

2.3.1 (set by /Users/duchoang/.ruby-version)

I checked back with ruby -v, it shows 2.0.0. Oh shit what happened?

I searched and they said that I have to install ruby-build, ok but after that I reallized that it’s not the cause:

brew install rbenv ruby-build

rbenv rehash

I reallized that I’ve switched to zsh, so instead of ~/.bash_profile I need to rerun the following command to ~/.zshrc:

$ echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.zshrc
$ source ~/.zshrc

done.

Enable system-wide inverse/reverse/natural scrolling on Ubuntu

1. Get your mouse device id by running the following in a terminal, you have to choose the right one:

xinput list

Take that number you got (just the number after “id=”) and replace “{device id}” with that number in the following command:

xinput list-props {device id} | grep "Scrolling Distance"

In my case:

xinput list-props 6 | grep "Scrolling Distance"

This will output something like below, remember that “Scrolling Distance” is case-sensitive. If nothing is outputted, you’ve chosen a wrong device id, go back to step 1 and choose another one:

Evdev Scrolling Distance (270): 1, 1, 1

So 270 is your property number, 1, 1, 1 is your scrolling distance, remember this to use later.

It is case sensitive unless you use -i in the grep command. Write down the numbers you find in the output from that command (in my case it was the number 1, shown three times and separated by commas). You will use the negative values of the numbers you get in your output. Also, make sure to write down the property number (it will be in parentheses in the output; in my case, it was (270) in Ubuntu and (273) in Fedora).

Note: If you get no output containing the property “Scrolling Distance” this method will not work for you and you will need to stop here and skip to an alternate way.

2. Create a natural scrolling config file by running the following command in your open terminal:

sudo touch /usr/share/X11/xorg.conf.d/20-natural-scrolling.conf

3. Now, config the natural scrolling profile by running the following command (you can use your favorite text editor instead of nano but I use nano):

sudo nano /usr/share/X11/xorg.conf.d/20-natural-scrolling.conf

In the file you have opened in your preferred text editor, paste the following (but be sure to change the numbers to the same comma-separated numbers you got from step 3; in my case, the number was 1 so in order to make the scroll inverse, I will change 1 to -1):

Section "InputClass"
        Identifier "Natural Scrolling"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Option "VertScrollDelta" "-1"
        Option "HorizScrollDelta" "-1"
        Option "DialDelta" "-1"
EndSection

Save the file (Ctrl+O) and exit (Ctrl+X) the text editor. No need for a reboot. Just issue the following command (substituting the property number and the negatives of the numbers you got in the third step, and the device id you got from the second step):

xinput set-prop {device id} {property number} -1 -1 -1

In my case:

xinput set-prop 6 270 -1 -1 -1

Refer from:  Ask Ubuntu, UbuntuWiki

 

What I do right after installing Ubuntu

Screen Shot 2017-06-07 at 8.50.40 PM

  1. Install update through “Software Updater”
  2. Minimize on click:
gsettings set org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/ launcher-minimize-window true
  1. Move launcher to bottom:
gsettings set com.canonical.Unity.Launcher launcher-position Bottom
  1. Install Arc theme:
sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/Horst3180/xUbuntu_16.04/ /' >> /etc/apt/sources.list.d/arc-theme.list"

sudo apt-get update && sudo apt-get install arc-theme

wget http://download.opensuse.org/repositories/home:Horst3180/xUbuntu_16.04/Release.key
sudo apt-key add - < Release.key
  1. Install “Super Flat” icon pack:
http://gnome-look.org/content/show.php/Super+flat+remix+icon+theme?content=169073
sudo add-apt-repository ppa:noobslab/icons
sudo apt-get update
sudo apt-get install flat-remix-icons
  1. Install “Unity Tweak Tool”:
apt://unity-tweak-tool

Or

sudo apt install unity-tweak-tool
  1. Change icon size to 22 (Setting > Appearance), scale for menu and title bar to 0.875 (Setting > Display)
  2. Install Java:
sudo apt-get install default-jre
  1. Show your name in the Top menu bar:
gsettings set com.canonical.indicator.session show-real-name-on-panel true
  1. Unikey install:
sudo add-apt-repository ppa:ubuntu-vn/ppa

sudo apt-get update

sudo apt-get install ibus-unikey

ibus restart

=> Add ibus-Unikey in "Text Entry" application
  1. Japanese input install:
sudo apt-get install ibus ibus-unikey ibus-anthy

nano ~/.bashrc

After that, add these lines to the end of the file ~/.bashrc: 

export GTK_IM_MODULE=ibus

export XMODIFIERS=@im=ibus

export QT_IM_MODULE=ibus

-> Save ( ctrl-x, y, enter)

Logout

Add anthy in "Text Entry" application

Better color for your Mac Terminal

Run this from terminal:

open ~/.bash_profile

Add these lines to the end:

export TERM="xterm-color" 
export PS1='\[\e[0;33m\]\u\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$ '

Then restart your Terminal to see the changes, now you’re done.

For more customizations, refer to the post: http://osxdaily.com/2012/02/21/add-color-to-the-terminal-in-mac-os-x/

Or, you could try some alternatives:

  • Cathode
  • iTerm2
  • Terminator
  • MacTerm

Eisenhower Box: Làm thế nào để năng suất cao hơn

Chiến lược hành động và tổ chức công việc của Eisenhower rất đơn giản. Sử dụng ma trận quyết định dưới đây, bạn sẽ chia hành động của mình dựa trên 4 khả năng:

  1. Khẩn cấp và quan trọng (những công việc bạn sẽ làm ngay lập tức)
  2. Quan trọng nhưng không khẩn cấp (những công việc bạn sẽ lên lịch để làm sau)
  3. Khẩn cấp nhưng không quan trọng (những công việc bạn sẽ ủy thác cho người khác)
  4. Không khẩn cấp cũng chẳng quan trọng (những công việc bạn sẽ loại bỏ.)

Điều tuyệt vời về ma trận này là bạn có thể sử dụng cho các kế hoạch toàn diện (“Tôi nên dành thời gian mỗi tuần như thế nào?”) hay những kế hoạch nhỏ hàng ngày (“Tôi nên làm gì hôm nay?”)

Dưới đây là ví dụ về Eisenhower Box của tôi:

eisenhower-matrix
Điều quan trọng hiếm khi khẩn cấp và điều khẩn cấp thì hiếm khi quan trọng. -Dwight Eisenhower

Những công việc khẩn cấp là những thứ bạn hay gặp như email, cuộc gọi, tin nhắn và câu chuyện tin tức. Trong khi đó, theo lời của Brett McKay: “Công việc quan trọng là những thứ đóng góp cho sứ mệnh, giá trị và mục tiêu dài hạn.”

Loại bỏ trước khi tối ưu hóa

Cách nhanh nhất để hoàn thành công việc là loại bỏ nó hoàn toàn. Tôi không nói rằng bạn nên lười biếng nhưng bạn nên mạnh dạn loại bỏ bất kỳ công việc nào không hướng tới nhiệm vụ, giá trị và mục tiêu của bạn.

Chúng ta nên tự hỏi “Tôi có phải thực sự làm điều này không?” trước khi tìm cách tối ưu hóa. Bạn sẽ cảm thấy mình chỉ cần làm thêm giờ một chút là có thể hoàn thành công việc, bạn thoải mái khi làm đều này. Nhưng đó không phải là cách sử dụng thời gian tốt nhất.

Như Tim Ferriss nói, “Bận rộn là một dạng của sự lười biếng, lười suy nghĩ và hành động bừa bãi.”

Phương pháp Eisenhower sẽ khiến bạn xem xét xem việc này có thực sự cần thiết, để chuyển vào ô “Xóa bỏ” hay không. Thật sự mà nói, nếu bạn loại bỏ được hết những công việc lãng phí thời gian mỗi ngày thì rồi bạn cũng chẳng cần những lời khuyên làm việc hiệu quả nữa.

Nếu bạn thấy khó loại bỏ những hoạt động lãng phí thời gian khi chưa chắc chắn, hãy tự hỏi mình:

– Tôi đang làm việc hướng tới điều gì?

– Giá trị cốt lõi trong cuộc sống của tôi là gì?

Trả lời những câu hỏi này sẽ giúp làm rõ những công việc nhất định trong cuộc sống. Lựa chọn những việc cần làm hay cần loại bỏ trở nên dễ dàng hơn khi bạn biết rõ những gì quan trọng với mình.

Nguồn: Cafebiz

Create a shortcut to open Terminal in Mac OSX

Launch Automator. Create a document of type “Service”. In the document, add a “Run AppleScript” action. Here’s the AppleScript to paste into the action:

on run {input, parameters}
    tell application "Terminal"
        do script ""
        activate
    end tell
    return input
end run

Set the “Service receives” popup to “no input”. It should look like this overall:

Service definition

Save the document with the name “New Terminal”. Then go to the Automator menu (or the app menu in any running application) and open the Services sub menu. You should now see the “New Terminal” service:

New Terminal service menu item

If you click it, Terminal should open a new window.

To assign a keyboard shortcut to it, choose the “Services Preferences…” item from that menu. (Or launch System Preferences, choose the Keyboard pane, then choose the Shortcuts tab, then choose Services from the left-hand list.) Scroll to the bottom of the right-hand list and find the New Terminal service. Click the right end of the New Terminal row and press your preferred keyboard shortcut:

New Terminal shortcut

Now you should be able to press your keyboard shortcut in most circumstances to get a new terminal window.