Skip to main content

Posts

Understanding TOP command and purpose

$top top - 12:24:34 up 9 days, 21:58, 0 users, load average: 5.98, 5.32, 4.30 Tasks: 13 total, 1 running, 12 sleeping, 0 stopped, 0 zombie %Cpu(s): 5.5 us, 1.5 sy, 0.0 ni, 92.6 id, 0.0 wa, 0.0 hi, 0.5 si, 0.0 st KiB Mem: 12969522+total, 11112360+used, 18571628 free, 135900 buffers KiB Swap: 0 total, 0 used, 0 free. 49328208 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 40 root 20 0 1466540 912540 12568 S 7.7 0.7 67:03.03 bundle 43 root 20 0 1413152 860252 11116 S 6.7 0.7 65:41.24 bundle The load averages indicate the average number of processes waiting for CPU time over the specified time periods. Shows running processes and their status. Buffer is the amount of data used while it's being written or read. The numbers are in KiB's showing the RAM available on system us - user process sy - system process process ID (PID), user, priority (PR), virtual memory usage (VIRT), resident memory usage (RES), shared memory usage (SHR), CPU usage (%...

Security: Keeping your Database Safe

Hosting the database outside of premise systems in saas environment comes with security risks. There should be protocols setup for every storage mechanism to handle the situations of breach of penetration which could result in data leak. Educating the team involved on the importance of security is the first step to start with, Few considerations that can be taken up has been listed based on my experience. Firstly the servers used for hosting should be reliable with latest security patches available. Most of the providers are quick to patch and prevent any recent penetration attacks on other servers. In case of web application, deploy the database on a different server with private IP and access to it should be limited with fewer individuals from local machines. The passwords used should be strong and default udp/tcp ports should not be used to reduce predictability by bots when connecting to database. Setting of HTTPS server would help to provide an extra layer of security as any r...

Starting with Ruby Metaprogamming

Metaprogramming  is a programming technique in which computer programs have the ability to treat programs as their data. It means that a program can be designed to read, generate, analyze or transform other programs, and even modify itself while running.(wikipedia)  Using simple code samples let's give basic start to metaprogramming which helps to relate how code base can be simplified.  Considering the below class. Now, using some metaprogramming concepts above code can be modified, notice the assign_attributes method used while the o/p in both the examples is same Adding some more examples, below simple code helps to generate methods on the fly instead of defining in individually Metaprogramming should be used with caution and not make the code complicated and difficult to read. It should be easy to understand and modular to change in future.

upload images to AWS::S3 in ruby using aws sdk gem

Using gem aws-sdk for a ROR application for uploading images to s3 Uploading images to a fixed bucket with different folders for each object or application. The s3 keeps a limitation on the number of buckets creation whereas there is no limitation for content inside a bucket. This code will upload image for a user to s3 using aws-sdk gem. The bucket and the image uploaded are made public, so that the images uploaded are directly accessible. The input is takes is the image complete path where it is present, folder in which it should be uploaded and user_id for whom it should be uploaded. def save_screenshot_to_s3(image_location, folder_name,user_id) service = AWS::S3.new(:access_key_id => ACCESS_KEY_ID, :secret_access_key => SECRET_ACCESS_KEY) bucket_name = "app-images" if(service.buckets.include?(bucket_name)) bucket = service.buckets[bucket_name] else bucket = service.buckets.create(bucket_name...

MongoDB query optimisation

 Before you read below, make sure MongoDB is the right choice for your application. It's Nonrelational and Document oriented database. Mongoid::Criteria Let's say you query all user data, @users = User.all while using mongoid. So when you access @users in views, it's Mongoid::Criteria and ruby methods will not work ex- to_json. When we iterate over @users, say @users.each do |user| p user end For each user entry, query is fired which could easily be avoided by changing the query to @users = User.all.entries or @users = User.all.to_a. Also for single object @user = User.where(email: "bijendra.biju@gmail.com").first. Index your database: use the specific fields while indexing which will fasten the search. Indexes improve the efficiency of read operations by reducing the amount of data that query operations need to process. Apart from read operations indexes can support sort operation and allow for a more efficient storage utilization. For ex:...

RubyConf 2013 at pune..retrieved from drafts

A great experience while interacting with the ruby community from different places. Lots of knowledge and inspiration flows. Met many folks from india and abroad.

Rake not found in any source

Could not find rake-10.1.0 in any of the sources (Bundler::GemNotFound) This is a very common issue sometimes and it took me time to figure it out. The passenger configuration present in /etc/apache2/apache2.conf was pointing to different ruby version. Change it accordingly depending on the specific ruby version being used. Steps i performed: $ rvm use  1.9.3p327 $rvm gemset list $rvm gemset create g1 $cd . Now edit the .rvmrc files present in project folder accordingly,  rvm use 1.9.3-p327@g1 From the project folder type $cd . and the ruby version with specific gemset is loaded for the application. You can also do  $  rvm use  1.9.3p327 --default  to make it default. Once more way i fixed this issue is, removed the gemset which i created and used the default gemset that is available. $ rvm gemset use default

No Reboot option while creating image from instance

No reboot option while creating image from instance is used when you don't want to restart the instance while the snapshot is being taken. If that option is checked, aws says the integrity of the file system cannot be guaranteed. By default it takes snapshots of the instance and any attached ebs volumes.

Adding name field for ebs volume

Select the ebs volume and go below, select tags and then add/edit tags. First field is by default Name, enter the value and it's updated. While trying to attach ebs to instance, stop the instance while attaching and detaching. It takes fraction of seconds.

Setting up Ghost-Blogger platform

Ghost blogger platform is very user friendly for creation blogs. Here are the basic steps i used to set it up Download the ghost blog code for a stable release or clone a github repo. https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager ubuntu 13.04 comes shipped with old verion of node.js, so u just need to run $sudo apt-get install nodejs

MongDB 27017 vs 27018

Setting up a MongoDB server on a separate ec2 instance and then accessing it from the application and web interface. The default port used is 27017 by various MongoDB drivers while 28017 is used to handle HTTP requests and provides some general monitoring. In case you are interested to start mongod on a separate port for say security reasons, take it as 6565, then the monitor port will always be 7575. You can also query via web browser, sudo /etc/init.d/mongod --rest . Now simple queries can be executed like http://localhost:7575/database/collection/?filter_a=1 . I often use mongoid to access mongodb in my rails application and access the rails console using rails c production, which links me to the mongo database present on different ec2 instance. Use "connection strings" of the form mongodb://user:pwd@host:port/. Refer  MongoDB - HTTP Interfaces

Ruby 2.0 walkthrough

Ruby 2.0.0 released on 24 feb 2013, marks the 20th anniversay of Ruby. rvm get stable This updates your rvm to the latest stable release. $ rvm install ruby It update system libraries and install ruby, so when i try $ rvm list rvm rubies =* ruby-1.9.3-p286 [ x86_64 ] ruby-2.0.0-p195 [ x86_64 ] # => - current # =* - current && default # * - default Now, install rails using gem install rails --version 4.0.0.beta1 --no-ri --no-rdoc