Which "pooling" do you choose?
In the main "pooling" method, there is max pooling.
If the background in a figure is almost uniform, "Max pooling" must be best practice.
Is that right?
I tried the following.
1. Conv pooling
2. Conv pooling and max pooling
3. max pooling
The accuracy of each method is following.
1. 98.5 - 99.1%
2. 99.0 - 99.2%
3. 99.3%
Therefore, If the background in a figure is almost uniform, "Max pooling" is best.
The Best Develop Environment for Machine Learning
This is oneiroi.
Recently I started machine learning (Mainly "deep learning") so I will explain best develop environment.
"conda" is best.
1. Install "conda" from pyenv
( Install one of the following: conda, mini-conda, anaconda )
2. Install python and opencv form conda
$ conda create -n py33con python=3.3 anaconda
$ source activete py33con
$ python
$ conda install -c https://conda.binstar.org/menpo opencv
3. enjoy
File search system in Pico CMS.
I have developed file search plugin in Pico CMS.
How to use OpenGL for OSX
Difference by the OS of OpenGL is below.
Mac:
#include <GLUT/glut.h> #include <OpenGL/gl.h>
Windows & Linux:
#include <GL/glut.h> #include <GL/gl.h>
ex.
#ifdef __APPLE__ #include <GLUT/glut.h> #include <OpenGL/gl.h> #else #include <GL/glut.h> #include <GL/gl.h> #endif /* Copyright (c) Mark J. Kilgard, 1997. */ /* This program is freely distributable without licensing fees and is provided without guarantee or warrantee expressed or implied. This program is -not- in the public domain. */ /* This program was requested by Patrick Earl; hopefully someone else will write the equivalent Direct3D immediate mode program. */ GLfloat light_diffuse[] = {1.0, 0.0, 0.0, 1.0}; /* Red diffuse light. */ GLfloat light_position[] = {1.0, 1.0, 1.0, 0.0}; /* Infinite light location. */ GLfloat n[6][3] = { /* Normals for the 6 faces of a cube. */ {-1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {1.0, 0.0, 0.0}, {0.0, -1.0, 0.0}, {0.0, 0.0, 1.0}, {0.0, 0.0, -1.0} }; GLint faces[6][4] = { /* Vertex indices for the 6 faces of a cube. */ {0, 1, 2, 3}, {3, 2, 6, 7}, {7, 6, 5, 4}, {4, 5, 1, 0}, {5, 6, 2, 1}, {7, 4, 0, 3} }; GLfloat v[8][3]; /* Will be filled in with X,Y,Z vertexes. */ void drawBox(void) { int i; for (i = 0; i < 6; i++) { glBegin(GL_QUADS); glNormal3fv(&n[i][0]); glVertex3fv(&v[faces[i][0]][0]); glVertex3fv(&v[faces[i][1]][0]); glVertex3fv(&v[faces[i][2]][0]); glVertex3fv(&v[faces[i][3]][0]); glEnd(); } } void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); drawBox(); glutSwapBuffers(); } void init(void) { /* Setup cube vertex data. */ v[0][0] = v[1][0] = v[2][0] = v[3][0] = -1; v[4][0] = v[5][0] = v[6][0] = v[7][0] = 1; v[0][1] = v[1][1] = v[4][1] = v[5][1] = -1; v[2][1] = v[3][1] = v[6][1] = v[7][1] = 1; v[0][2] = v[3][2] = v[4][2] = v[7][2] = 1; v[1][2] = v[2][2] = v[5][2] = v[6][2] = -1; /* Enable a single OpenGL light. */ glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); glLightfv(GL_LIGHT0, GL_POSITION, light_position); glEnable(GL_LIGHT0); glEnable(GL_LIGHTING); /* Use depth buffering for hidden surface elimination. */ glEnable(GL_DEPTH_TEST); /* Setup the view of the cube. */ glMatrixMode(GL_PROJECTION); gluPerspective( /* field of view in degree */ 40.0, /* aspect ratio */ 1.0, /* Z near */ 1.0, /* Z far */ 10.0); glMatrixMode(GL_MODELVIEW); gluLookAt(0.0, 0.0, 5.0, /* eye is at (0,0,5) */ 0.0, 0.0, 0.0, /* center is at (0,0,0) */ 0.0, 1.0, 0.); /* up is in positive Y direction */ /* Adjust cube position to be asthetic angle. */ glTranslatef(0.0, 0.0, -1.0); glRotatef(60, 1.0, 0.0, 0.0); glRotatef(-20, 0.0, 0.0, 1.0); } int main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutCreateWindow(argc[0]); glutDisplayFunc(display); init(); glutMainLoop(); return 0; /* ANSI C requires main to return int. */ }
https://www.opengl.org/archives/resources/code/samples/glut_examples/examples/cube.c
Build command
g++ -Wall -Wextra -O0 -g -Isrc -o Build/debug/./src/main.o -c -MMD -MP -MF Build/debug/./src/main.d src/main.cpp g++ -o Build/debug/helloworld Build/debug/./src/main.o -framework OpenGL -framework GLUT
Enjoy!
CentOS + Unicron + Ruby on Rails + Nginx
Passenger + Apache + Ruby on Rails is not very good.
In particular there is a difference in performance.
Therefore, I constructed CentOS + Unicron + Ruby on Rails + Nginx.
Incidentally, the performance was not much difference : )
Work are the following.
# confirmation of spec
$ cat /proc/version
$ cat /proc/cpuinfo
$ df -h
# confirmation of process
$ ps aux
# confirmation of iptables
$ sudo iptables --list
# confirmation of user
$ cat /etc/passwd
$ id
# confirmation of package
$ yum list installed
# getenforce
# update of package
$ sudo yum update
[y]
# update of system
$ sudo yum upgrade
[y]
# Installation of Nginx, MySql
$ sudo yum install -y nginx mysql mysql-server mysql-devel
# registered in the startup (run level35)
$ sudo chkconfig --level 35 nginx on
$ sudo chkconfig --level 35 mysqld on
# confirmation of the startup
$ chkconfig --list
# reboot and confirmation of the startup
$ sudo reboot
$ ps aux | grep nginx
$ ps aux | grep mysqld
# confirmation of ruby version
$ ruby -v
# confirmation of version
$ gem -v
# Installation of bundle
$ gem install
# Installation of rails
$ gem install rails
[Error]
Running 'patch' for libxml2 2.9.2... ERROR, review '/home/ec2-user/.gem/ruby/2.0/gems/nokogiri-1.6.6.2/ext/nokogiri/tmp/x86_64-redhat-linux-gnu/ports/libxml2/2.9.2/patch.log' to see what happened.
.
.
.
Gem files will remain installed in /home/ec2-user/.gem/ruby/2.0/gems/nokogiri-1.6.6.2 for inspection.
Results logged to /home/ec2-user/.gem/ruby/2.0/gems/nokogiri-1.6.6.2/ext/nokogiri/gem_make.out
# When you install the nokogiri, an error has occurred in libxml2.
# Therefore, install them
sudo yum install -y gcc gcc-c++ ruby-devel libxml2 libxml2-devel libxslt libxslt-devel
# confirmation of version
xml2-config --version
# confirmation of version
xslt-config --version
# Installing nokogiri using the system libraries
gem install nokogiri -- --use-system-libraries
# Installation of rails
$ gem install rails
# confirmation
$ rails -v
# make work directory and move to the directory
$ sudo mkdir /var/ror/; cd /var/ror
# create app using the rails
$ rails new sample --database=mysql
[Error]
/usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:126:in `require': cannot load such file -- io/console (LoadError)
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:126:in `require'
from /home/ec2-user/.gem/ruby/2.0/gems/thor-0.19.1/lib/thor/shell/basic.rb:2:in `
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:73:in `require'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:73:in `require'
.
.
.
# maybe io/console error?
# Installation of io/console
$ gem install io-console
# re: create app using the rails
$ rails new test --database=mysql
[Error]
create
/usr/share/ruby/2.0/fileutils.rb:245:in `mkdir': Permission denied - /var/ror/test (Errno::EACCES)
.
.
.
# Permission error
# chenge permission
$ sudo chown -R ec2-user:ec2-user /var/ror/
# re: re: create app using the rails
$ rails new test --database=mysql
$ cd /var/ror/test/
# Initial setting
$ vim /var/ror/test/Gemfile
[Gemfile]
source 'https://rubygems.org' # Error avoidance ENV['NOKOGIRI_USE_SYSTEM_LIBRARIES'] = 'YES' gem 'io-console' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '4.2.0' # Use mysql as the database for Active Record gem 'mysql2' # Use SCSS for stylesheets gem 'sass-rails', '~> 5.0' # Use Uglifier as compressor for JavaScript assets gem 'uglifier', '>= 1.3.0' # Use CoffeeScript for .coffee assets and views gem 'coffee-rails', '~> 4.1.0' # See https://github.com/sstephenson/execjs#readme for more supported runtimes gem 'therubyracer', platforms: :ruby # Use jquery as the JavaScript library gem 'jquery-rails' # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks gem 'turbolinks' # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder gem 'jbuilder', '~> 2.0' # bundle exec rake doc:rails generates the API under doc/api. gem 'sdoc', '~> 0.4.0', group: :doc # Use ActiveModel has_secure_password gem 'bcrypt', '~> 3.1.7' # Use Unicorn as the app server gem 'unicorn' # Use Capistrano for deployment gem 'capistrano-rails', group: :development group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug' # Access an IRB console on exception pages or by using <%= console %> in views gem 'web-console', '~> 2.0' # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem 'spring' end
# Setting of Unicron
$ vi /var/ror/test/config/unicorn.rb
[unicorn.rb]
@app_path = '/var/ror/test' worker_processes 2 working_directory "#{@app_path}/" # This loads the application in the master process before forking # worker processes # Read more about it here: # http://unicorn.bogomips.org/Unicorn/Configurator.html preload_app true timeout 30 # This is where we specify the socket. # We will point the upstream Nginx module to this socket later on listen "/tmp/unicorn.sock", :backlog => 64 pid "/tmp/unicorn.pid" # Set the path of the log files inside the log folder of the testapp stderr_path "#{@app_path}/log/unicorn.stderr.log" stdout_path "#{@app_path}/log/unicorn.stdout.log" before_fork do |server, worker| defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect! old_pid = "#{server.config[:pid]}.oldbin" if old_pid != server.pid begin sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU Process.kill(sig, File.read(old_pid).to_i) rescue Errno::ENOENT, Errno::ESRCH end end sleep 1 end after_fork do |server, worker| defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection end
# Setting of Nginx
$ sudo vi /etc/nginx/conf.d/myapp.conf
[myapp.conf]
upstream unicorn_server { server unix:/tmp/unicorn.sock fail_timeout=0; } server { listen 80; client_max_body_size 4G; server_name _; keepalive_timeout 5; root /var/www/ror/test/public; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; # If you don't find the filename in the static files # Then request it from the unicorn server if (!-f $request_filename) { proxy_pass http://unicorn_server; break; } } error_page 500 502 503 504 /500.html; location = /500.html { root /var/www/ror/test/public; } }
# Autostart setting of Unicron
$ vi /etc/init.d/unicorn_rails
[unicorn_rails]
#!/bin/sh ### BEGIN INIT INFO # Provides: unicorn # chkconfig: 3456 99 35 # Short-Description: starts the unicorn web server # Description: starts unicorn ### END INIT INFO NAME="Unicorn" ENV=development ROOT_DIR="/var/ror/test" PID="${ROOT_DIR}/tmp/pids/unicorn.pid" CONF="${ROOT_DIR}/config/unicorn.rb" OPTIONS="" CMD="bundle exec unicorn_rails -c ${CONF} -E ${ENV} -D ${OPTIONS}" PATH="/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/bin" start() { if [ -e $PID ]; then echo "$NAME already started" exit 1 fi echo "start $NAME" cd $ROOT_DIR gem install bundler $CMD } stop() { if [ ! -e $PID ]; then echo "$NAME not started" exit 1 fi echo "stop $NAME" kill -QUIT `cat ${PID}` rm -f $PID } force_stop() { if [ ! -e $PID ]; then echo "$NAME not started" exit 1 fi echo "stop $NAME" kill -INT `cat ${PID}` rm -f $PID } reload() { if [ ! -e $PID ]; then echo "$NAME not started" start exit 0 fi echo "reload $NAME" kill -HUP `cat ${PID}` } restart() { stop start } case "$1" in start) start ;; stop) stop ;; force-stop) force_stop ;; reload) reload ;; restart) restart ;; *) echo "Syntax Error: release [start|stop|force-stop|reload|restart]" ;; esac
# Adding Unicron to the startup
$ sudo chkconfig --add unicorn_rails
# create page
$ rails g controller Roots index
# Adding routes
$ vi /var/ror/test/config/routes.rb
[routes.rb]
root :to => 'roots#index'
# run unicorn
$ bundle exec unicorn_rails -c config/unicorn.rb -E development -D
[Error]
/var/ror/test/vendor/bundle/ruby/2.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/mysql2_adapter.rb:23:in `rescue in mysql2_connection'
.
.
.
# SQL error...
# Setting of SQL
$ mysql_secure_installation
$ mysql -u root -p
$ vi /var/ror/test/conifg/database.yml
[database.yml]
# MySQL. Versions 5.0+ are recommended. # # Install the MYSQL driver # gem install mysql2 # # Ensure the MySQL gem is defined in your Gemfile # gem 'mysql2' # # And be sure to use new-style password hashing: # http://dev.mysql.com/doc/refman/5.0/en/old-client.html # default: &default adapter: mysql2 encoding: utf8 pool: 5 username: root password: amazon socket: /var/lib/mysql/mysql.sock
$ rake db:create
# re: run unicorn
$ bundle exec unicorn_rails -c config/unicorn.rb -E development -D
# create "Hello world"
$ rm -rf /var/ror/test/app/views/roots/index.html.erb
$ echo "HELLO WORLD" > /var/ror/test/app/views/roots/index.html.erb
$ rm -rf /var/ror/test/app/views/layouts/application.html.erb
$ echo "<%= yield -%>" > /var/ror/test/app/views/layouts/application.html.erb
$ curl YOUR IP
Return >> HELLO WORLD
Enjoy!
Todo
I will write the following articles soon.
・MITM ATTACK (Linux / Kali / Python)
・Polish Notation using binary tree (Ruby)
・Social game tutorial (C# / Unity)
・VIM Editor
・Cake PHP tutorial
・etc...
Data structure alignment
I was suffering with data structure alignment.
But,
I have found
"#pragma pack(1)".
argument: 1~16.
It can be packed a element of memory.
ex:
#ifndef __ETH_H__ #define __ETH_H__ #include <iostream> class foo{ public: #pragma pack(1) struct sc{ ushort a; short b; char c; }; #pragma pack() }; #endif
GOD