ini Nginx + nodejs + socket.io websockets
Nginx + nodejs + socket.io websockets
site.conf
upstream some_upsteram_com {
server 127.0.0.1:3000;
keepalive 15;
}
server {
listen 80;
root /home/user/www/public;
index index.html index.htm;
access_log /home/user/logs/site-access.log;
error_log /home/user/logs/site-error.log;
server_name site.com www.site.com;
large_client_header_buffers 8 32k;
location / {
try_files $uri @nodejs;
}
# Important! Serve client socket.io file as normal static file, e.g. /js/libs/socket.io/socket.io.min.js
location /socket.io/ {
proxy_pass http://some_upsteram_com;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_redirect off;
proxy_buffers 8 32k;
proxy_buffer_size 64k;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
}
location @nodejs {
proxy_pass http://some_upsteram_com;
}
location ~ /\. {
deny all;
}
}
nginx.conf
# Add to nginx.conf http section
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
ini MacType.ini
MacType.ini
MacType.ini
404: Not Found
ini tmux.conf
tmux_cheatsheet.markdown
# tmux cheatsheet
change binding of C-b
in ~/.tmux.conf:
set -g prefix Ctrl-a
As configured in [my dotfiles](https://github.com/henrik/dotfiles/blob/master/tmux.conf).
start new:
tmux
use 256 color
tmux -2
start new with session name:
tmux new -s myname
attach:
tmux a # (or at, or attach)
attach to named:
tmux a -t myname
list sessions:
tmux ls
kill session:
tmux kill-session -t myname
In tmux, hit the prefix `ctrl+b` and then:
## Sessions
:new<CR> new session
s list sessions
$ name session
## Windows (tabs)
c new window
, name window
w list windows
f find window
& kill window
. move window - prompted for a new number
:movew<CR> move window to the next unused number
## Panes (splits)
% horizontal split
" vertical split
o swap panes
q show pane numbers
x kill pane
⍽ space - toggle between layouts
{ Swap the current pane with the previous pane.
} Swap the current pane with the next pane.
## Window/pane surgery
:joinp -s :2<CR> move window 2 into a new pane in the current window
:joinp -t :1<CR> move the current pane into a new pane in window 1
* [Move window to pane](http://unix.stackexchange.com/questions/14300/tmux-move-window-to-pane)
* [How to reorder windows](http://superuser.com/questions/343572/tmux-how-do-i-reorder-my-windows)
## Misc
d detach
t big clock
? list shortcuts
: prompt
Resources:
* [cheat sheet](http://cheat.errtheblog.com/s/tmux/)
Notes:
* You can cmd+click URLs to open in iTerm.
TODO:
* Conf copy mode to use system clipboard. See PragProg book.
tmux.conf
set -g prefix C-a
setw -g mode-keys vi
unbind [
bind Escape copy-mode
unbind p
bind p paste-buffer
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection
ini tmux配置文件。
tmux配置文件。
.tmux.conf
# Fix pbcopy http://superuser.com/questions/231130/unable-to-use-pbcopy-while-in-tmux-session
set-option -g default-command "reattach-to-user-namespace -l bash"
set -g base-index 1 # ctrl+a + 1 to switch to first tab
set-option -g renumber-windows on # renumber/pack windows into free slots when one is closed
new-session # Enforce a single tmux session
set -g history-limit 100001 # Large scroll buffer
bind-key r source-file ~/.tmux.conf # Quick reload conf
set-window-option -g automatic-rename on
set-option -g set-titles on
# - or \ will open a horizontal or vertical split pane
bind-key \ split-window -h
bind-key - split-window -v
# hjkl movement keys for panes
bind-key h select-pane -L
bind-key j select-pane -D
bind-key k select-pane -U
bind-key l select-pane -R
# Vim style keys
set -g status-keys vi
setw -g mode-keys vi
# No idea...
setw -g monitor-activity on
# Recommendations from http://justinlilly.com/dotfiles/tmux.html
set-option -g status-utf8 on
set -g status-bg default
set -g status-fg default
set -g status-left-length 200
set -g status-left '#[fg=red,bright]#(whoami)#[fg=yellow]@#[fg=cyan,bright]#h'
set -g status-right '#[fg=yellow,bright]%Y-%m-%d %H:%M'
set -g window-status-current-attr bold
set -g status-justify centre
# Not sure why needed...
set -g status-interval 60
set -g status-left-length 30
# Join and split windows and panes http://superuser.com/questions/470130/tmux-prompt-to-select-window-for-join-pane-while-still-seeing-window-numbers-an
bind < split-window -h \; choose-window 'kill-pane ; join-pane -hs %%'
bind > break-pane -d
# No delay for escape key press
set -sg escape-time 0
# Shift arrow to switch windows
bind -n S-Left previous-window
bind -n S-Right next-window
ini uncrustify_obj_c.cfg
uncrustify_obj_c.cfg
# Uncrustify 0.60
newlines = auto
input_tab_size = 4
output_tab_size = 4
string_escape_char = 92
string_escape_char2 = 0
tok_split_gte = false
utf8_bom = ignore
utf8_byte = false
utf8_force = false
indent_columns = 4
indent_continue = 0
indent_with_tabs = 0
indent_cmt_with_tabs = false
indent_align_string = false
indent_xml_string = 0
indent_brace = 0
indent_braces = false
indent_braces_no_func = false
indent_braces_no_class = false
indent_braces_no_struct = false
indent_brace_parent = false
indent_namespace = false
indent_namespace_level = 0
indent_namespace_limit = 0
indent_extern = false
indent_class = false
indent_class_colon = false
indent_ctor_init_leading = 2
indent_ctor_init = 0
indent_else_if = false
indent_var_def_blk = 0
indent_var_def_cont = false
indent_func_def_force_col1 = false
indent_func_call_param = false
indent_func_def_param = false
indent_func_proto_param = false
indent_func_class_param = false
indent_func_ctor_var_param = false
indent_template_param = false
indent_func_param_double = false
indent_func_const = 0
indent_func_throw = 0
indent_member = 0
indent_sing_line_comments = 0
indent_relative_single_line_comments = false
indent_switch_case = 4
indent_case_shift = 0
indent_case_brace = 0
indent_col1_comment = false
indent_label = 1
indent_access_spec = 1
indent_access_spec_body = false
indent_paren_nl = false
indent_paren_close = 0
indent_comma_paren = false
indent_bool_paren = false
indent_first_bool_expr = false
indent_square_nl = false
indent_preserve_sql = false
indent_align_assign = false
indent_oc_block = true
indent_oc_block_msg = 0
indent_oc_msg_colon = 4
sp_arith = add
sp_assign = add
sp_cpp_lambda_assign = ignore
sp_cpp_lambda_paren = ignore
sp_assign_default = ignore
sp_before_assign = ignore
sp_after_assign = ignore
sp_enum_assign = ignore
sp_enum_before_assign = ignore
sp_enum_after_assign = ignore
sp_pp_concat = add
sp_pp_stringify = ignore
sp_before_pp_stringify = ignore
sp_bool = add
sp_compare = add
sp_inside_paren = remove
sp_paren_paren = remove
sp_balance_nested_parens = false
sp_paren_brace = force
sp_before_ptr_star = force
sp_before_unnamed_ptr_star = ignore
sp_between_ptr_star = remove
sp_after_ptr_star = remove
sp_after_ptr_star_func = ignore
sp_ptr_star_paren = ignore
sp_before_ptr_star_func = ignore
sp_before_byref = ignore
sp_before_unnamed_byref = ignore
sp_after_byref = ignore
sp_after_byref_func = ignore
sp_before_byref_func = ignore
sp_after_type = force
sp_before_template_paren = ignore
sp_template_angle = ignore
sp_before_angle = force
sp_inside_angle = remove
sp_after_angle = force
sp_angle_paren = ignore
sp_angle_word = ignore
sp_angle_shift = add
sp_permit_cpp11_shift = false
sp_before_sparen = force
sp_inside_sparen = remove
sp_inside_sparen_close = ignore
sp_inside_sparen_open = ignore
sp_after_sparen = add
sp_sparen_brace = add
sp_invariant_paren = ignore
sp_after_invariant_paren = ignore
sp_special_semi = ignore
sp_before_semi = remove
sp_before_semi_for = remove
sp_before_semi_for_empty = ignore
sp_after_semi = add
sp_after_semi_for = force
sp_after_semi_for_empty = ignore
sp_before_square = remove
sp_before_squares = remove
sp_inside_square = remove
sp_after_comma = add
sp_before_comma = remove
sp_paren_comma = force
sp_before_ellipsis = ignore
sp_after_class_colon = force
sp_before_class_colon = force
sp_before_case_colon = remove
sp_after_operator = ignore
sp_after_operator_sym = ignore
sp_after_cast = remove
sp_inside_paren_cast = remove
sp_cpp_cast_paren = ignore
sp_sizeof_paren = remove
sp_after_tag = ignore
sp_inside_braces_enum = ignore
sp_inside_braces_struct = ignore
sp_inside_braces = add
sp_inside_braces_empty = remove
sp_type_func = force
sp_func_proto_paren = remove
sp_func_def_paren = remove
sp_inside_fparens = remove
sp_inside_fparen = remove
sp_inside_tparen = remove
sp_after_tparen_close = ignore
sp_square_fparen = ignore
sp_fparen_brace = force
sp_func_call_paren = remove
sp_func_call_paren_empty = ignore
sp_func_call_user_paren = remove
sp_func_class_paren = ignore
sp_return_paren = ignore
sp_attribute_paren = ignore
sp_defined_paren = ignore
sp_throw_paren = ignore
sp_after_throw = ignore
sp_catch_paren = force
sp_version_paren = ignore
sp_scope_paren = ignore
sp_macro = ignore
sp_macro_func = ignore
sp_else_brace = force
sp_brace_else = force
sp_brace_typedef = ignore
sp_catch_brace = force
sp_brace_catch = force
sp_finally_brace = force
sp_brace_finally = force
sp_try_brace = force
sp_getset_brace = ignore
sp_before_dc = ignore
sp_after_dc = ignore
sp_d_array_colon = ignore
sp_not = remove
sp_inv = remove
sp_addr = remove
sp_member = remove
sp_deref = remove
sp_sign = remove
sp_incdec = remove
sp_before_nl_cont = add
sp_after_oc_scope = force
sp_after_oc_colon = remove
sp_before_oc_colon = remove
sp_after_oc_dict_colon = ignore
sp_before_oc_dict_colon = ignore
sp_after_send_oc_colon = remove
sp_before_send_oc_colon = remove
sp_after_oc_type = remove
sp_after_oc_return_type = remove
sp_after_oc_at_sel = remove
sp_after_oc_at_sel_parens = force
sp_inside_oc_at_sel_parens = remove
sp_before_oc_block_caret = force
sp_after_oc_block_caret = remove
sp_after_oc_msg_receiver = ignore
sp_after_oc_property = force
sp_cond_colon = force
sp_cond_question = force
sp_case_label = ignore
sp_range = ignore
sp_after_for_colon = ignore
sp_before_for_colon = ignore
sp_extern_paren = ignore
sp_cmt_cpp_start = ignore
sp_endif_cmt = ignore
sp_after_new = ignore
sp_before_tr_emb_cmt = ignore
sp_num_before_tr_emb_cmt = 0
sp_annotation_paren = ignore
align_keep_tabs = false
align_with_tabs = false
align_on_tabstop = false
align_number_left = false
align_func_params = true
align_same_func_call_params = false
align_var_def_span = 0
align_var_def_star_style = 0
align_var_def_amp_style = 0
align_var_def_thresh = 0
align_var_def_gap = 0
align_var_def_colon = false
align_var_def_attribute = false
align_var_def_inline = false
align_assign_span = 0
align_assign_thresh = 0
align_enum_equ_span = 4
align_enum_equ_thresh = 0
align_var_struct_span = 0
align_var_struct_thresh = 0
align_var_struct_gap = 0
align_struct_init_span = 0
align_typedef_gap = 0
align_typedef_span = 0
align_typedef_func = 0
align_typedef_star_style = 0
align_typedef_amp_style = 0
align_right_cmt_span = 0
align_right_cmt_mix = false
align_right_cmt_gap = 0
align_right_cmt_at_col = 0
align_func_proto_span = 0
align_func_proto_gap = 0
align_on_operator = false
align_mix_var_proto = false
align_single_line_func = false
align_single_line_brace = false
align_single_line_brace_gap = 0
align_oc_msg_spec_span = 0
align_nl_cont = false
align_pp_define_together = false
align_pp_define_gap = 0
align_pp_define_span = 0
align_left_shift = true
align_oc_msg_colon_span = 1
align_oc_msg_colon_first = false
align_oc_decl_colon = true
nl_collapse_empty_body = false
nl_assign_leave_one_liners = false
nl_class_leave_one_liners = false
nl_enum_leave_one_liners = false
nl_getset_leave_one_liners = false
nl_func_leave_one_liners = false
nl_if_leave_one_liners = false
nl_oc_msg_leave_one_liner = false
nl_start_of_file = remove
nl_start_of_file_min = 0
nl_end_of_file = remove
nl_end_of_file_min = 0
nl_assign_brace = remove
nl_assign_square = ignore
nl_after_square_assign = ignore
nl_func_var_def_blk = 0
nl_typedef_blk_start = 0
nl_typedef_blk_end = 0
nl_typedef_blk_in = 0
nl_var_def_blk_start = 0
nl_var_def_blk_end = 0
nl_var_def_blk_in = 0
nl_fcall_brace = add
nl_enum_brace = add
nl_struct_brace = add
nl_union_brace = add
nl_if_brace = add
nl_brace_else = add
nl_elseif_brace = add
nl_else_brace = add
nl_else_if = remove
nl_brace_finally = add
nl_finally_brace = force
nl_try_brace = add
nl_getset_brace = add
nl_for_brace = add
nl_catch_brace = add
nl_brace_catch = add
nl_while_brace = add
nl_scope_brace = ignore
nl_unittest_brace = ignore
nl_version_brace = ignore
nl_using_brace = add
nl_brace_brace = add
nl_do_brace = add
nl_brace_while = add
nl_switch_brace = add
nl_multi_line_cond = false
nl_multi_line_define = false
nl_before_case = true
nl_before_throw = ignore
nl_after_case = false
nl_case_colon_brace = ignore
nl_namespace_brace = add
nl_template_class = add
nl_class_brace = add
nl_class_init_args = ignore
nl_func_type_name = remove
nl_func_type_name_class = ignore
nl_func_scope_name = ignore
nl_func_proto_type_name = remove
nl_func_paren = remove
nl_func_def_paren = ignore
nl_func_decl_start = remove
nl_func_def_start = ignore
nl_func_decl_start_single = ignore
nl_func_def_start_single = ignore
nl_func_decl_args = ignore
nl_func_def_args = ignore
nl_func_decl_end = remove
nl_func_def_end = ignore
nl_func_decl_end_single = ignore
nl_func_def_end_single = ignore
nl_func_decl_empty = ignore
nl_func_def_empty = ignore
nl_oc_msg_args = false
nl_fdef_brace = force
nl_return_expr = remove
nl_after_semicolon = true
nl_after_brace_open = true
nl_after_brace_open_cmt = true
nl_after_vbrace_open = false
nl_after_vbrace_open_empty = false
nl_after_brace_close = true
nl_after_vbrace_close = false
nl_brace_struct_var = ignore
nl_define_macro = false
nl_squeeze_ifdef = false
nl_before_if = ignore
nl_after_if = ignore
nl_before_for = ignore
nl_after_for = ignore
nl_before_while = ignore
nl_after_while = ignore
nl_before_switch = ignore
nl_after_switch = ignore
nl_before_do = ignore
nl_after_do = ignore
nl_ds_struct_enum_cmt = false
nl_ds_struct_enum_close_brace = false
nl_class_colon = ignore
nl_create_if_one_liner = false
nl_create_for_one_liner = false
nl_create_while_one_liner = false
pos_arith = ignore
pos_assign = ignore
pos_bool = ignore
pos_compare = ignore
pos_conditional = ignore
pos_comma = ignore
pos_class_comma = ignore
pos_class_colon = ignore
code_width = 0
ls_for_split_full = false
ls_func_split_full = false
ls_code_width = false
nl_max = 5
nl_after_func_proto = 1
nl_after_func_proto_group = 2
nl_after_func_body = 2
nl_after_func_body_class = 0
nl_after_func_body_one_liner = 0
nl_before_block_comment = 0
nl_before_c_comment = 0
nl_before_cpp_comment = 0
nl_after_multiline_comment = false
nl_after_struct = 0
nl_after_class = 0
nl_before_access_spec = 0
nl_after_access_spec = 1
nl_comment_func_def = 0
nl_after_try_catch_finally = 0
nl_around_cs_property = 0
nl_between_get_set = 0
nl_property_brace = ignore
eat_blanks_after_open_brace = true
eat_blanks_before_close_brace = true
nl_remove_extra_newlines = 0
nl_before_return = false
nl_after_return = false
nl_after_annotation = ignore
nl_between_annotation = ignore
mod_full_brace_do = add
mod_full_brace_for = add
mod_full_brace_function = add
mod_full_brace_if = add
mod_full_brace_if_chain = false
mod_full_brace_nl = 0
mod_full_brace_while = add
mod_full_brace_using = add
mod_paren_on_return = ignore
mod_pawn_semicolon = false
mod_full_paren_if_bool = false
mod_remove_extra_semicolon = true
mod_add_long_function_closebrace_comment = 0
mod_add_long_switch_closebrace_comment = 0
mod_add_long_ifdef_endif_comment = 0
mod_add_long_ifdef_else_comment = 0
mod_sort_import = false
mod_sort_using = false
mod_sort_include = false
mod_move_case_break = false
mod_case_brace = ignore
mod_remove_empty_return = false
cmt_width = 0
cmt_reflow_mode = 0
cmt_indent_multi = true
cmt_c_group = false
cmt_c_nl_start = false
cmt_c_nl_end = false
cmt_cpp_group = false
cmt_cpp_nl_start = false
cmt_cpp_nl_end = false
cmt_cpp_to_c = false
cmt_star_cont = false
cmt_sp_before_star_cont = 0
cmt_sp_after_star_cont = 0
cmt_multi_check_last = true
cmt_insert_file_header = ""
cmt_insert_file_footer = ""
cmt_insert_func_header = ""
cmt_insert_class_header = ""
cmt_insert_oc_msg_header = ""
cmt_insert_before_preproc = false
pp_indent = ignore
pp_indent_at_level = false
pp_indent_count = 1
pp_space = ignore
pp_space_count = 0
pp_indent_region = 0
pp_region_indent_code = false
pp_indent_if = 0
pp_if_indent_code = false
pp_define_at_level = false