Inspect a website like a string in Ruby
unset -f inspect_url function inspect_url() { /usr/bin/curl -L -s --max-time 10 "${@}" | ruby -n -e 'p $_.to_s' return 0 } inspect_url http://www.ruby-forum.com
DZone Snippets > ntk > shell
12382 users tagging and storing useful source code snippets
Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world
unset -f inspect_url function inspect_url() { /usr/bin/curl -L -s --max-time 10 "${@}" | ruby -n -e 'p $_.to_s' return 0 } inspect_url http://www.ruby-forum.com
# See: # - http://en.wikipedia.org/wiki/Nginx # - http://wiki.codemongers.com/NginxGettingStarted # - http://wiki.codemongers.com/NginxInstallOptions # - http://wiki.codemongers.com/NginxCommandLine # - http://wiki.codemongers.com/NginxConfiguration export PATH="/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin" mkdir -p ~/Desktop/Nginx cd ~/Desktop/Nginx curl -L -O http://sysoev.ru/nginx/nginx-0.7.2.tar.gz tar -xzf nginx-0.7.2.tar.gz curl -L -O http://downloads.sourceforge.net/pcre/pcre-7.7.tar.gz tar -xzf pcre-7.7.tar.gz cd ~/Desktop/Nginx/nginx-0.7.2 ./configure --help ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/sbin --with-debug --with-http_ssl_module --with-pcre=../pcre-7.7 make sudo make install which nginx otool -L /usr/local/sbin/nginx open /usr/local/nginx open -e /usr/local/nginx/conf/nginx.conf nginx -v nginx -V sudo nginx # start server sudo nginx -t open http://localhost:80 open http://localhost:80/50x.html sudo nano /usr/local/nginx/conf/nginx.conf # editing ... server { listen 8080; ... # reload configuration sudo kill -HUP `cat /usr/local/nginx/logs/nginx.pid` # stop server sudo kill -15 $(ps -auxxx | egrep "[n]ginx.*master" | awk '{ print $2 }') 2>/dev/null
unset -f webrick_local function webrick_local() { declare root_dir="${HOME}/Desktop/www" /bin/mkdir -p "${root_dir}/WEBrickLog" /bin/chmod 0754 "${root_dir}" "${root_dir}/WEBrickLog" /usr/bin/touch "${root_dir}/WEBrickLog/webrick.pid" "${root_dir}/WEBrickLog/webrick_ruby.pid" /bin/chmod 0644 "${root_dir}/WEBrickLog/webrick.pid" "${root_dir}/WEBrickLog/webrick_ruby.pid" # /usr/bin/touch "${root_dir}/index.html" # /bin/chmod 0754 "${root_dir}/index.html" /usr/local/bin/ruby <<-HEREDOC require 'webrick' require 'webrick/accesslog' include WEBrick require 'thread' require 'pp' root_dir = "${root_dir}" http_dir = File.expand_path(root_dir) File.open(http_dir + "/WEBrickLog/webrick_ruby.pid", "w") do |f| f.puts(Process.pid) end # cf. http://microjet.ath.cx/webrickguide/html/Logging.html webrick_log_file = File.expand_path(http_dir + "/WEBrickLog/webrick.log") #webrick_log_file = '/dev/null' # disable logging webrick_logger = WEBrick::Log.new(webrick_log_file, WEBrick::Log::DEBUG) access_log_stream = webrick_logger access_log = [[ access_log_stream, WEBrick::AccessLog::COMBINED_LOG_FORMAT ]] system_mime_table = WEBrick::HTTPUtils::load_mime_types('/private/etc/httpd/mime.types.default') system_mime_table.store('rhtml', 'text/html') # add a mime type for .rhtml files system_mime_table.store('php', 'text/html') system_mime_table.store('rb', 'text/plain') system_mime_table.store('pid', 'text/plain') #pp system_mime_table.sort_by { |k,v| k } server = WEBrick::HTTPServer.new( :BindAddress => "localhost", :Port => 9090, :DocumentRoot => http_dir, :FancyIndexing => true, :MimeTypes => system_mime_table, :Logger => webrick_logger, :AccessLog => access_log ) server.config.store(:DirectoryIndex, server.config[:DirectoryIndex] << "default.htm") #pp server.config # cf. http://snippets.dzone.com/posts/show/5208 class TimeServlet < HTTPServlet::AbstractServlet def do_GET(req, res) res['Content-Type'] = 'text/html' res.status = 200 res.body = "<html>Time: #{Time.now.to_s}</html>" + "\n" end # cf. http://www.hiveminds.co.uk/node/244, published under the # GNU Free Documentation License, http://www.gnu.org/copyleft/fdl.html @@instance = nil @@instance_creation_mutex = Mutex.new def self.get_instance(config, *options) #pp @@instance @@instance_creation_mutex.synchronize { @@instance = @@instance || self.new(config, *options) } end end # cf. http://ttripp.blogspot.com/2007/01/fun-with-http.html class PostDumper < WEBrick::HTTPServlet::AbstractServlet # Reload file for each request, instantly # updating the server with code changes # without needing a restart. =begin def PostDumper.get_instance( config, *options ) load __FILE__ PostDumper.new config, *options end =end # cf. http://www.hiveminds.co.uk/node/244, published under the # GNU Free Documentation License, http://www.gnu.org/copyleft/fdl.html @@instance = nil @@instance_creation_mutex = Mutex.new def self.get_instance(config, *options) #pp @@instance @@instance_creation_mutex.synchronize { @@instance = @@instance || self.new(config, *options) } end def do_GET( request, response ) response.status = 200 response['Content-Type'] = "text/plain" response.body = dump_request( request ) end def do_POST( request, response ) response.status = 200 response['Content-Type'] = "text/plain" response.body = dump_request( request ) response.body << request.body end def dump_request( request ) request.request_line << "\r\n" << request.raw_header.join( "" ) << "\r\n" end end server.mount("/dump", PostDumper) server.mount("/time", TimeServlet, {:FancyIndexing=>true}) # handle signals %w(INT).each do |signal| trap(signal) { server.shutdown } end server.start HEREDOC return 0 } export -f webrick_local # start WEBrick alias alias webrick='swr' # start WEBrick unset -f swr function swr() { declare webrick_pid_file="${HOME}/Desktop/www/WEBrickLog/webrick.pid" if [[ -e "${webrick_pid_file}" ]]; then echo "WEBrick already started!"; return 1; fi /bin/bash -c "webrick_local" & declare WEBRICKPID=$! mkdir -p "${HOME}/Desktop/www/WEBrickLog" echo $WEBRICKPID > "${HOME}/Desktop/www/WEBrickLog/webrick.pid" return 0 } export -f swr # quit WEBrick unset -f qwr function qwr() { declare webrick_pid_file="${HOME}/Desktop/www/WEBrickLog/webrick.pid" declare webrick_ruby_pid_file="${HOME}/Desktop/www/WEBrickLog/webrick_ruby.pid" if [[ ! -e "${webrick_pid_file}" ]]; then echo "no such file: ${webrick_pid_file}"; return 1; fi declare PIDW=$(cat "${webrick_pid_file}" 2>/dev/null) declare PIDR=$(cat "${webrick_ruby_pid_file}" 2>/dev/null) kill -INT $PIDW 2>/dev/null || echo "no such PIDW: ${PIDW}" kill -INT $PIDR 2>/dev/null || echo "no such PIDR: ${PIDR}" rm -f "${webrick_pid_file}" "${webrick_ruby_pid_file}" return 0 } export -f qwr # quit WEBrick; cf. Job Control Commands, http://tldp.org/LDP/abs/html/x8816.html ###alias qwr='echo "quit WEBrick with ctrl-c ..."; fg %webrick 2>/dev/null' alias openwww='/usr/bin/open http://localhost:9090' alias wrlog='/usr/bin/open http://localhost:9090/WEBrickLog/webrick.log' #---------------------------------------- source ~/.bash_login webrick openwww wrlog open http://localhost:9090 open http://localhost:9090/WEBrickLog open http://localhost:9090/WEBrickLog/webrick.log open http://localhost:9090/time open http://localhost:9090/dump wrlog qwr
# From: http://www.ntecs.de/blog/articles/2008/02/09/the-worlds-smallest-webserver # Author: Michael Neumann # ... point your browser to http://localhost:3125/etc/motd ruby -rsocket -e 's=TCPServer.new(5**5);loop{_=s.accept;_<<"HTTP/1.0 200 OK\r\n\r\n#{File.read(_.gets.split[1])rescue nil}";_.close}'
function gemdocs() { if [[ -n "$(whereis gem_server)" ]]; then gem_server >/dev/null 2>&1 & sleep 3 open http://127.0.0.1:8808/ fi }
# Usage: pman ls; pman getopts # convert a singel man page to a PDF file, save and open it pman 8 sticky # same with manual section number pman m toe pman -b ls 'open(2)' dd "chmod(2)" curl 'open(n)' # batch convert man pages into PDF files pman -p rm srm open\(2\) 'toe(m)' 'ncurses(3)' # print man pages using the default printer pman() { section="$1" manpage="$2" mandir="/Users/Shared/manpages" # save the created PDF man pages to the specified directory # batch process man pages to PDF files with the "-b" switch and save them to $mandir # example: pman -b ls 'open(2)' dd 'chmod(2)' 'open(n)' 'sticky(8)' # cf. man -aW open for "man n open" if [[ "$1" = "-b" ]]; then if [[ ! -d $mandir ]]; then mkdir -p $mandir chmod 1777 $mandir fi shift # remove "-b" from "$@" for manfile in "$@"; do # example for $manfile: open(2) manpage="`echo $manfile | grep -Eos '^[^\(]+'`" # extract name of man page section="`echo $manfile | grep -Eos '\([^\)]+\)' | grep -Eos '[^\(\)]+'`" # extract section of man page if [[ ! "$section" ]]; then section="1" fi if [[ ! -f "`man ${section} -W ${manpage} 2>/dev/null`" ]]; then #if [[ ! -f "`man -W ${section} ${manpage} 2>/dev/null `" ]]; then echo "No such man page: man ${section} ${manpage}" continue fi manfile="${mandir}/${manpage}(${section}).pdf" echo "$manfile" if [[ ! -f "$manfile" ]]; then man $section -t $manpage 2>/dev/null | pstopdf -i -o "$manfile" 2>/dev/null chmod 1755 "$manfile" # hide file extension .pdf if [[ -f /Developer/Tools/SetFile ]]; then /Developer/Tools/SetFile -a E "$manfile"; fi fi done return 0 fi # END of batch processing man pages to PDF files # print PDF man pages using the default printer (see man lpr and man lpoptions) # if necessary, create the specified PDF man pages and save them to $mandir # example: pman -p rm srm if [[ "$1" = "-p" ]]; then if [[ ! -d $mandir ]]; then mkdir -p $mandir chmod 1777 $mandir fi shift # remove "-p" from "$@" for manfile in "$@"; do # example for $manfile: open(2) manpage="`echo $manfile | grep -Eos '^[^\(]+'`" # extract name of man page section="`echo $manfile | grep -Eos '\([^\)]+\)' | grep -Eos '[^\(\)]+'`" # extract section of man page if [[ ! "$section" ]]; then section="1" fi if [[ ! -f "`man ${section} -W ${manpage} 2>/dev/null`" ]]; then echo "No such man page: man ${section} ${manpage}" continue fi manfile="${mandir}/${manpage}(${section}).pdf" echo "$manfile" if [[ ! -f "$manfile" ]]; then man -t $section $manpage 2>/dev/null | pstopdf -i -o "$manfile" 2>/dev/null chmod 1755 "$manfile" # hide file extension .pdf if [[ -f /Developer/Tools/SetFile ]]; then /Developer/Tools/SetFile -a E "$manfile"; fi lpr "$manfile" else lpr "$manfile" fi done return 0 fi # END of printing man pages using the default printer # convert a single man page to a PDF file, save it to $mandir and then open it in a PDF viewer if [[ -z "$1" ]] || [[ $# -gt 2 ]]; then # check number of arguments #if [[ -z "$1" || $# -gt 2 ]]; then #if [ -z "$1" -o $# -gt 2 ]; then echo "Wrong number of arguments!" return 1 fi if [[ ! "$manpage" ]]; then # turn "pman ls" into "pman 1 ls" manpage="$section" # if $manpage is an empty string because there has been no "$2" then $manpage is set to "$section" and ... section="1" # ... $section is set to "1" fi if [[ ! -f "`man ${section} -W ${manpage} 2>/dev/null`" ]]; then echo "No such man page: man ${section} ${manpage}" return 1 fi if [[ ! -d $mandir ]]; then mkdir -p $mandir chmod 1777 $mandir fi manfile="${mandir}/${manpage}(${section}).pdf" if [[ -f "$manfile" ]]; then open "$manfile" else man $section -t $manpage 2>/dev/null | pstopdf -i -o "$manfile" 2>/dev/null chmod 1755 "$manfile" # hide file extension .pdf if [[ -f /Developer/Tools/SetFile ]]; then /Developer/Tools/SetFile -a E "$manfile"; fi open "$manfile" fi return 0 }