tag:blogger.com,1999:blog-71114525162297496372024-02-20T02:58:10.338-08:00Java frameworks and tools overviewMy intention was to make a place to discuss a different aspects of Java development and to review a Java frameworks, tools and interesting solutions.Gennadyhttp://www.blogger.com/profile/06490582873834905229noreply@blogger.comBlogger106125tag:blogger.com,1999:blog-7111452516229749637.post-19122134930563141152020-04-17T14:05:00.002-07:002020-04-17T14:05:37.738-07:00Docker + HELM + Kubernetes<iframe allowfullscreen="" frameborder="0" height="420" mozallowfullscreen="" scrolling="no" src="https://slides.com/gennadygilin/deck/embed" webkitallowfullscreen="" width="576"></iframe>Gennadyhttp://www.blogger.com/profile/06490582873834905229noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-4105360534145627252018-02-22T00:38:00.003-08:002018-02-22T03:26:56.043-08:00<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: left;">
<span style="font-size: large;">Kafka benchmarking</span></h2>
<br />
<br />
bin/kafka-run-class.sh org.apache.kafka.tools.ProducerPerformance --topic=kafka_benchmark --num-records=10000 --throughput=10 --record-size=200 --producer-props bootstrap.servers=localhost:9092 buffer.memory=67108864 batch.size=6<br />
<br />
bin/kafka-consumer-perf-test.sh --zookeeper localhost:2181 --messages 50000000 --topic kafka_benchmark --threads 1<br />
<br />
bin/kafka-consumer-perf-test.sh --messages 100000000 -topic network_perf --threads 3 --broker-list dl6-l2-kafka-01:9092,dl6-l2-kafka-02:9092,dl6-l2-kafka-03:9092 -show-detailed-stats<br />
<br />
<a href="https://gist.github.com/jkreps/c7ddb4041ef62a900e6c">https://gist.github.com/jkreps/c7ddb4041ef62a900e6c</a><br />
<br /></div>
Дневник Литалькиhttp://www.blogger.com/profile/00288150999144936549noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-3595224170585289512017-12-24T04:54:00.004-08:002017-12-24T04:54:41.534-08:00GIT statistics<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="color: #393939; font-family: Lato, "Helvetica Neue", Helvetica, Arial, sans-serif; line-height: 1.1; margin: 0px 0px 20px;">
Show number of commits by developer</h2>
git shortlog | grep -E '^[^ ]' | sort -u | wc -l<br />
<br />
<h2 style="color: #393939; font-family: Lato, "Helvetica Neue", Helvetica, Arial, sans-serif; line-height: 1.1; margin: 0px 0px 20px;">
Show number of commits for a period</h2>
<pre style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; color: #333333; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; overflow: auto; padding: 9.5px; word-break: break-all; word-wrap: break-word;"><code class="language-bash" style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0px; box-sizing: border-box; color: inherit; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: inherit; padding: 0px; white-space: pre-wrap;">git log --pretty<span class="o" style="box-sizing: border-box; font-weight: bold;">=</span>oneline --after<span class="o" style="box-sizing: border-box; font-weight: bold;">=</span>12/31/2016 <span class="p" style="box-sizing: border-box;">|</span> wc -l</code></pre>
</div>
Дневник Литалькиhttp://www.blogger.com/profile/00288150999144936549noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-26463519798230271892014-12-18T06:09:00.000-08:002016-06-01T00:56:51.216-07:00Useful links<!-- ClickTale Top part -->
<script type="text/javascript">
var WRInitTime=(new Date()).getTime();
</script>
<!-- ClickTale end of Top part -->
<div dir="ltr" style="text-align: left;" trbidi="on">
Awesome GO<br />
<br />
<a href="https://github.com/fleveque/awesome-awesomes#go">https://github.com/fleveque/awesome-awesomes#go</a><br />
<br />
Awesome Hadoop<br />
<br />
<a href="https://github.com/youngwookim/awesome-hadoop">https://github.com/youngwookim/awesome-hadoop</a><br />
<br />
Awesome Machine Learning<br />
<br />
<a href="https://github.com/josephmisiti/awesome-machine-learning">https://github.com/josephmisiti/awesome-machine-learning</a><br />
<br />
Awesome Node.js<br />
<br />
<a href="https://github.com/sindresorhus/awesome-nodejs">https://github.com/sindresorhus/awesome-nodejs</a><br />
<br />
Awesome awesomes<br />
<br />
<a href="https://github.com/fleveque/awesome-awesomes">https://github.com/fleveque/awesome-awesomes</a></div>
<!-- ClickTale Bottom part -->
<script type='text/javascript'>
// The ClickTale Balkan Tracking Code may be programmatically customized using hooks:
//
// function ClickTalePreRecordingHook() { /* place your customized code here */ }
//
// For details about ClickTale hooks, please consult the wiki page http://wiki.clicktale.com/Article/Customizing_code_version_2
document.write(unescape("%3Cscript%20src='"+
(document.location.protocol=='https:'? "https://cdnssl.clicktale.net/qadump/ptc/946cd742-4123-48ec-9839-71f95ef6c72e.js":"http://cdn.clicktale.net/qadump/ptc/946cd742-4123-48ec-9839-71f95ef6c72e.js") +
"'%20type='text/javascript'%3E%3C/script%3E"));
</script>
<!-- ClickTale end of Bottom part -->Дневник Литалькиhttp://www.blogger.com/profile/00288150999144936549noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-26276340119074827892013-01-25T07:55:00.000-08:002013-01-25T07:55:36.089-08:00Numbers Everyone Should Know<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<h2 style="background-color: white; color: #333333; font-family: Georgia, 'Times New Roman', serif; font-size: 23px; line-height: 1em; margin: 15px 0px; padding: 0px; text-transform: capitalize;">
From Google Pro Tips: Numbers Everyone Should Know</h2>
<div style="background-color: white; color: #262626; font-family: 'Helvetica Neue', HelveticaNeue, Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 15px; line-height: 25.1875px; margin-bottom: 1em; margin-top: 0em;">
To evaluate design alternatives you first need a good sense of how long typical operations will take. Dr. Dean gives this list:</div>
<ul style="background-color: white; color: #262626; font-family: 'Helvetica Neue', HelveticaNeue, Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 15px; line-height: 25.1875px; list-style-type: square; margin: 1em 0px; padding: 0px 0px 0px 2em;">
<li>L1 cache reference 0.5 ns</li>
<li>Branch mispredict 5 ns</li>
<li>L2 cache reference 7 ns</li>
<li>Mutex lock/unlock 100 ns</li>
<li>Main memory reference 100 ns</li>
<li>Compress 1K bytes with Zippy 10,000 ns</li>
<li>Send 2K bytes over 1 Gbps network 20,000 ns</li>
<li>Read 1 MB sequentially from memory 250,000 ns</li>
<li>Round trip within same datacenter 500,000 ns</li>
<li>Disk seek 10,000,000 ns</li>
<li>Read 1 MB sequentially from network 10,000,000 ns</li>
<li>Read 1 MB sequentially from disk 30,000,000 ns</li>
<li>Send packet CA->Netherlands->CA 150,000,000 ns </li>
</ul>
<div style="background-color: white; color: #262626; font-family: 'Helvetica Neue', HelveticaNeue, Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 15px; line-height: 25.1875px; margin-bottom: 1em; margin-top: 0em;">
Some things to notice:</div>
<ul style="background-color: white; color: #262626; font-family: 'Helvetica Neue', HelveticaNeue, Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 15px; line-height: 25.1875px; list-style-type: square; margin: 1em 0px; padding: 0px 0px 0px 2em;">
<li>Notice the magnitude differences in the performance of different options.</li>
<li>Datacenters are far away so it takes a long time to send anything between them.</li>
<li>Memory is fast and disks are slow.</li>
<li>By using a cheap compression algorithm a lot (by a factor of 2) of network bandwidth can be saved.</li>
<li>Writes are 40 times more expensive than reads.</li>
<li>Global shared data is expensive. This is a fundamental limitation of distributed systems. The lock contention in shared heavily written objects kills performance as transactions become serialized and slow.</li>
<li>Architect for scaling writes.</li>
<li>Optimize for low write contention.</li>
<li>Optimize wide. Make writes as parallel as you can.</li>
</ul>
<h2 style="background-color: white; color: #333333; font-family: Georgia, 'Times New Roman', serif; font-size: 23px; line-height: 1em; margin: 15px 0px; padding: 0px; text-transform: capitalize;">
Example: Generate Image Results Page Of 30 Thumbnails</h2>
<div style="background-color: white; color: #262626; font-family: 'Helvetica Neue', HelveticaNeue, Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 15px; line-height: 25.1875px; margin-bottom: 1em; margin-top: 0em;">
The is the example given in the video. Two design alternatives are used as design thought experiments.</div>
<h3 style="background-color: white; color: #333333; font-family: Georgia, 'Times New Roman', serif; font-size: 21px; line-height: 25.1875px; margin: 15px 0px; padding: 0px; text-transform: capitalize;">
Design 1 - Serial </h3>
<div id="_mcePaste" style="background-color: white; color: #262626; font-family: 'Helvetica Neue', HelveticaNeue, Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 15px; line-height: 25.1875px;">
<ul style="list-style-type: square; margin: 1em 0px; padding: 0px 0px 0px 2em;">
<li>Read images serially. Do a disk seek. Read a 256K image and then go on to the next image.</li>
<li>Performance: 30 seeks * 10 ms/seek + 30 * 256K / 30 MB /s = 560ms</li>
</ul>
<h3 style="color: #333333; font-family: Georgia, 'Times New Roman', serif; font-size: 21px; margin: 15px 0px; padding: 0px; text-transform: capitalize;">
Design 2 - Parallel </h3>
<div>
<ul style="list-style-type: square; margin: 1em 0px; padding: 0px 0px 0px 2em;">
<li>Issue reads in parallel.</li>
<li>Performance: 10 ms/seek + 256K read / 30 MB/s = 18ms</li>
<li>There will be variance from the disk reads, so the more likely time is 30-60ms</li>
</ul>
</div>
</div>
</div>
Дневник Литалькиhttp://www.blogger.com/profile/00288150999144936549noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-71902827966041551012012-04-17T08:36:00.000-07:002012-04-17T08:37:25.633-07:00Instagram - architecture that worth now 1B<ul style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgba(255, 255, 255, 0.917969); "><li style="margin-left: 15px; ">Amazon shop. They use many of Amazon's services. With only 3 engineers so don’t have the time to look at self hosting.</li><li style="margin-left: 15px; ">100+ EC2 instances total for various purposes.</li><li style="margin-left: 15px; ">Ubuntu Linux 11.04 (“Natty Narwhal”). Solid, other Ubuntu versions froze on them.</li><li style="margin-left: 15px; ">Amazon’s Elastic Load Balancer routes requests and 3 nginx instances sit behind the ELB.</li><li style="margin-left: 15px; ">SSL terminates at the ELB, which lessens the CPU load on nginx.</li><li style="margin-left: 15px; ">Amazon’s Route53 for the DNS.</li><li style="margin-left: 15px; ">25+ Django application servers on High-CPU Extra-Large machines.</li><li style="margin-left: 15px; ">Traffic is CPU-bound rather than memory-bound, so High-CPU Extra-Large machines are a good balance of memory and CPU.</li><li style="margin-left: 15px; "><a href="http://gunicorn.org/" target="_blank" style="color: rgb(17, 85, 204); ">Gunicorn</a><span class="Apple-converted-space"> </span>as their WSGI server. Apache harder to configure and more CPU intensive.</li><li style="margin-left: 15px; "><a href="http://fabric.readthedocs.org/en/1.3.3/index.html" target="_blank" style="color: rgb(17, 85, 204); ">Fabric</a><span class="Apple-converted-space"> </span>is used to execute commands<span class="Apple-converted-space"> </span><span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; ">in</span><span class="Apple-converted-space"> </span>parallel on all machines. A deploy takes only seconds.</li><li style="margin-left: 15px; ">PostgreSQL (users, photo metadata, tags, etc) runs on 12 Quadruple Extra-Large memory instances.</li><li style="margin-left: 15px; ">Twelve PostgreSQL replicas run<span class="Apple-converted-space"> </span><span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; ">in</span><span class="Apple-converted-space"> </span>a different availability zone.</li><li style="margin-left: 15px; ">PostgreSQL instances run<span class="Apple-converted-space"> </span><span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; ">in</span><span class="Apple-converted-space"> </span>a master-replica setup using<span class="Apple-converted-space"> </span><a href="https://github.com/greg2ndQuadrant/repmgr" target="_blank" style="color: rgb(17, 85, 204); ">Streaming Replication</a>. EBS is used for snapshotting, to take frequent backups. </li><li style="margin-left: 15px; ">EBS is deployed<span class="Apple-converted-space"> </span><span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; ">in</span><span class="Apple-converted-space"> </span>a software RAID configuration. Uses <a href="http://en.wikipedia.org/wiki/Mdadm" target="_blank" style="color: rgb(17, 85, 204); ">mdadm</a><span class="Apple-converted-space"> </span>to get decent IO.</li><li style="margin-left: 15px; ">All of their working set is stored memory. EBS doesn’t support enough disk seeks per second.</li><li style="margin-left: 15px; "><a href="http://hoytech.com/vmtouch/vmtouch.c" target="_blank" style="color: rgb(17, 85, 204); ">Vmtouch</a> (portable file system cache diagnostics) is used to manage what data is<span class="Apple-converted-space"> </span><span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; ">in</span><span class="Apple-converted-space"> </span>memory, especially when<span class="Apple-converted-space"> </span><a href="https://gist.github.com/1424540" target="_blank" style="color: rgb(17, 85, 204); ">failing over</a><span class="Apple-converted-space"> </span>from one machine to another, where there is no active memory profile already.</li><li style="margin-left: 15px; ">XFS as the file system. Used to get consistent snapshots by freezing and unfreezing the RAID arrays when snapshotting.</li><li style="margin-left: 15px; "><a href="http://pgfoundry.org/projects/pgbouncer/" target="_blank" style="color: rgb(17, 85, 204); ">Pgbouncer</a> is used<span class="Apple-converted-space"> </span><a href="http://thebuild.com/blog/" target="_blank" style="color: rgb(17, 85, 204); ">pool connections</a><span class="Apple-converted-space"> </span>to PostgreSQL.</li><li style="margin-left: 15px; ">Several terabytes of photos are stored on Amazon S3.</li><li style="margin-left: 15px; ">Amazon CloudFront as the CDN.</li><li style="margin-left: 15px; ">Redis powers their main feed, activity feed, sessions system, and<span class="Apple-converted-space"> </span><a href="http://instagram-engineering.tumblr.com/post/12202313862/storing-hundreds-of-millions-of-simple-key-value-pairs" target="_blank" style="color: rgb(17, 85, 204); ">other services</a>.</li><li style="margin-left: 15px; ">Redis runs on several Quadruple Extra-Large Memory instances. Occasionally shard across instances.</li><li style="margin-left: 15px; ">Redis runs<span class="Apple-converted-space"> </span><span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; ">in</span><span class="Apple-converted-space"> </span>a master-replica setup. Replicas constantly save to disk. EBS snapshots backup the DB dumps. Dumping on the DB on the master was too taxing.</li><li style="margin-left: 15px; ">Apache Solr powers the<span class="Apple-converted-space"> </span><a href="http://instagram.com/developer/endpoints/media/#get_media_search" target="_blank" style="color: rgb(17, 85, 204); ">geo-search API</a>. Like the simple JSON interface.</li><li style="margin-left: 15px; ">6 memcached instances for caching. Connect using pylibmc & libmemcached. Amazon Elastic Cache service isn't any cheaper.</li><li style="margin-left: 15px; "><a href="http://gearman.org/" target="_blank" style="color: rgb(17, 85, 204); ">Gearman</a><span class="Apple-converted-space"> </span>is used to: asynchronously share photos to Twitter, Facebook, etc; notifying real-time subscribers of a new photo posted; feed fan-out.</li><li style="margin-left: 15px; ">200 Python workers consume tasks off the Gearman task queue.</li><li style="margin-left: 15px; "><a href="https://github.com/samuraisam/pyapns" target="_blank" style="color: rgb(17, 85, 204); ">Pyapns</a> (Apple Push Notification Service) handles over a billion push notifications. Rock solid.</li><li style="margin-left: 15px; "><a href="http://munin-monitoring.org/" target="_blank" style="color: rgb(17, 85, 204); ">Munin</a><span class="Apple-converted-space"> </span>to graph metrics across the system and alert on problems. Write many custom plugins using <a href="http://samuelks.com/python-munin/" target="_blank" style="color: rgb(17, 85, 204); ">Python-Munin</a> to graph, signups per minute, photos posted per second, etc.</li><li style="margin-left: 15px; "><a href="http://pingdom.com/" target="_blank" style="color: rgb(17, 85, 204); ">Pingdom</a><span class="Apple-converted-space"> </span>for external monitoring of the service.</li><li style="margin-left: 15px; "><a href="http://pagerduty.com/" target="_blank" style="color: rgb(17, 85, 204); ">PagerDuty</a><span class="Apple-converted-space"> </span>for handling notifications and incidents.</li><li style="margin-left: 15px; "><a href="http://pypi.python.org/pypi/django-sentry" target="_blank" style="color: rgb(17, 85, 204); ">Sentry</a><span class="Apple-converted-space"> </span>for Python error reporting.</li></ul>Дневник Литалькиhttp://www.blogger.com/profile/00288150999144936549noreply@blogger.com1tag:blogger.com,1999:blog-7111452516229749637.post-24286319539775154692012-04-17T08:34:00.001-07:002012-04-17T08:36:15.787-07:00RAMFS vs TMPFS on Linux<div class="headline_area"> <h1 class="entry-title">RAMFS vs TMPFS on Linux</h1><em></em></div><p><a href="http://static.thegeekstuff.com/wp-content/uploads/2008/10/ramfs-tmpfs.jpg"><img class="alignright alignnone size-full wp-image-257" style="float: right;" title="[Linux Ramfs and Tmpfs]" src="http://static.thegeekstuff.com/wp-content/uploads/2008/10/ramfs-tmpfs.jpg" alt="[Linux Ramfs and Tmpfs]" height="225" width="300" /></a>Using ramfs or tmpfs you can allocate part of the physical memory to be used as a partition. You can mount this partition and start writing and reading files like a hard disk partition. Since you’ll be reading and writing to the RAM, it will be faster.<br /><code> </code><br />When a vital process becomes drastically slow because of disk writes, you can choose either ramfs or tmpfs file systems for writing files to the RAM.<br /><code> </code><br /><span id="more-251"></span><br />Both tmpfs and ramfs mount will give you the power of fast reading and writing files from and to the primary memory. When you test this on a small file, you may not see a huge difference. You’ll notice the difference only when you write large amount of data to a file with some other processing overhead such as network.</p> <h3>1. How to mount Tmpfs</h3> <pre># mkdir -p /mnt/tmp # mount -t tmpfs -o size=20m tmpfs /mnt/tmp</pre> <p>The last line in the following df -k shows the above mounted /mnt/tmp tmpfs file system.</p> <pre># df -k Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 32705400 5002488 26041576 17% / /dev/sda1 194442 18567 165836 11% /boot tmpfs 517320 0 517320 0% /dev/shm tmpfs 20480 0 20480 0% /mnt/tmp</pre> <h3>2. How to mount Ramfs</h3> <pre># mkdir -p /mnt/ram # mount -t ramfs -o size=20m ramfs /mnt/ram</pre> <p>The last line in the following mount command shows the above mounted /mnt/ram ramfs file system.</p> <pre># mount /dev/sda2 on / type ext3 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/sda1 on /boot type ext3 (rw) tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) fusectl on /sys/fs/fuse/connections type fusectl (rw) tmpfs on /mnt/tmp type tmpfs (rw,size=20m) ramfs on /mnt/ram type ramfs (rw,size=20m)</pre> <p>You can mount ramfs and tmpfs during boot time by adding an entry to the <a href="http://wiki.linuxquestions.org/wiki/Fstab">/etc/fstab</a>.</p> <h3>3. Ramfs vs Tmpfs</h3> <p>Primarily both ramfs and tmpfs does the same thing with few minor differences.<br /><code> </code></p> <ul><li><strong> Ramfs will grow dynamically</strong>. So, you need control the process that writes the data to make sure ramfs doesn’t go above the available RAM size in the system. Let us say you have 2GB of RAM on your system and created a 1 GB ramfs and mounted as /tmp/ram. When the total size of the /tmp/ram crosses 1GB, you can still write data to it. System will not stop you from writing data more than 1GB. However, when it goes above total RAM size of 2GB, the system may hang, as there is no place in the RAM to keep the data.</li><li><strong>Tmpfs will not grow dynamically</strong>. It would not allow you to write more than the size you’ve specified while mounting the tmpfs. So, you don’t need to worry about controlling the process that writes the data to make sure tmpfs doesn’t go above the specified limit. It may give errors similar to “No space left on device”.</li><li><strong>Tmpfs uses <a href="http://www.linux.com/feature/121916">swap</a></strong>.</li><li><strong>Ramfs does not use swap. </strong></li></ul> <h3>4. Disadvantages of Ramfs and Tmpfs</h3> <p>Since both ramfs and tmpfs is writing to the system RAM, it would get deleted once the system gets rebooted, or crashed. So, you should write a process to pick up the data from ramfs/tmpfs to disk in periodic intervals. You can also write a process to write down the data from ramfs/tmpfs to disk while the system is shutting down. But, this will not help you in the time of system crash.</p> <table summary="This is a table" align="center" border="1" cellpadding="0" cellspacing="0"> <caption>Table: Comparison of ramfs and tmpfs</caption> <tbody> <tr> <th>Experimentation</th> <th>Tmpfs</th> <th>Ramfs</th> </tr> <tr> <td>Fill maximum space and continue writing</td> <td>Will display error</td> <td>Will continue writing</td> </tr> <tr> <td>Fixed Size</td> <td>Yes</td> <td>No</td> </tr> <tr> <td>Uses Swap</td> <td>Yes</td> <td>No</td> </tr> <tr> <td>Volatile Storage</td> <td>Yes</td> <td>Yes</td> </tr> </tbody> </table> <code> </code><br />If you want your process to write faster, opting for tmpfs is a better choice with precautions about the system crash.Дневник Литалькиhttp://www.blogger.com/profile/00288150999144936549noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-47727049808839888242011-12-20T23:49:00.000-08:002011-12-21T00:13:03.406-08:00Realtime Apache Hadoop at Facebook<div><br /><ol><li style="margin-left:15px"><span style="font-family:Arial, Tahoma, Helvetica, FreeSans, sans-serif;color:#666666;"><span style="line-height:18px">Facebook use Hadoop/Hbase for a following products Titan( Facebook messages), Puma( real-time publisher insights), ODS( Facebook internal metrics). </span></span></li><br /><li style="margin-left:15px"><span style="font-family:Arial, Tahoma, Helvetica, FreeSans, sans-serif;color:#666666;"><span style="line-height:18px">Currently in use 4 data centers, about <a href="tel:2000" style="color:rgb(17,85,204)" target="_blank" value="+9722000">2000</a> nodes.</span></span></li><br /><li style="margin-left:15px"><span style="font-family:Arial, Tahoma, Helvetica, FreeSans, sans-serif;color:#666666;"><span style="line-height:18px">Data center replication is not supported as part of HBase, so they wrote some internal product to do that.</span></span></li><br /><li style="margin-left:15px"><span style="font-family:Arial, Tahoma, Helvetica, FreeSans, sans-serif;color:#666666;"><span style="line-height:18px">All data LZO compressed.</span></span></li><br /><li style="margin-left:15px"><span style="font-family:Arial, Tahoma, Helvetica, FreeSans, sans-serif;color:#666666;"><span style="line-height:18px">Each data center has 2PB of data replicated x3, total 6PB.</span></span></li><br /><li style="margin-left:15px"><span style="font-family:Arial, Tahoma, Helvetica, FreeSans, sans-serif;color:#666666;"><span style="line-height:18px">Each node have 12 discs each 1Tb.</span></span></li><br /><li style="margin-left:15px"><span style="font-family:Arial, Tahoma, Helvetica, FreeSans, sans-serif;color:#666666;"><span style="line-height:18px">Load on each node 55% read, 45% write.</span></span></li><br /><li style="margin-left:15px"><span style="font-family:Arial, Tahoma, Helvetica, FreeSans, sans-serif;color:#666666;"><span style="line-height:18px">To collect data from front end servers they're using <a href="http://www.facebook.com/note.php?note_id=32008268919" style="color:rgb(17,85,204)" target="_blank">Scribe</a>, which is open sourced.</span></span></li><br /></ol></div><div><span style="background-color:rgb(255,255,255)">Slides <a href="https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B4Bx_PvQsB5LNjIzODU0Y2EtNmMxNy00MWViLWEwMDctNGNiM2I4NzIwZDBh&hl=en_US" style="color:rgb(17,85,204)" target="_blank">here</a>.</span><br /></div><br /><div><b style="background-color:rgb(255,255,255)">WHY HADOOP AND HBASE( from facebook paper)</b></div><br /><div><span style="background-color:rgb(255,255,255)"><b><br /></b>The requirements for the storage system for our workloads can be summarized as follows:</span></div><br /><div><span style="background-color:rgb(255,255,255)"><br /><br /><b>1. Elasticity</b>: We need to be able to add incremental capacity to our storage systems with minimal overhead and no downtime. In some cases we may want to add capacity rapidly and the system should automatically balance load and utilization across new hardware.</span></div><br /><div><span style="background-color:rgb(255,255,255)"><b>2. High write throughput</b>: Most of the applications store (and optionally index) tremendous amounts of data and require high aggregate write throughput.</span></div><span style="background-color:rgb(255,255,255)"><b><br />3. Efficient and low-latency strong consistency semantics within a data center:</b> There are important applications like Messages that require strong consistency within a data center. This requirement often arises directly from user expectations. For example ‘‘unread’’ message counts displayed on the home page and the messages shown in the inbox page view should be consistent with respect to each other. While a globally distributed strongly consistent system is practically impossible, a system that could at least provide strong consistency within a data center would make it possible to provide a good user experience. We also knew that (unlike other Facebook applications), Messages was easy to federate so that a particular user could be served entirely out of a single data center making strong consistency within a single data center a critical requirement for the Messages project. Similarly, other projects, like realtime log aggregation, may be deployed entirely within one data center and are much easier to program if the system provides strong consistency guarantees.</span><br /><div><span style="background-color:rgb(255,255,255)"><br /><b>4. Efficient random reads from disk</b>: In spite of the widespread use of application level caches (whether embedded or via memcached), at Facebook scale, a lot of accesses miss the cache and hit the back-end storage system. MySQL is very efficient at performing random reads from disk and any new system would have to be comparable.</span></div><br /><div><span style="background-color:rgb(255,255,255)"><b>5. High Availability and Disaster Recovery:</b> We need to provide a service with very high uptime to users that covers both planned and unplanned events (examples of the former being events like software upgrades and addition of hardware/capacity and the latter exemplified by failures of hardware components). We also need to be able to tolerate the loss of a data center with minimal data loss and be able to serve data out of another data center in a reasonable time frame.<br /><br /><b>6. Fault Isolation:</b> Our long experience running large farms of MySQL databases has shown us that fault isolation is critical. Individual databases can and do go down, but only a small fraction of users are affected by any such event. Similarly, in our warehouse usage of Hadoop, individual disk failures affect only a small part of the data and the system quickly recovers from such faults.</span></div><br /><div><span style="background-color:rgb(255,255,255)"><b>7. Atomic read-modify-write primitives: </b>Atomic increments and compare-and-swap APIs have been very useful in building lockless concurrent applications and are a must have from the underlying storage system.</span></div><br /><div><span style="background-color:rgb(255,255,255)"><b>8. Range Scans:</b> Several applications require efficient retrieval of a set of rows in a particular range. For example all the last 100 messages for a given user or the hourly impression counts over the last 24 hours for a given advertiser.<br /></span><br /></div>It is also worth pointing out non-requirements:<br /><br /><div><span style="background-color:rgb(255,255,255)"><b>1. Tolerance of network partitions within a single data center</b>: Different system components are often inherently centralized. For example, MySQL servers may all be located within a few racks, and network partitions within a data center would cause major loss in serving capabilities therein. Hence every effort is made to eliminate the possibility of such events at the hardware level by having a highly redundant network design.</span></div><span style="background-color:rgb(255,255,255)"><b><br />2. Zero Downtime in case of individual data center failure:</b> In our experience such failures are very rare, though not impossible. In a less than ideal world where the choice of system design boils down to the choice of compromises that are acceptable, this is one compromise that we are willing to make given the low occurrence rate of such events. We might revise this non-requirement at a later time.</span><br /><div><br /></div><span style="background-color:rgb(255,255,255)"><b>3. Active-active serving capability across different data centers</b>: As mentioned before, we were comfortable making the assumption that user data could be federated across different data centers (based ideally on user locality). Latency (when user and data locality did not match up) could be masked by using an application cache close to the user.</span><br /><div><span style="background-color:rgb(255,255,255)"><br />Some less tangible factors were also at work. Systems with existing production experience for Facebook and in-house expertise were greatly preferred. When considering open-source projects, the strength of the community was an important factor. Given the level of engineering investment in building and maintaining systems like these –– it also made sense to choose a solution that was broadly applicable (rather than adopt point solutions based on differing architecture and codebases for each workload).<br /></span><br /></div>After considerable research and experimentation, we chose Hadoop and HBase as the foundational storage technology for these next generation applications. The decision was based on the state of HBase at the point of evaluation as well as our confidence in addressing the features that were lacking at that point via in- house engineering. HBase already provided a highly consistent, high write-throughput key-value store. The HDFS NameNode stood out as a central point of failure, but we were confident that our HDFS team could build a highly-available NameNode (AvatarNode) in a reasonable time-frame, and this would be useful for our warehouse operations as well. Good disk read-efficiency seemed to be within striking reach (pending adding Bloom filters to HBase’’s version of LSM Trees, making local DataNode reads efficient and caching NameNode metadata). Based on our experience operating the Hive/Hadoop warehouse, we knew HDFS was stellar in tolerating and isolating faults in the disk subsystem. The failure of entire large HBase/HDFS clusters was a scenario that ran against the goal of fault-isolation, but could be considerably mitigated by storing data in smaller HBase clusters. Wide area replication projects, both in-house and within the HBase community, seemed to provide a promising path to achieving disaster recovery.<br /><div><br /></div><span style="background-color:rgb(255,255,255)">HBase is massively scalable and delivers fast random writes as well as random and streaming reads. It also provides row-level atomicity guarantees, but no native cross-row transactional support. From a data model perspective, column-orientation gives extreme flexibility in storing data and wide rows allow the creation of billions of indexed values within a single table. HBase is ideal for workloads that are write-intensive, need to maintain a large amount of data, large indices, and maintain the flexibility to scale out quickly. </span>Дневник Литалькиhttp://www.blogger.com/profile/00288150999144936549noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-62734879998523899102011-02-24T23:44:00.000-08:002011-02-24T23:44:50.356-08:00A Day Made of Glass... Made possible by Corning.<iframe width="480" height="295" src="http://www.youtube.com/embed/6Cf7IL_eZ38?fs=1" frameborder="0" allowfullscreen=""></iframe>Дневник Литалькиhttp://www.blogger.com/profile/00288150999144936549noreply@blogger.com1tag:blogger.com,1999:blog-7111452516229749637.post-28060423016447578432010-09-04T06:58:00.001-07:002010-09-04T06:58:41.142-07:00An Introduction to RDF and the Jena RDF API<a href="http://jena.sourceforge.net/tutorial/RDF_API/">http://jena.sourceforge.net/tutorial/RDF_API/</a>Gennadyhttp://www.blogger.com/profile/06490582873834905229noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-85696608539361113302010-09-04T00:28:00.001-07:002010-09-04T00:28:40.469-07:00XAuth - an introduction from Chris Messina<object width="400" height="300"><param name="allowfullscreen" value="true"><param name="allowscriptaccess" value="always"><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=12121710&server=vimeo.com&show_title=1&show_byline=1&show_portrait=1&color=&fullscreen=1&autoplay=0&loop=0"><embed src="http://vimeo.com/moogaloop.swf?clip_id=12121710&server=vimeo.com&show_title=1&show_byline=1&show_portrait=1&color=&fullscreen=1&autoplay=0&loop=0" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/12121710">XAuth - an introduction</a> from <a href="http://vimeo.com/factoryjoe">Chris Messina</a> on <a href="http://vimeo.com">Vimeo</a>.</p>Дневник Литалькиhttp://www.blogger.com/profile/00288150999144936549noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-46712366327059882612010-05-10T00:33:00.001-07:002010-05-10T00:33:22.356-07:00CentOS: find out what network ports are in use<div xmlns='http://www.w3.org/1999/xhtml'><span style='font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 11px; color: rgb(102, 102, 102);'>To get a quick idea of what ports you have open on your local box, you can use nmap.</span><br/><br/><small><font face='georgia'><i>[root@api1dev /usr/local/bin]nmap localhost<br/>Starting Nmap 5.00 ( http://nmap.org ) at 2010-05-10 03:02 EDT<br/>Interesting ports on vmlinux-testing1 (127.0.0.1):<br/>Not shown: 991 closed ports<br/>PORT STATE SERVICE<br/>21/tcp open ftp<br/>22/tcp open ssh<br/>80/tcp open http<br/>111/tcp open rpcbind<br/>389/tcp open ldap<br/>631/tcp open ipp<br/>726/tcp open unknown<br/>8009/tcp open ajp13<br/>8080/tcp open http-proxy</i></font></small><br/><small><br/>For more detailed information, try netstat:<span style='font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 11px; color: rgb(102, 102, 102);'><blockquote><p><b>netstat -an</b></p></blockquote><p>You’ll get a breakdown of every socket open on your machine – useful for figuring out who’s connected and from where.</p></span></small><br/><br/></div>Gennadyhttp://www.blogger.com/profile/06490582873834905229noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-72379829888409714922010-04-08T01:34:00.000-07:002010-04-08T01:40:24.761-07:00Interesting articles about Ad-Exchange and RTB<a href="http://goo.gl/wuts">The Ad-Exchange Model (Part I)</a><br /><a href="http://goo.gl/dN6b">RTB Part I Followup</a><br /><a href="http://goo.gl/srZv">RTB Part II: Supply supply supply!</a><br /><a href="http://goo.gl/nanI">RTB Part III: Cookies & User Data!</a>Gennadyhttp://www.blogger.com/profile/06490582873834905229noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-16256574733886007372010-03-15T08:11:00.001-07:002010-03-15T08:11:42.085-07:00Alternative to HBase + Map-Reduce<div xmlns='http://www.w3.org/1999/xhtml'><big><big>mongoDB <br/><br/></big></big>Combining the best features of document databases, key-value stores, and RDBMSes.<span style='border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;' class='Apple-style-span'><span style='font-family: helvetica,arial,sans-serif; font-size: 13px; line-height: 17px;' class='Apple-style-span'><p style='margin: 0px 0px 10px; padding: 0px; font-size: 10pt; line-height: 13pt; color: rgb(76, 58, 44) ! important; font-weight: normal; text-decoration: none ! important; max-width: 800px;'>MongoDB (from "hu<b style='margin: 0px;'>mongo</b>us") is a scalable, high-performance, open source, schema-free, document-oriented database. Written in C++, MongoDB features:</p><ul style='margin: 0px 0px 1em; color: rgb(76, 58, 44) ! important; text-decoration: none ! important; position: relative; padding-left: 1.2em; line-height: 13pt; font-size: 10pt; list-style-type: disc;'><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'>Document-oriented storage (the simplicity and power of<span class='Apple-converted-space'> </span><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='BSON' href='/display/DOCS/BSON'>JSON-like</a><span class='Apple-converted-space'> </span>data schemas)</li><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'>Dynamic<span class='Apple-converted-space'> </span><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Querying' href='/display/DOCS/Querying'>queries</a></li><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'>Full<span class='Apple-converted-space'> </span><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Indexes' href='/display/DOCS/Indexes'>index</a><span class='Apple-converted-space'> </span>support, including secondary indexes, inner-objects, embedded arrays,<span class='Apple-converted-space'> </span><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Geospatial Indexing' href='/display/DOCS/Geospatial+Indexing'>geospatial</a></li><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'>Query<span class='Apple-converted-space'> </span><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Database Profiler' href='/display/DOCS/Database+Profiler'>profiling</a></li><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'>Fast,<span class='Apple-converted-space'> </span><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' href='http://blog.mongodb.org/post/248614779/fast-updates-with-mongodb-update-in-place'>in-place updates</a></li><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'>Efficient storage of binary data<span class='Apple-converted-space'> </span><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='GridFS' href='/display/DOCS/GridFS'>large objects</a><span class='Apple-converted-space'> </span>(e.g. photos and videos)</li><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Replication' href='/display/DOCS/Replication'>Replication</a><span class='Apple-converted-space'> </span>and fail-over support</li><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Sharding' href='/display/DOCS/Sharding'>Auto-sharding</a><span class='Apple-converted-space'> </span>for cloud-level scalability</li><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='MapReduce' href='/display/DOCS/MapReduce'>MapReduce</a><span class='Apple-converted-space'> </span>for complex aggregation</li><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='MongoDB Commercial Services Providers' href='/display/DOCS/MongoDB+Commercial+Services+Providers'>Commercial Support, Training, and Consulting</a></li></ul><p style='margin: 0px 0px 10px; padding: 0px; font-size: 10pt; line-height: 13pt; color: rgb(76, 58, 44) ! important; font-weight: normal; text-decoration: none ! important; max-width: 800px;'>MongoDB bridges the gap between key-value stores (which are fast and highly scalable) and traditional RDBMS systems. Many companies are using MongoDB<span class='Apple-converted-space'> </span><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Production Deployments' href='/display/DOCS/Production+Deployments'>in production today</a>.</p><h6 style='margin: 1.25em 0px 0.5em; padding: 0px; line-height: normal; font-weight: bold; font-size: 10pt; color: rgb(0, 51, 102); text-decoration: none ! important;'><a style='margin: 0px; text-decoration: none ! important; color: rgb(76, 58, 44) ! important;' name='Home-QuickLinks'/>Quick Links</h6><ul style='margin: 0px 0px 1em; color: rgb(76, 58, 44) ! important; text-decoration: none ! important; position: relative; padding-left: 1.2em; line-height: 13pt; font-size: 10pt; list-style-type: disc;'><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Downloads' href='/display/DOCS/Downloads'>Downloads</a></li><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' href='http://twitter.com/mongodb'>Follow @mongodb on Twitter</a></li><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Use Cases' href='/display/DOCS/Use+Cases'>Use Cases</a><span class='Apple-converted-space'> </span>|<span class='Apple-converted-space'> </span><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Philosophy' href='/display/DOCS/Philosophy'>Philosophy</a></li><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Hosting Center' href='/display/DOCS/Hosting+Center'>Hosting Center</a></li><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Drivers' href='/display/DOCS/Drivers'>Drivers</a></li><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Source Code' href='/display/DOCS/Source+Code'>Source Code</a></li><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' href='http://blog.mongodb.org/'>Blog</a><span class='Apple-converted-space'> </span>|<span class='Apple-converted-space'> </span><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Articles' href='/display/DOCS/Articles'>Articles</a></li><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Tutorial' href='/display/DOCS/Tutorial'>Tutorial</a><span class='Apple-converted-space'> </span>|<span class='Apple-converted-space'> </span><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' target='_blank' mce_href='http://try.mongodb.org' href='http://try.mongodb.org/'>Try MongoDB in the Browser</a></li><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Licensing' href='/display/DOCS/Licensing'>Licensing</a><span class='Apple-converted-space'> </span>|<span class='Apple-converted-space'> </span><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' href='http://github.com/mongodb/mongo-snippets/tree/master'>Example Snippets</a><span class='Apple-converted-space'> </span>|<span class='Apple-converted-space'> </span><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' href='http://jira.mongodb.org/'>BugDB (Jira)</a></li></ul><h6 style='margin: 1.25em 0px 0.5em; padding: 0px; line-height: normal; font-weight: bold; font-size: 10pt; color: rgb(0, 51, 102); text-decoration: none ! important;'><a style='margin: 0px; text-decoration: none ! important; color: rgb(76, 58, 44) ! important;' name='Home-Support'/>Support</h6><ul style='margin: 0px 0px 1em; color: rgb(76, 58, 44) ! important; text-decoration: none ! important; position: relative; padding-left: 1.2em; line-height: 13pt; font-size: 10pt; list-style-type: disc;'><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'>Support forums:<span class='Apple-converted-space'> </span><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' href='http://groups.google.com/group/mongodb-user'>mongodb-user</a><span class='Apple-converted-space'> </span>|<span class='Apple-converted-space'> </span><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Community' href='/display/DOCS/Community'>more...</a></li><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'>IRC:<span class='Apple-converted-space'> </span><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' href='irc://irc.freenode.net/#mongodb'>irc.freenode.net/#mongodb</a></li><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'>Commercial support:<span class='Apple-converted-space'> </span><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' href='http://www.10gen.com/support'>10gen</a></li><li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'>Training:<span class='Apple-converted-space'> </span><a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' href='http://www.10gen.com/training'>10gen</a></li></ul></span></span><br/><br/><div class='zemanta-pixie'><img src='http://img.zemanta.com/pixy.gif?x-id=0f23be25-6820-8984-a6ed-76fe9ded5a36' alt='' class='zemanta-pixie-img'/></div></div>Gennadyhttp://www.blogger.com/profile/06490582873834905229noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-57735221055286418692010-02-18T00:31:00.001-08:002010-02-18T00:31:18.322-08:00LAMP on EC2 : Setting up Amazon Web Services<div xmlns='http://www.w3.org/1999/xhtml'><span style='border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;' class='Apple-style-span'><span style='color: rgb(102, 102, 102); font-family: Georgia,'Times New Roman',serif; font-size: 13px; line-height: 19px;' class='Apple-style-span'><h2 style='margin: 0px; padding: 0px; font-weight: normal; font-family: Arial,Helvetica,Geneva,sans-serif; font-size: 24px; letter-spacing: -1px; text-decoration: none; color: rgb(75, 75, 75);' class='title'><a style='text-decoration: none; color: rgb(51, 51, 51); line-height: 1.21em;' href='/blog/2009/3/3/lamp-on-ec2-part-1-setting-up-amazon-web-services.html'><span style='border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;' class='Apple-style-span'><span style='color: rgb(102, 102, 102); font-family: Georgia,'Times New Roman',serif; font-size: 13px; line-height: 19px;' class='Apple-style-span'/></span></a></h2><h2 style='margin: 0px; padding: 0px; font-weight: normal; font-family: Arial,Helvetica,Geneva,sans-serif; font-size: 24px; letter-spacing: -1px; text-decoration: none; color: rgb(75, 75, 75);' class='title'><a style='text-decoration: none; color: rgb(51, 51, 51); line-height: 1.21em;' href='/blog/2009/3/3/lamp-on-ec2-part-1-setting-up-amazon-web-services.html'><span style='border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;' class='Apple-style-span'><span style='color: rgb(18, 50, 166); font-family: arial;' class='Apple-style-span'>http://goo.gl/z1Zb</span></span></a></h2><br/></span></span><span style='border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;' class='Apple-style-span'><span style='color: rgb(18, 50, 166); font-family: arial;' class='Apple-style-span'>http://goo.gl/xhqB</span></span><br/><br/><div class='zemanta-pixie'><img src='http://img.zemanta.com/pixy.gif?x-id=3e46f3ff-d192-8383-a3c9-b447f8d36e56' alt='' class='zemanta-pixie-img'/></div></div>Gennadyhttp://www.blogger.com/profile/06490582873834905229noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-35575903565304418772010-02-08T01:05:00.000-08:002010-02-08T01:05:39.404-08:00Web performance in seven steps: Summary and Conclusions<span class="Apple-style-span" style=" ;font-family:Verdana, Arial, sans-serif;font-size:11px;"><h2 class="title" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 5px; padding-top: 10px; padding-right: 15px; padding-bottom: 0px; padding-left: 48px; font-weight: normal; font-family: Helvetica, Arial, sans-serif; line-height: 28px; font-size: 22px; color: rgb(101, 58, 113); background-image: url(http://blog.xebia.com/wp-content/themes/xebia_theme/images/box-white.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; display: inline-block; width: 690px; background-position: 100% 0%; background-repeat: no-repeat no-repeat; "><a href="http://blog.xebia.com/2010/01/20/web-performance-in-seven-steps-summery-and-conclusions/" rel="bookmark" title="Permanent Link to Web performance in seven steps: Summary and Conclusions" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: normal; ">Web performance in seven steps: Summary and Conclusions</a><br /><span class="Apple-style-span" style="font-size: -webkit-xxx-large;"><br /></span></h2><div class="node-wrapper" style="background-image: url(http://blog.xebia.com/wp-content/themes/xebia_theme/images/box-white-left.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 5px; margin-top: 0px; margin-right: 0px; margin-bottom: -10px; margin-left: 0px; position: relative; font-size: 16px; float: left; background-position: 0% 100%; background-repeat: no-repeat no-repeat; "><div class="node-content" style="clear: both; background-image: url(http://blog.xebia.com/wp-content/themes/xebia_theme/images/box-white.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 5px; padding-left: 10px; font-size: 12px; line-height: 1.1em; float: left; background-position: 100% 100%; background-repeat: no-repeat no-repeat; "><div class="node-bg-fix" style="width: 671px; float: left; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); padding-top: 10px; padding-right: 35px; padding-bottom: 10px; padding-left: 52px; left: -15px; margin-right: -15px; position: relative; background-position: initial initial; background-repeat: initial initial; "><div class="view view-article-overview view-id-article_overview view-display-id-page_1 view-dom-id-1"><div class="view-content"><p style="margin-top: 0.6em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 14px; ">Previous time I blogged about the last step of the seven steps, <a href="http://blog.xebia.com/2009/11/18/web-performance-in-seven-steps-step-7-share-the-responsibility-for-the-whole-chain/" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: bold; ">step 7: Share the responsibility for the whole chain</a>, a non-technical but rather a communication and behavior thing which I found crucial for success. We now have reached the end of this series and I'll sum up the topics we've dealt with and draw some conclusions.<span id="more-3962"></span></p><p style="margin-top: 0.6em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 14px; ">In this growing on line world with demanding customers it has become essential that services provided on the web are <a href="http://blog.xebia.com/2009/05/25/web-performance-in-seven-steps/" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: bold; ">always available and always fast enough</a>. This is often challenging to developers and operators: <a href="http://blog.xebia.com/2009/06/02/web-performance-in-seven-steps-how-performance-problems-manifest-themselves/" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: bold; ">performance problems manifest themselves in various ways</a>, like in frustration, loss of revenue and disruption of development; and just adding hardware is a doubtful solution.</p><p style="margin-top: 0.6em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 14px; ">The question is: how can we as developers and operators assure that our web site is always available and always fast? My answer is: you need the right approach. I present that approach: measure, don’t guess; seven steps to performance success. These seven steps are as follows:</p><ul style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><li style="margin-top: 0.15em; margin-right: 0px; margin-bottom: 0.15em; margin-left: 0.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0.2em; padding-left: 1.5em; list-style-type: disc; list-style-image: none; list-style-position: outside; "><a href="http://blog.xebia.com/2009/06/10/web-performance-in-seven-steps-step-1-define-performance-requirements/" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: bold; ">Step 1: Define performance requirements</a>;</li><li style="margin-top: 0.15em; margin-right: 0px; margin-bottom: 0.15em; margin-left: 0.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0.2em; padding-left: 1.5em; list-style-type: disc; list-style-image: none; list-style-position: outside; "><a href="http://blog.xebia.com/2009/06/15/web-performance-in-seven-steps-step-2-execute-a-proof-of-concept/" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: bold; ">Step 2: Execute a proof of concept</a>;</li><li style="margin-top: 0.15em; margin-right: 0px; margin-bottom: 0.15em; margin-left: 0.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0.2em; padding-left: 1.5em; list-style-type: disc; list-style-image: none; list-style-position: outside; "><a href="http://blog.xebia.com/2009/06/29/web-performance-in-seven-steps-step-3-test-representatively/" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: bold; ">Step 3: Test representatively</a>;</li><li style="margin-top: 0.15em; margin-right: 0px; margin-bottom: 0.15em; margin-left: 0.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0.2em; padding-left: 1.5em; list-style-type: disc; list-style-image: none; list-style-position: outside; "><a href="http://blog.xebia.com/2009/07/22/web-performance-in-seven-steps-step-4-test-continuously/" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: bold; ">Step 4: Test continuously</a>;</li><li style="margin-top: 0.15em; margin-right: 0px; margin-bottom: 0.15em; margin-left: 0.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0.2em; padding-left: 1.5em; list-style-type: disc; list-style-image: none; list-style-position: outside; "><a href="http://blog.xebia.com/2009/08/31/web-performance-in-seven-steps-step-5-monitor-and-diagnose/" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: bold; ">Step 5: Monitor and diagnose</a>;</li><li style="margin-top: 0.15em; margin-right: 0px; margin-bottom: 0.15em; margin-left: 0.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0.2em; padding-left: 1.5em; list-style-type: disc; list-style-image: none; list-style-position: outside; "><a href="http://blog.xebia.com/2009/11/02/web-performance-in-seven-steps-step-6-tune-based-on-evidence/" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: bold; ">Step 6: Tune based on evidence</a>;</li><li style="margin-top: 0.15em; margin-right: 0px; margin-bottom: 0.15em; margin-left: 0.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0.2em; padding-left: 1.5em; list-style-type: disc; list-style-image: none; list-style-position: outside; "><a href="http://blog.xebia.com/2009/11/18/web-performance-in-seven-steps-step-7-share-the-responsibility-for-the-whole-chain/" style="color: rgb(101, 58, 113); text-decoration: underline; font-weight: bold; ">Step 7: Share the responsibility for the whole chain</a>.</li></ul><p style="margin-top: 0.6em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 14px; ">This approach provides a pro-active way of working which my customers appreciate as valuable. It can actually be leveraged to assure high performance all the time, for virtually any on- and off-line application.</p><p style="margin-top: 0.6em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 14px; ">This blog series has been an interesting journey for me. Some time ago we presented our <a href="http://blog.xebia.com/2007/04/30/ejapp-top-10-countdown-wrap-up/" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: bold; ">EJAPP Top 10 of performance problems</a>. Now we have added this approach of seven steps to help assure your applications performance.</p><p style="margin-top: 0.6em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 14px; ">It has worked for us and our customers. How does this all work for you in practice? We’d like to hear your feedback.</p></div></div></div></div></div></span>Дневник Литалькиhttp://www.blogger.com/profile/00288150999144936549noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-39752593531554869652009-12-12T07:34:00.000-08:002009-12-12T11:02:15.720-08:00Location based DB schema in mySQL<div><a href="http://dev.mysql.com/tech-resources/articles/4.1/gis-with-mysql.html">http://dev.mysql.com/tech-resources/articles/4.1/gis-with-mysql.html</a></div><a href="http://dev.mysql.com/doc/refman/4.1/en/spatial-extensions.html">http://dev.mysql.com/doc/refman/4.1/en/spatial-extensions.html</a><div><a href="http://howto-use-mysql-spatial-ext.blogspot.com/">http://howto-use-mysql-spatial-ext.blogspot.com/</a></div><div><a href="http://forge.mysql.com/wiki/GIS_Functions#Introduction">http://forge.mysql.com/wiki/GIS_Functions#Introduction</a></div><div><a href="http://forums.mysql.com/read.php?23,40909,43079#msg-43079">http://forums.mysql.com/read.php?23,40909,43079#msg-43079</a></div>Дневник Литалькиhttp://www.blogger.com/profile/00288150999144936549noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-27278235651820013222009-11-15T23:12:00.000-08:002009-11-15T23:14:38.328-08:00OpenInviter<ul><li>Easy access to your visitors address book in <strong>all major email providers and social networks</strong> around the world.</li><br /><li>Completely painless and easy way of integrating in your website. It takes virtually not more than <strong>5 minutes</strong> to have your own <strong>OpenInviter<sup>TM</sup></strong> up and running on your site.</li><br /><li><strong>Constant updates</strong> so that you can sit back and relax and always have access to the latest ways to get your visitor's address book.</li><br /><li><strong>WGET-ready!</strong> Yes, you read right! OpenInviter<sup>TM</sup> is the only contacts importer supporting both WGET and cURL as methods of handling requests (since version 1.2) so now you can use it on ANY server you want without the hassle of installing libcurl!</li><br /><li><strong>Real time</strong> access to the service statuses so you can know if there is an email provider that is not working right with OpenInviter<sup>TM</sup>.</li></ul><br /><a href="http://openinviter.com/faq.php">http://openinviter.com/faq.php</a>Дневник Литалькиhttp://www.blogger.com/profile/00288150999144936549noreply@blogger.com1tag:blogger.com,1999:blog-7111452516229749637.post-24815366881080494182009-11-12T03:12:00.001-08:002009-11-12T03:12:40.277-08:00GO: Google Launches Its Own Programming Language<a href=http://mashable.com/2009/11/10/go-google-language/>GO: Google Launches Its Own Programming Language</a><br /><br />Posted using <a href="http://sharethis.com">ShareThis</a>Gennadyhttp://www.blogger.com/profile/06490582873834905229noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-78122947477163905772009-10-26T23:37:00.000-07:002009-10-27T00:04:31.084-07:00Upgrading mySQL from 5.0 to 5.1.on CentOS 5My first attempt was to use yum: <br /><pre name="code" class="java"><br />[root@linux /] yum info mysql<br />Loading "fastestmirror" plugin<br />Loading mirror speeds from cached hostfile<br />* base: mirror.sanctuaryhost.com<br />* updates: mirror.fdcservers.net<br />* addons: mirror.steadfast.net<br />* extras: mirror.trouble-free.net<br />Installed Packages<br />Name : mysql<br />Arch : i386<br />Version: 5.0.45<br />Release: 7.el5<br />Size : 7.3 M<br />Repo : installed<br />Summary: MySQL client programs and shared libraries.<br />Description:<br />MySQL is a multi-user, multi-threaded SQL database server. MySQL is a<br />client/server implementation consisting of a server daemon (mysqld)<br />and many different client programs and libraries. The base package<br />contains the MySQL client programs, the client shared libraries, and<br />generic MySQL files.<br /><br /><br />Available Packages<br />Name : mysql<br />Arch : i386<br />Version: 5.0.77<br />Release: 3.el5<br />Size : 4.8 M<br />Repo : base<br />Summary: MySQL client programs and shared libraries<br />Description:<br />MySQL is a multi-user, multi-threaded SQL database server. MySQL is a<br />client/server implementation consisting of a server daemon (mysqld)<br />and many different client programs and libraries. The base package<br />contains the MySQL client programs, the client shared libraries, and<br />generic MySQL files.<br /></pre><br /><br />The version 5.0.77 is good, but it not last updated release, which is 5.1.40 up today, which contains an important mysql feature named<br />Pationing: Enables distributing portions of individual tables across a file system, according to rules which can be set when the table is created. In effect, different portions of a table are stored as separate tables in different locations, but from the user point of view, the partitioned table is still a single table.<br /><br />Basically it won’t do an upgrade as the vendor has changed from being MySQL to Sun Microsystems, and as a result I have to do a complete uninstall and re-install manually, first backup your data, stop mysql service and uninstall the current installation( 5.0.45 in my case):<br /><pre name="code" class="java"><br />[root@16 /]service mysqld stop<br />[root@16 /]rpm -qa | grep -i '^mysql-'<br />mysql-server-5.0.45-7.el5<br />mysql-5.0.45-7.el5<br />mysql-devel-5.0.45-7.el5<br />[root@16 /]rpm -e mysql-server-5.0.45-7.el5<br />[root@16 /]rpm -e mysql-5.0.45-7.el5<br />[root@16 /]rpm -e mysql-devel-5.0.45-7.el5<br /></pre><br />Now download all the current MySQL packages you need and install all with rpm -i( links from mySQL site): <br /><pre name="code" class="java"><br />[root@linux /usr/local/bin] mkdir mysql_5.1.40<br />[root@linux /usr/local/bin] cd mysql_5.1.40<br />wget http://dev.mysql.com/get/Downloads/MySQL-5.1/MySQL-server-community-5.1.40-0.rhel5.i386.rpm/from/http://mirror.mirimar.net/mysql/<br />wget http://dev.mysql.com/get/Downloads/MySQL-5.1/MySQL-client-community-5.1.40-0.rhel5.i386.rpm/from/http://mirror.mirimar.net/mysql/<br />wget http://dev.mysql.com/get/Downloads/MySQL-5.1/MySQL-shared-community-5.1.40-0.rhel5.i386.rpm/from/http://mirror.mirimar.net/mysql/<br />wget http://dev.mysql.com/get/Downloads/MySQL-5.1/MySQL-shared-compat-5.1.40-0.rhel5.i386.rpm/from/http://mirror.mirimar.net/mysql/<br />wget http://dev.mysql.com/get/Downloads/MySQL-5.1/MySQL-devel-community-5.1.40-0.rhel5.i386.rpm/from/http://mirror.mirimar.net/mysql/<br />wget http://dev.mysql.com/get/Downloads/MySQL-5.1/MySQL-embedded-community-5.1.40-0.rhel5.i386.rpm/from/http://mirror.mirimar.net/mysql/<br />wget http://dev.mysql.com/get/Downloads/MySQL-5.1/MySQL-test-community-5.1.40-0.rhel5.i386.rpm/from/http://mirror.mirimar.net/mysql/<br />[root@linux /mysql_5.1.40] rpm -i MySQL-shared-community-5.1.40-0.rhel5<br />[root@linux /mysql_5.1.40] rpm -i MySQL-embedded-community-5.1.40-0.rhel5<br />[root@linux /mysql_5.1.40] rpm -i MySQL-server-community-5.1.40-0.rhel5<br />[root@linux /mysql_5.1.40] rpm -i MySQL-client-community-5.1.40-0.rhel5<br />[root@linux /mysql_5.1.40] rpm -i MySQL-test-community-5.1.40-0.rhel5<br />[root@linux /mysql_5.1.40] rpm -i MySQL-devel-community-5.1.40-0.rhel5<br />[root@linux /mysql_5.1.40] mysql_upgrade<br />[root@linux /mysql_5.1.40] service mysql start<br />[root@linux /mysql_5.1.40] mysqladmin -V<br /> mysqladmin Ver 8.42 Distrib 5.1.40, for pc-linux-gnu on i686<br /></pre>Дневник Литалькиhttp://www.blogger.com/profile/00288150999144936549noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-91159126067506247882009-10-19T06:01:00.000-07:002009-10-19T06:04:26.030-07:00The Cloud Dilemma for Developers( From Tikal Community Event)Introduction to Cloud Computing by Yanai Franchi<br /><br /><embed src="http://blip.tv/play/grVLgaeCUQI" type="application/x-shockwave-flash" width="480" height="380" allowscriptaccess="always" allowfullscreen="true"></embed> <br /><br />Google App Engine Intro By Andrew Skiba<br /><br /><embed src="http://blip.tv/play/grVLgab5dAI" type="application/x-shockwave-flash" width="480" height="380" allowscriptaccess="always" allowfullscreen="true"></embed> <br /><br />Amazon AWS Case Study by: Dudi Landau , “Thomson Reuters", "ClearForest CTO”<br /><br /><embed src="http://blip.tv/play/grVLgafzKgI" type="application/x-shockwave-flash" width="480" height="380" allowscriptaccess="always" allowfullscreen="true"></embed>Дневник Литалькиhttp://www.blogger.com/profile/00288150999144936549noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-56148100415321725222009-10-03T04:13:00.001-07:002009-10-03T04:13:09.649-07:00Automated Deployment with Maven - going the whole nine yardsCheck out this SlideShare Presentation: <div style="width:425px;text-align:left" id="__ss_1934771"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/wakaleo/automated-deployment-with-maven-going-the-whole-nine-yards" title="Automated Deployment with Maven - going the whole nine yards">Automated Deployment with Maven - going the whole nine yards</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=automateddeployment-090831204434-phpapp01&stripped_title=automated-deployment-with-maven-going-the-whole-nine-yards" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=automateddeployment-090831204434-phpapp01&stripped_title=automated-deployment-with-maven-going-the-whole-nine-yards" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">documents</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/wakaleo">wakaleo</a>.</div></div>Дневник Литалькиhttp://www.blogger.com/profile/00288150999144936549noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-8526043141992055752009-09-09T02:07:00.000-07:002009-09-09T02:08:07.934-07:00A Watercolor Film about the Evolution of Life<object width="400" height="320"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6130123&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=6130123&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="320"></embed></object><p><a href="http://vimeo.com/6130123">A Record Of Life</a> from <a href="http://vimeo.com/owengatley">Owen Gatley and Luke Jinks</a> on <a href="http://vimeo.com">Vimeo</a>.</p>Gennadyhttp://www.blogger.com/profile/06490582873834905229noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-24752234041091882762009-08-27T02:51:00.000-07:002009-08-27T02:52:36.109-07:00Real World Web: Performance & Scalability<a title="View Real World Web: Performance &amp; Scalability on Scribd" href="http://www.scribd.com/doc/2569319/Real-World-Web-Performance-Scalability" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;">Real World Web: Performance & Scalability</a> <object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="doc_334055230172589" name="doc_334055230172589" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" align="middle" height="500" width="100%" > <param name="movie" value="http://d.scribd.com/ScribdViewer.swf?document_id=2569319&access_key=key-hmtv7al4b6kq08y533b&page=1&version=1&viewMode="> <param name="quality" value="high"> <param name="play" value="true"> <param name="loop" value="true"> <param name="scale" value="showall"> <param name="wmode" value="opaque"> <param name="devicefont" value="false"> <param name="bgcolor" value="#ffffff"> <param name="menu" value="true"> <param name="allowFullScreen" value="true"> <param name="allowScriptAccess" value="always"> <param name="salign" value=""> <embed src="http://d.scribd.com/ScribdViewer.swf?document_id=2569319&access_key=key-hmtv7al4b6kq08y533b&page=1&version=1&viewMode=" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" play="true" loop="true" scale="showall" wmode="opaque" devicefont="false" bgcolor="#ffffff" name="doc_334055230172589_object" menu="true" allowfullscreen="true" allowscriptaccess="always" salign="" type="application/x-shockwave-flash" align="middle" height="500" width="100%"></embed> </object>Дневник Литалькиhttp://www.blogger.com/profile/00288150999144936549noreply@blogger.com0tag:blogger.com,1999:blog-7111452516229749637.post-87974050701760969952009-08-23T02:07:00.000-07:002009-08-23T02:12:05.475-07:00Best GWT widget library(by stackoverflow)<ol><li><a href="http://code.google.com/webtoolkit/">Default</a></li><li><a href="http://extjs.com/products/gxt/">EXT-GWT</a></li><li><a href="http://gwt.components.googlepages.com/">GWT Components Library</a></li><li><a href="http://code.google.com/p/gwt-ext/">GWT-EXT</a></li><li><a href="http://gwt-widget.sourceforge.net/">GWT Widget Library</a></li><li><a href="http://gwtiger.org/">GWTiger</a></li><li><a href="http://code.google.com/p/rocket-gwt/">Rocket GWT</a></li><li><a href="http://code.google.com/p/tatami/">Dojo</a></li><li><a href="http://code.google.com/p/smartgwt/" style="text-decoration: none;">SmartGWT</a></li></ol><div><a href="http://stackoverflow.com/questions/867451/best-gwt-widget-library">Original post.</a></div>Дневник Литалькиhttp://www.blogger.com/profile/00288150999144936549noreply@blogger.com0