Memcached is a Unix daemon written in C that exposes a specified amount of memory space as a hash table on the network using a dedicated text or binary protocol. The protocol allows a limited set of operations such as set, get, and delete, and also some more complex atomic operations such as cas (compare and set), incr, decr, and append.
The process itself is absolutely unaware of any distribution and partitioning logic, thus making it extremely simple, fast, and robust. All the complexity is actually pushed to the client that is responsible for routing requests to the correct Memcached instance. A very common use of Memcached is to partition data on each instance, without replication.
This strategy is valid when the amount of instance N is big as a loss of one instance will involve loss of 1 / N of data, which is acceptable in most cases for caching. In situations where such data loss isn’t acceptable, replication is possible as the client can simply send its requests to 2 Memcached instances in parallel.
At the time of writing, it is widely used in production in large organizations. Clients are available for all major languages, including C/C++, Java, Python, Ruby, and C#.
To install memcached on a Virtual Private Server(VPS) or a dedicated server follow the below mentioned steps-
mkdir -p /root/source
rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
yum -y install libevent* ( required for memcached binary )
yum -y install memcached* ( memcached binary required for libmemcached )
gem source -a http://gems.github.com
* combination of libmemcached-0.25.14 and memcached-0.13 gem is found to be a working stable combination, so we will be sticking to this combination for now.
tar -xzvf libmemcached-0.25.14.tar.gz
./configure && make && make install
gem install memcached-0.13.gem
gem install memcache-client –version=1.6.3
Remote teams are becoming much more common because of the rapid development of communications technology. The option to have people work remotely is extremely appealing to many employers who value the additional schedule flexibility and the ability to save time and expenses related to having a full time employee. Many managers discover that their remote employees are as reliable, if not more so, than their office-based employees. They are also able to hire the best talent because there are no geographical boundaries. In addition, companies can reduce overhead associated with office space and parking. Companies who are against the remote team concept have issues with their decreased capability to directly keep track of employees and, difficulties getting to know team members and build a cohesive team.
I like to classify the general team types with regards to remote teams into two dimensions; project based teams and transaction based teams.
Project based teams
This is actually a team that has a specific and time-bound benefit from the job that requires to get done. A project brief at the minimum should contain the anticipated final result, the various competencies required to achieve the outcome, the functions each of those competencies play, the timelines and the milestones. Additionally, it is important to possess gantt charting or project management software that you can use to determine your “critical path” to execution and ensure you are on track day-to-day. Two good choices in this case are Wrike and Asana. Asana is lacking in gantt charting but, it can be a terrific way to handle project tasks daily.
It is advisable to have a document to make note of time defined targets which are associated with the smooth execution of a project. They should clearly mention qualitative and quantitative indicators that portray exactly what must be delivered and at what quality level. A team member’s effectiveness can be analyzed based on the data achieved from this analysis.
Project based teams also need to have a document that conveys to them the best ways to execute a task. For instance, the execution guide of a software project should include the technical requirements of the project. This includes specific guidelines on how the code should be written, with what programming language and also how to make sure that one piece of the software inter operates with the other.
Transaction based teams
This is actually a team that works on a somewhat repetitive function, which may or may not have been tested in a conventional work environment. A good example of this is a Technical Support team. There is a technical product that needs to be supported, and although every single transaction might be completely different, the guardrails are essentially the same. In this instance, documentation is hardly ever a onetime thing. Documentation generally turns into a part of operating the remote team.
Transaction based teams benefit immensely from documentation like Best Practices (for handling a satisfactory transaction), Situation Based FAQs (if X occurs, you need to do Y and inform Z), System Walkthroughs (if certain systems are used to facilitate the operation, walk through documentation with screenshots, videos or demos are useful to have beforehand to help with training the team members on how to make use of them), Manuals, Troubleshooting Guides, Knowledge bases, Transaction Escalation Plans (who should be contacted when X occurs during an interaction, who has the answer when there seems to be no answer) and Success Profiles.
Success profiles are an important element of performance management on a transaction based team. The success profile for a role needs to include the essential transaction frequency and at what service levels time bound for the purpose of ‘ramping’ the team member. For example, the requirements of these in 30 days will probably be completely different than in 90+ days. This should be recorded in a success profile which should be provided to the team member to achieve desirable results.
The benefits are incredible, but it takes time and patience to build a successful remote team, especially if you are just starting out a new company. There are many factors to consider, some of these harboring risks, but when done right, you can cover great distances with people who you trust and who support you as well.
This is one of the most useful plug (Rails Plugin) in that can be used in your application when you require to upload a file as attachment to your application, its quite easy to use and with the help of paperclip scaffolding you can achieve file upload feature very easily, below i have explained the steps to create a simple application using scaffolding that enables the file upload feature with the help of paperclip plugin.
Install the required gems to run the paperclip plugin from the below mentioned command,
$ gem sources -a http://gemcutter.org http://gemcutter.org added to sources $ sudo gem install view_mapper Successfully installed view_mapper-0.2.0 1 gem installed Installing ri documentation for view_mapper-0.2.0... Installing RDoc documentation for view_mapper-0.2.0...
1. First you need to create a rails app and change the database.yml setting and set things to install the plug in $rails student -d mysql
2 Then you have to just install the paperclip plugin into your application from the below mentioned command,
$ ./script/plugin install git://github.com/thoughtbot/paperclip.git
3. Once the plugin is installed, let me show you to create a simple scaffold with paperclip file attachment feature in it.
Just create a simple scaffold and check it out,
$ ./script/generate scaffold_for_view Student name:string branch:string comment:string --view paperclip:photo
Then you need to enter $ rake db:create and $ rake db:migrate
This will create the paperclip file attachment feature, just run $ script/server and check it out. The display looks just like the image i have mentioned at the beginning.
Engine Yard is one of the leading development and deployment platform for the cloud. With a unique combination of Ruby on Rails Expertise, operations automation, open source community involvement, and world class service. Engine Yard empowers businesses to build and run cloud based applications easily and cost effectively.
More than 2,200 customers, from explosive growth Web start ups to Fortune 500 enterprises, trust Engine Yard for fast deployment, rapid scaling, high performance, and 24×7 up time, allowing them to leverage Rails agility for competitive advantage. Engine Yard provides a powerful degree of control over the environment when compared to Heroku.
Engine Yard Cloud offers users the flexibility to build a platform for a wide range of applications including small scale web applications and larger scale enterprise applications. In either instance, Engine Yard Cloud offers users a reliable platform solution, elasticity and high availability clusters.
Heroku, has been ahead of Engine Yard in terms of language but are now finding out that the gap is slowly closing now, as Engine Yard announced the addition of Node.js to its collection of web application tools. The adoption of Node means that Engine Yard now shares Java, Ruby and Node.js with Heroku, and offers PHP. The flexibility that Engine Yard gives to its customers is what makes it appealing to developers and bringing Node into the fold is sure to only add to their 2,200 paying users.
What is Node.js and what issue does it solve?
Even though it may be a bit late in the game, this move by Engine Yard prepares them to handle the tough competition they face in a crowded PaaS space that includes Heroku, Google App Engine, Cloud Bees, Cumulogic, Cloud Foundry, OpenShift, Appfog, Active State, etc. Unlike many other players in the field, Engine Yard is not spreading their wings into supporting many different languages . They are singularly focused on Ruby on Rails and PHP and want to be ‘the’ platform for applications written on this framework.
Ruby Version Manager allows you to install and manage several different versions and implementations of Ruby on one computer, including the ability to manage different sets of RubyGems. It is a command line tool which allows us to easily install, manage and work with multiple Ruby environments from interpreters to sets of gems.
Kinldy use the URL given below to install RVM
If you want to setup standalone passenger please follow the steps given below
1) Login into server.
2) vi /etc/httpd/conf/httpd.conf
then add the following entries in conf file
3) save it and restart apache.
4) cd applicaion_root
5) rvm use “ruby_version which want to use”
6) start the stand alone passenger using the command given below
passenger start -a 127.0.0.1 -p 3000 -d –>> to start
passenger stop -a 127.0.0.1 -p 3000 -d –>> to stop
Then try accessing the domain and it should work fine using stand alone passenger.
For more details please refer the URL given below
• download the ruby source, then unzip, untar, configure and install
[root@railstestwebmin ~]#wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.bz2
[root@railstestwebmin ~]#tar xjvf ruby-1.9.3-p194.tar.bz2
[root@railstestwebmin ~]#cd ruby-1.9.3-p194
[root@railstestwebmin ruby-1.9.3-p194]#make install
• check the ruby version
[root@railstestwebmin ~]#ruby -v
• download ruby gems and install
[root@railstestwebmin ~]#wget http://rubyforge.org/frs/download.php/76073/rubygems-1.8.24.tgz
[root@railstestwebmin ~]#tar xzvf rubygems-1.8.24.tgz
[root@railstestwebmin ~]#cd rubygems-1.8.24
[root@railstestwebmin rubygems-1.8.24]#ruby setup.rb
• installing Rails by using ruby gems (gem is a package manager)
[root@railstestwebmin ~]#gem install rails –include-dependencies
• creating an application
[root@railstestwebmin ~]#rails new prv —for creating prv application and rails is a binary command
inside this application root scripts folder, check the database.yml file for which database this application is using.
• running the application
[root@railstestwebmin prv]#rails server
inside that app directory run rails server command, it may give some error like, in this case i got sqlite3 is not found.
sqlite3 database it used by the app and it is not installed so, we need to install sqlite2.
[root@railstestwebmin prv]#yum install sqlite-devel
After, while running the app I got the error like
so we ve to install java script runner ie add a gem in Gemfile of that app
like gem ‘therubyracer’ or gem ‘execJS’ , here therubyracer and execJS are supports the java scripts.
do bundle install it ll read the Gemfile and installs all gems which are mentioned in that file,
then run “rails server” in that app root ,
[root@railstestwebmin prv]#rails server
=> Booting WEBrick
=> Rails 3.1.0 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2012-09-07 17:09:45] INFO WEBrick 1.3.1
[2012-09-07 17:09:45] INFO ruby 1.8.7 (2010-06-23) [i386-linux]
[2012-09-07 17:09:45] INFO WEBrick::HTTPServer#start: pid=3049 port=3000
Go to the browser and You can see the Rails welcom page