<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3451922019587875700</id><updated>2026-02-24T01:45:11.151-08:00</updated><category term="code"/><category term="C"/><category term="Music"/><title type='text'>Try to make things easy.</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default?start-index=26&amp;max-results=25'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>131</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-8521904096398766349</id><published>2026-02-16T19:51:00.000-08:00</published><updated>2026-02-16T19:51:04.209-08:00</updated><title type='text'>10+ Years in /dev/null</title><content type='html'>    &lt;p&gt;Except for 2 recent posts (8 years ago) to help my friend understand Linux, it&#39;s been over 10 years since I wrote my last blog posts.&lt;/p&gt;

    &lt;p&gt;During the recent 10+ years, many dramatic things happened. I would say, my life wasn&#39;t normal. Let&#39;s just say things have been dramatic, but I&#39;m getting through it.&lt;/p&gt;

    &lt;p&gt;One lucky thing is, I am still in the software industry, doing my favorite things as my job. This is a blessing.&lt;/p&gt;

    &lt;p&gt;And suddenly I thought of my blog, and don&#39;t want to abandon it. This place will be my somewhat write-only space. :)&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/8521904096398766349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/8521904096398766349' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/8521904096398766349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/8521904096398766349'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2026/02/10-years-in-devnull.html' title='10+ Years in /dev/null'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-8096352336736520975</id><published>2018-07-26T19:38:00.001-07:00</published><updated>2018-07-27T04:32:35.606-07:00</updated><title type='text'>Where Things go - Unix bin/ series</title><content type='html'>&lt;h2&gt;
Where things go when packages are installed?&lt;/h2&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
/bin, /usr/bin, /usr/local/bin&lt;/h3&gt;
&lt;br /&gt;
Unix shell script is all about &quot;executing a program&quot;. &amp;nbsp;In general, program is designed to do a certain thing very well with versatile option switches.&amp;nbsp; For example, &quot;-l&quot; switch for &quot;/bin/ls&quot;.&amp;nbsp; &quot;Executing a program&quot; is not limited to CLI or shell activity. &amp;nbsp;In heart of Unix, a system is composed by a unit of &quot;Process&quot;, which is a memory image of an executable program.&lt;br /&gt;
The executables are placed in many places. &amp;nbsp;The standard locations are /bin, /usr/bin, and /usr/local/bin. &amp;nbsp;Each are just conventions. &amp;nbsp;For example, if we install firefox on a Linux system, usually it will be placed in /usr/bin/firefox. &amp;nbsp;If someone decided to put it in /bin, that&#39;s okay.&amp;nbsp; This doesn&#39;t break the system. &amp;nbsp;The search path is defined in a shell variable called &quot;PATH&quot;. &amp;nbsp;Most programming languages will have similar config variable for searching. &amp;nbsp;For example, Java has CLASSPATH and Golang has GOPATH. &amp;nbsp;Python has PYTHONPATH, which will be prepended to sys.path list when an interpreter initiates. &amp;nbsp;Unix PATH usually contains minimum &quot;/bin&quot; and &quot;/usr/bin&quot;. &amp;nbsp; There are also /sbin, /usr/sbin, and /usr/local/sbin. &amp;nbsp;But, sbin directory is only for privileged purpose. &amp;nbsp;Normal user might be able to execute this in read-only fashion.&lt;br /&gt;
&lt;br /&gt;
Why so many &quot;bin&quot; (binary) directories? &amp;nbsp;As a matter of fact, the distinction between these directories became blurred.&amp;nbsp; For example, modern Fedora symlinks /bin to /usr/bin. &amp;nbsp;But, let&#39;s visit what was the &quot;intention&quot; of each bin/ directories.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
/bin&lt;/h4&gt;
&lt;br /&gt;
/bin is core executable of a unix operating system. &amp;nbsp;The biggest role of /bin is to provide minimum binaries for boot and recovery mode. &amp;nbsp;Therefore, the convention of /bin is part of &quot;/&quot; partition where boot is mounting. &amp;nbsp;The binary files in this directory will be always available in whichever environment the process is in. &amp;nbsp;The best example is /bin/ls.&amp;nbsp; We can always assume that &quot;ls&quot; command is available in any situation.&amp;nbsp; Usually, packages named binutils and coreutils will deploy binaries into /bin.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
/usr/bin&lt;/h4&gt;
&lt;br /&gt;
/usr/bin is for distribution&#39;s binary files. &amp;nbsp;When a distro organizes packages, the binaries part of OS distro will be placed into /usr/bin directory. &amp;nbsp;So, from our first questions specific to my favorite editor Emacs, &quot;yum install emacs&quot; will place Emacs binary into /usr/bin as /usr/bin/emacs, and other parts (libraries, elisp files) into different directories, called /usr/lib. &amp;nbsp;We will visit this soon.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
/usr/local/bin&lt;/h4&gt;
&lt;br /&gt;
This directory is for local system. &amp;nbsp;This directory is for any software which are not part of distro. &amp;nbsp;For example, if we download a source code of tmux, patch something on our own for unknown feature, and install on the system, then most likely it will be placed into /usr/local/bin. &amp;nbsp;The GNU build system assumes &quot;--prefix&quot; config to &quot;/usr/local&quot; if not specified. &amp;nbsp;Doing so, we can distinguish tmux binary from our source compilation and distro installed tmux binary. &amp;nbsp;The former binary will be /usr/local/bin/tmux, and the latter binary will be /usr/bin/tmux. &lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
/lib, /usr/lib, and /usr/local/lib&lt;/h4&gt;
&lt;br /&gt;
We only handled /bin series.&amp;nbsp; But an executable file commonly comes with multiple files for many reasons.&amp;nbsp; /lib supports other files for an executable.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
/lib directories are for supporting files for executables in /bin.&amp;nbsp; 
Anything which makes executable file useful, but which is not executable
 by itself, will be placed in /lib series directory.&amp;nbsp; The convention is,
 executable files for /bin will find libraries from /lib or /lib64.&amp;nbsp; The
 same convention applies to /usr/bin searching /usr/lib or /usr/lib64.&amp;nbsp; 
And, the same rule for /usr/local/bin.&lt;br /&gt;
&lt;br /&gt;
To complete the conversation, let me mention more directories.&amp;nbsp; There are even more important directories in Unix system. &lt;br /&gt;
The first level is the top level, which is &#39;/&#39;. &amp;nbsp;For &#39;/&#39; level, /bin, /sbin/, and /lib are the main directories for binary files. &amp;nbsp;As modern systems become 64 bit CPU, modern systems include /lib64 directory. &amp;nbsp;We know /bin and /sbin. &amp;nbsp;These are for executable files. &amp;nbsp;/lib and /lib64 are library binary files, or linkable binary files. &amp;nbsp;Most of them are C libraries, which other languages will stub-in with their libc interfacing. &amp;nbsp;There are two important special directories, /etc and /var. &amp;nbsp;In my opinion, /etc/ is named incorrect. &amp;nbsp;/etc is one of the most important directory in the system, which contains all config files for the OS. &amp;nbsp;These are mostly text files. &amp;nbsp;/var is variable content directory. &amp;nbsp;The most popular directory is /var/log, which contains system logs. &amp;nbsp;/var contains mostly data files, either in plain text or binary format. &amp;nbsp;/proc, /dev, /sys won&#39;t be covered here.&lt;br /&gt;
&lt;br /&gt;
The next level is the /usr level. &amp;nbsp;On this level, /usr/include, /usr/bin, /usr/sbin, /usr/lib, /usr/lib64, and /usr/share will be placed. &amp;nbsp;We know /usr/bin and /usr/sbin. &amp;nbsp;These are for executable files. &amp;nbsp;/usr/lib and /usr/lib64 can be guessed from previous level. &amp;nbsp;These are linkable C libraries. &amp;nbsp;(Some are written in assembly, but both asm/c are ended up elf/elf64 kind of binary format, which are treated as the same way. ) &amp;nbsp;/usr/include is where C header files are placed. &amp;nbsp;/usr/share will have other stuff like man pages, fonts for Graphics system, etc.&lt;br /&gt;
The next level is /usr/local.&amp;nbsp; This is similar to /usr level. &amp;nbsp;/usr/local/include, /usr/local/bin, /usr/local/sbin, /usr/local/lib, /usr/local/lib64, /usr/local/share. &amp;nbsp; They behave the same as /usr level, but these directories are from my local system installation, not from the distro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Back to our question: &amp;nbsp;Where things go?&lt;/h4&gt;
&lt;br /&gt;
At this point, we can dig a further detail about file layout laid by yum package manager.&amp;nbsp; When we want to install mysql server, (thanks to Oracle, opensource group had to rename/fork mysql to mariadb), we issue &quot;yum install mariadb-server&quot; on RHEL or CentOS server. &amp;nbsp;In Fedora system, dnf is used instead of yum.&amp;nbsp; &quot;dnf install mariadb-server&quot;.&lt;br /&gt;
To look what files were installed, we can use following command. &amp;nbsp;&quot;rpm -ql&quot; will list files in a given package. &amp;nbsp;As we can see, mysql server provided /etc config, /usr/bin/ executables including the MySQL server itself(/usr/bin/mysqld_safe), mysql libraries (*.so files) under /usr/lib64 directory, document and manpages under /usr/share, and /var/lib/mysql directory for run-variable (such as mysql.sock socket file), and logs in /var/log/mariadb.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;$ rpm -ql mariadb-server&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/etc/logrotate.d/mariadb&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/etc/my.cnf.d/mariadb-server.cnf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/run/mariadb&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/aria_chk&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/aria_dump_log&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/aria_ftdump&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/aria_pack&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/aria_read_log&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/innochecksum&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/mariadb-service-convert&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/my_print_defaults&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/myisam_ftdump&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/myisamchk&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/myisamlog&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/myisampack&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/mysql_install_db&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/mysql_secure_installation&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/mysql_tzinfo_to_sql&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/mysqld_safe&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/replace&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/resolve_stack_dump&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/resolveip&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/wsrep_sst_common&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/wsrep_sst_mariabackup&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/wsrep_sst_mysqldump&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/wsrep_sst_rsync&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/wsrep_sst_rsync_wan&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/wsrep_sst_xtrabackup&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/bin/wsrep_sst_xtrabackup-v2&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/07&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/07/69bc37f26a1a41c25db627ca6e741f3674283d&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/0d&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/0d/5e64382cb9d8547a4f39e7ecb6e9230c15d2a4&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/13&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/13/9d378f787c7458ed20cca0f08725a4b46d95d6&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/18&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/18/6a7a4263fdddaa04c6d56d8fc53bbadc0b222b&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/1a&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/1a/330e5f506700544e7e83f80a006fbea60f0b44&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/2a&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/2a/1c3ed5bbdcfa8f3c59a8b1b05deabbce96299d&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/2b&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/2b/4e76a3395d841de367654ab85a917279544eae&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/33&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/33/b4f714be5c7263f95fecefca2dd38310698abe&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/3c&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/3c/57f6bbf6229fec7b31309f410cfa59d7beb437&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/40&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/40/9a5555811260c669ea0b31a058f8d30f4efb16&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/44&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/44/82b8a2fb5bccca1933b4b8fa880ca073101afe&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/46&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/46/82dfb2855b2eb003064b83670d826fbde6e81b&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/47&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/47/90d0a4ca19e94d3e78ad02eeb05bc4089e6516&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/47/d6829933e751e57b260bc4d97967a31c087627&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/4d&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/4d/31eee35b4eee0d8227a1dafa9fadc288664e02&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/4e&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/4e/cc3b0a86f73a81a3e3d5830e77b502bed91d31&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/5d&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/5d/ac50185e31b8abc7c6f16327c3672bf26d88e4&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/6f&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/6f/2c3669f8fdace052898056be49ab6c71204d38&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/71&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/71/feb118b050b1cc5f0877c1baa52c1b2334a04d&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/7e&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/7e/4b4db940f84e46030047474fa1f41aec479005&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/80&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/80/566468a3aff5645b767a5e33c01b23f5dafff1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/81&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/81/465a1473bca6964e37b113a65a36ba8e36b127&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/85&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/85/9c4e8b5a76fc8634e47fb6e1a29daf8852ae80&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/8c&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/8c/e93602c48bc7741dc2bdd55e951c3410acf828&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/92&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/92/af0abffd118bcf996c2c4e481ec1c4c6755887&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/98&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/98/111fa7869cde6147379b588e1498956107c978&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/99&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/99/1d896e56841cdc26a4e298a131bd52567d8a0d&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/99/f16a0e66d86dc25ea303fbed84c35e4adc2183&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/9a&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/9a/b2090934eb1d9bd032bb94d9098619e5cd1442&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/a0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/a0/2bfc59270525407437f5bf547729ba373ba177&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/a1/9445b256e54f196a3829aac58bf4f49139ea15&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/a5&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/a5/9c430c85514065863c75479fe59da1c94a06f5&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/a6&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/a6/c8a9ef59973e71c7a29615e08c4e1fdd5b70e4&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/a9&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/a9/4e72d1427370d03a8e109a63b6e6140ce0ab18&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/a9/58baafa7fe7f982ad021ce48ee35bde00d8563&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/b7&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/b7/130c3f36369abcd1d75842fc4ebbece80e03fa&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/b7/753b47f584a4983191b630d200a334074b682e&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/cc&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/cc/87a3e8c2f36c89c280d2692062aae3411a542e&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/cc/d75921ce1f4dd7ac4b3ac66ca1c1cf2c609474&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/d0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/d0/067e264e038dbb9c4d3bbee4ca72dd12903e57&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/d7&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/d7/b5038105ded94b48755e280d81555617958a1a&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/d7/ba029b8a789fcca13d63bdda97756101892879&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/dd&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/dd/078cf99fab7a9691a9a1a101b21cfc5a2ad29d&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/de&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/de/7ae341fae7425fb1b8978b2449f6e50d205ac2&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/e0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/e0/9cb5aceb9840b18587045be3cf8ee3d77b452d&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/e2&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/e2/ec917cfe902b2fe429a888116bbed6b52cfcca&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/e5&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/e5/fe58c64cd71b7a2fcd04abe029645073fd1cc0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/ef&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/ef/f1f5c65d204ca96466a4e233456a6b91e2fd89&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/f1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/f1/b465d2f347bd8337da0ee4312435d4da89ad82&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/f1/fb93f74645872fdd9e36870cd0848f5df2f62c&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/f3&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/f3/8547cd11777ed1603839ed0d10c25033f95ba7&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/f5&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/f5/4fa57dad5a3e13acc200e9b4a8b0f7cded62f1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/fb&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/fb/6af65f1e7ad9b6654a40a58f904541c49d0dee&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/fe&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/fe/890bedf4a0381a9ab37a38af7a4c1704f06452&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/ff&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/ff/c16ecade55664771bf1e11541a0aaee5ad73ac&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/.build-id/ff/c1ae2e0dbf80dc1715863264d7c328c106a93c&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/systemd/system/mariadb.service&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/systemd/system/mariadb.service.d&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/systemd/system/mariadb.service.d/tokudb.conf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/systemd/system/mariadb@.service&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/systemd/system/mariadb@bootstrap.service.d&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/systemd/system/mariadb@bootstrap.service.d/use_galera_new_cluster.conf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/sysusers.d/mariadb.conf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib/tmpfiles.d/mariadb.conf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/INFO_BIN&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/INFO_SRC&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/adt_null.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/auth_0x0100.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/auth_ed25519.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/auth_gssapi.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/auth_pam.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/auth_socket.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/auth_test_plugin.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/client_ed25519.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/daemon_example.ini&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/debug_key_management.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/dialog_examples.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/disks.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/example_key_management.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/file_key_management.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/ha_example.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/ha_federated.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/ha_mroonga.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/ha_spider.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/ha_test_sql_discovery.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/handlersocket.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/libdaemon_example.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/locales.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/metadata_lock_info.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/mypluglib.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/qa_auth_client.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/qa_auth_interface.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/qa_auth_server.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/query_cache_info.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/query_response_time.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/semisync_master.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/semisync_slave.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/server_audit.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/simple_password_check.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/sql_errlog.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/lib64/mariadb/plugin/wsrep_info.so&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/libexec/mysql-check-socket&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/libexec/mysql-check-upgrade&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/libexec/mysql-prepare-db-dir&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/libexec/mysql-scripts-common&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/libexec/mysqld&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/doc/mariadb-server&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/doc/mariadb-server/README.mysql-cnf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/groonga-normalizer-mysql/README.md&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/groonga-normalizer-mysql/lgpl-2.0.txt&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/groonga/COPYING&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/groonga/README.md&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/aria_chk.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/aria_dump_log.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/aria_ftdump.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/aria_pack.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/aria_read_log.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/galera_new_cluster.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/galera_recovery.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/innochecksum.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/mariadb-service-convert.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/my_print_defaults.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/myisam_ftdump.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/myisamchk.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/myisamlog.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/myisampack.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/mysql.server.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/mysql_install_db.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/mysql_secure_installation.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/mysql_tzinfo_to_sql.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/mysqld_safe.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/mysqld_safe_helper.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/replace.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/resolve_stack_dump.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/resolveip.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/wsrep_sst_common.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/wsrep_sst_mysqldump.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/wsrep_sst_rsync.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/wsrep_sst_xtrabackup-v2.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man1/wsrep_sst_xtrabackup.1.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/man/man8/mysqld.8.gz&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/fill_help_tables.sql&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/install_spider.sql&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/maria_add_gis_sp.sql&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/maria_add_gis_sp_bootstrap.sql&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/mroonga/AUTHORS&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/mroonga/COPYING&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/mroonga/install.sql&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/mroonga/uninstall.sql&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/my-huge.cnf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/my-innodb-heavy-4G.cnf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/my-large.cnf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/my-medium.cnf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/my-small.cnf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/mysql_performance_tables.sql&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/mysql_system_tables.sql&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/mysql_system_tables_data.sql&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/mysql_test_data_timezone.sql&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/mysql_to_mariadb.sql&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/policy&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/policy/selinux&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/policy/selinux/README&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/policy/selinux/mariadb-server.fc&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/policy/selinux/mariadb-server.te&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/policy/selinux/mariadb.pp&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/policy/selinux/mariadb.te&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/systemd/mariadb.service&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/systemd/mariadb@.service&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/wsrep.cnf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/usr/share/mariadb/wsrep_notify&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/var/lib/mysql&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/var/log/mariadb&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/var/log/mariadb/mariadb.log&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/8096352336736520975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/8096352336736520975' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/8096352336736520975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/8096352336736520975'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2018/07/where-things-go-unix-bin-series.html' title='Where Things go - Unix bin/ series'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-376890105192069666</id><published>2018-07-26T17:59:00.004-07:00</published><updated>2018-07-27T04:21:42.571-07:00</updated><title type='text'>Where Things go - Intro</title><content type='html'>&lt;h2&gt;
Where things go when packages are installed?&lt;/h2&gt;
&lt;h3&gt;
&lt;/h3&gt;
&lt;h3&gt;
Introduction&lt;/h3&gt;
&lt;br /&gt;
When we issue &quot;yum install package-name&quot;, before we know the inside, these look magic. &amp;nbsp;With the magic &quot;install&quot; command, nice things happen without our understanding of &quot;what just happened.&quot; &amp;nbsp;That&#39;s the purpose of package manager software such as yum, apt, brew, or even language specific pip. &amp;nbsp;Thanks to the open source developers&#39; hard works and great contributions, we can just enjoy the magic they designed. &lt;br /&gt;
Sometimes, we wonder the details of what these package managers do.&amp;nbsp; Where do thing go after magic?&amp;nbsp; How these things available like magic after just one simple command?&amp;nbsp; Knowing about this is also useful sometimes.&amp;nbsp; For example, when libraries conflicted, or packages are installed, but libraries are not found, the details of packages will help to resolve the situations.&lt;br /&gt;
In summary, packages are composed of files, and package manager places them to be visible by convention or provided config. &amp;nbsp;The convention starts from old Unix convention.&amp;nbsp; This convention evolved while Linux has been modernized.&amp;nbsp; The conventions are not only for OS distro, but also languages set up their own.&amp;nbsp; Here Distro means the community packaging the OS.&amp;nbsp; For rexample, Fedora Linux and Ubuntu Linux are the two most popular Linux distro.&amp;nbsp; Python pip has certain rules to search libraries, for instance. &amp;nbsp; Each package manager will lay out package files differently, but they resemble each other.&lt;br /&gt;
&lt;br /&gt;
This topic will be covered in multiple posts. &amp;nbsp;We will start with Unix executable paths and library paths. &amp;nbsp;Then, we will case study several package managers, and conclude with summary.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/376890105192069666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/376890105192069666' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/376890105192069666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/376890105192069666'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2018/07/where-things-go-intro.html' title='Where Things go - Intro'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-5788778970614584452</id><published>2014-12-31T05:31:00.001-08:00</published><updated>2022-01-04T05:42:49.137-08:00</updated><title type='text'>Maze Generating in C (like Lumosity Penguin Pursuit)</title><content type='html'>Playing lumosity is fun. Among one of their games, there is a cute maze game. &lt;br /&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right; margin-left: 1em; text-align: right;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLXdi3HpXQGS2MKinTdDXgy89q4SGWnTAomAgqIW2L5Xzr50qmQEM77ullpcHjdhe5QIGVvMC7d0bvXnNmMF1kyXNHNYxekg9vVqVm4KvasLGBFlCTtMaVaEnYSCpAA-fJCUO6fG83H8Q/s1600/LumocityPenguin.png&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLXdi3HpXQGS2MKinTdDXgy89q4SGWnTAomAgqIW2L5Xzr50qmQEM77ullpcHjdhe5QIGVvMC7d0bvXnNmMF1kyXNHNYxekg9vVqVm4KvasLGBFlCTtMaVaEnYSCpAA-fJCUO6fG83H8Q/s1600/LumocityPenguin.png&quot; width=&quot;133&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;lumosity game&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;
In that game, however, the goal is not about solving the maze, but about adjusting the direction when the screen flips or rotates. &amp;nbsp;The point is, generating this kind of maze has computer science theories. &amp;nbsp;Wikipedia has a great reference (&lt;a href=&quot;http://en.wikipedia.org/wiki/Maze_generation_algorithm&quot;&gt;Maze_generation_algorithm&lt;/a&gt;). &amp;nbsp;This fun algorithmic problem is implemented using C. &amp;nbsp;I used back-trace method, and here it is.&lt;br /&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: left; margin-right: 1em; text-align: left;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4VOu0egff0eUgHSLofzUulu5D5UMBeCcOH7bO_gSfZ4yktpz7AM0S_Bo-5xkpyi_yoM_Urb4ESdM6DPaHXDQMoy8B3SsNO56wqHEQeIohgvggs_6ThnuC1So-2GsJpF2YfPMsCglOAcI/s1600/maze-output.png&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4VOu0egff0eUgHSLofzUulu5D5UMBeCcOH7bO_gSfZ4yktpz7AM0S_Bo-5xkpyi_yoM_Urb4ESdM6DPaHXDQMoy8B3SsNO56wqHEQeIohgvggs_6ThnuC1So-2GsJpF2YfPMsCglOAcI/s1600/maze-output.png&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;sample output&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;!--HTML generated using hilite.me--&gt;&lt;br /&gt;
&lt;div style=&quot;background: rgb(255, 255, 255); border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0px;&quot;&gt;&lt;span style=&quot;color: #557799;&quot;&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;unistd.h&amp;gt;
#include &amp;lt;string.h&amp;gt;

#define WIDTH   6
#define HEIGHT  6

struct node {
    int north_wall;
    int west_wall;
    int visited;
    int x;
    int y;
};

void printMaze(int cnt, struct node *cells)
{
    int y,x;
    for (y=0; y&amp;lt;HEIGHT; ++y) {
        for (x=0; x&amp;lt;WIDTH; ++x) {
            struct node *c = cells + ( x + y*WIDTH );
            printf(&quot;+&quot;);
            if (c-&amp;gt;north_wall) {
                if (c-&amp;gt;x == 0 &amp;amp;&amp;amp; c-&amp;gt;y == 0) 
                    printf(&quot;  &quot;);
                else
                    printf(&quot;--&quot;);
            }
            else 
                printf(&quot;  &quot;);
        }
        printf(&quot;+\n&quot;);

        for (x=0; x&amp;lt;WIDTH; ++x) {
            struct node *c = cells + (x + y*WIDTH) ;
            if (c-&amp;gt;west_wall) 
                printf(&quot;|  &quot;);
            else
                printf(&quot;   &quot;);
        }
        printf(&quot;|\n&quot;);
    }
    
    for (x=0; x&amp;lt;WIDTH-1; ++x) {
        printf(&quot;+--&quot;);
    }
    printf(&quot;+  +\n\n&quot;);
}

// rtn is a pointer array.  NWES.
int neighbor(struct node *cells, struct node *cur, struct node **rtn)
{
    int x = cur-&amp;gt;x;
    int y = cur-&amp;gt;y;
    rtn[0] = rtn[1] = rtn[2] = rtn[3] = NULL;

    if (y-1 &amp;gt;= 0) rtn[0] = cells + (x + (y-1)*WIDTH);
    if (x-1 &amp;gt;= 0) rtn[1] = cells + ((x-1) + y*WIDTH);
    if (x+1 &amp;lt; WIDTH)  rtn[2] = cells + ((x+1) + y*WIDTH);
    if (y+1 &amp;lt; HEIGHT) rtn[3] = cells + (x + (y+1)*WIDTH);

    return rtn[0] != NULL || rtn[1] != NULL ||
           rtn[2] != NULL || rtn[3] != NULL;
}

void shuffle(struct node **array, size_t n) {    
    struct timeval tv;
    gettimeofday(&amp;amp;tv, NULL);
    int usec = tv.tv_usec;
    srand48(usec);

    if (n &amp;gt; 1) {
        size_t i;
        for (i = n - 1; i &amp;gt; 0; i--) {
            size_t j = (unsigned int) (drand48()*(i+1));
            struct node  *t = array[j];
            array[j] = array[i];
            array[i] = t;
        }
    }
}

void punchWall(struct node *node1, struct node *node2)
{
    int x1 = node1-&amp;gt;x;
    int y1 = node1-&amp;gt;y;
    int x2 = node2-&amp;gt;x;
    int y2 = node2-&amp;gt;y;

    if (x1 &amp;lt; x2 &amp;amp;&amp;amp; y1 == y2)
        node2-&amp;gt;west_wall =0;
    if (x2 &amp;lt; x1 &amp;amp;&amp;amp; y1 == y2)
        node1-&amp;gt;west_wall =0;

    if (y1 &amp;gt; y2 &amp;amp;&amp;amp; x1 == x2)
        node1-&amp;gt;north_wall =0;
    if (y2 &amp;gt; y1 &amp;amp;&amp;amp; x1 == x2)
        node2-&amp;gt;north_wall =0;
        
}

void genMaze(struct node *cells, struct node *cur)
{
    int i;
    if (cur-&amp;gt;visited == 0) {
        struct node *nei[4];

        cur-&amp;gt;visited = 1;
        if (neighbor( cells, cur, nei)) {
            shuffle(nei, 4);
            for (i=0; i&amp;lt;4; ++i) {
                if (nei[i] &amp;amp;&amp;amp; nei[i]-&amp;gt;visited==0) {
                    punchWall(cur, nei[i]);
                    genMaze(cells, nei[i]);
                }
            }
        }
    }
}

int main(int argc, char **argv) {
    int i;
    struct node cells[ WIDTH * HEIGHT ];

    // Initialize Cells
    for (i=0; i &amp;lt; WIDTH*HEIGHT; ++i) {
        cells[i].north_wall = cells[i].west_wall = 1;
        cells[i].visited = 0;
        cells[i].x = i % WIDTH;
        cells[i].y = i / WIDTH;
    }
    genMaze(cells, &amp;amp;cells[0]);
    printMaze(WIDTH * HEIGHT, cells);
    return 0;
}

&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/5788778970614584452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/5788778970614584452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/5788778970614584452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/5788778970614584452'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2014/12/maze-generating-in-c-like-lumosity.html' title='Maze Generating in C (like Lumosity Penguin Pursuit)'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLXdi3HpXQGS2MKinTdDXgy89q4SGWnTAomAgqIW2L5Xzr50qmQEM77ullpcHjdhe5QIGVvMC7d0bvXnNmMF1kyXNHNYxekg9vVqVm4KvasLGBFlCTtMaVaEnYSCpAA-fJCUO6fG83H8Q/s72-c/LumocityPenguin.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-3474001684745947710</id><published>2014-12-25T13:14:00.001-08:00</published><updated>2014-12-25T13:19:34.627-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="code"/><title type='text'>Quick Example of Red Black Tree.</title><content type='html'>In previous articles, FreeBSD AVL tree is ported to Linux and a usage example is presented.&lt;br /&gt;
Linux uses red-black tree instead of AVL. &amp;nbsp;Just searching for rbtree.h in Linux kernel returned so many components such as ext4. &amp;nbsp;But, rbtree can&#39;t be used in user space in kernel source form. &amp;nbsp;Luckily there is user-space ported rbtree&amp;nbsp;&lt;a href=&quot;https://github.com/forhappy/rbtree&quot;&gt;in here.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
That code contains a test code. &amp;nbsp;Here, I post one more example. &amp;nbsp;My example is the same test written in AVL test code (&lt;a href=&quot;http://litdream.blogspot.com/2014/12/sample-usage-of-avl-quick-and-dirty.html&quot;&gt;here&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
By the way, using these codes have advantage of efficiency. &lt;br /&gt;
Enjoy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #557799;&quot;&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #557799;&quot;&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #557799;&quot;&gt;#include &amp;lt;unistd.h&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #557799;&quot;&gt;#include &amp;lt;errno.h&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #557799;&quot;&gt;#include &amp;lt;string.h&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #557799;&quot;&gt;#include &quot;rbtree.h&quot;&lt;/span&gt;
&lt;span style=&quot;color: #557799;&quot;&gt;#include &quot;rbtree_test.h&quot;&lt;/span&gt;


&lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #0066bb; font-weight: bold;&quot;&gt;printTree&lt;/span&gt;(RBRootType &lt;span style=&quot;color: #333333;&quot;&gt;*&lt;/span&gt;root)
{
 &lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;int&lt;/span&gt; count &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;0&lt;/span&gt;;
 Person &lt;span style=&quot;color: #333333;&quot;&gt;*&lt;/span&gt;data, &lt;span style=&quot;color: #333333;&quot;&gt;*&lt;/span&gt;rootdata;
 RBNodeType &lt;span style=&quot;color: #333333;&quot;&gt;*&lt;/span&gt;cur;

 rootdata &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; container_of( root&lt;span style=&quot;color: #333333;&quot;&gt;-&amp;gt;&lt;/span&gt;rb_node, Person, node);
 printf(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;Root node: %s&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0; color: #666666; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;&lt;/span&gt;, rootdata&lt;span style=&quot;color: #333333;&quot;&gt;-&amp;gt;&lt;/span&gt;name);
 
 cur &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; rb_first(root);
 &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;while&lt;/span&gt; (cur) {
  data &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; container_of( cur, Person, node);
  printf(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;%d : %s(%s)&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0; color: #666666; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;&lt;/span&gt;, count, data&lt;span style=&quot;color: #333333;&quot;&gt;-&amp;gt;&lt;/span&gt;name, data&lt;span style=&quot;color: #333333;&quot;&gt;-&amp;gt;&lt;/span&gt;phone);
  cur &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; rb_next(cur);
  count&lt;span style=&quot;color: #333333;&quot;&gt;++&lt;/span&gt;;
 }
 printf(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;Total nodes in tree: %d&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0; color: #666666; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;&lt;/span&gt;, count);
 printf(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;---------------------------------------------------------------------&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0; color: #666666; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;&lt;/span&gt;);

}

Person&lt;span style=&quot;color: #333333;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #0066bb; font-weight: bold;&quot;&gt;searchPerson&lt;/span&gt;(RBRootType &lt;span style=&quot;color: #333333;&quot;&gt;*&lt;/span&gt;root, &lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;char&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;*&lt;/span&gt;name)
{
 RBNodeType &lt;span style=&quot;color: #333333;&quot;&gt;*&lt;/span&gt;curnode &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; root&lt;span style=&quot;color: #333333;&quot;&gt;-&amp;gt;&lt;/span&gt;rb_node;
 &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;while&lt;/span&gt; (curnode) {
  Person &lt;span style=&quot;color: #333333;&quot;&gt;*&lt;/span&gt;data &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; container_of(curnode, Person, node);
  &lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;int&lt;/span&gt; result;

  result &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; strcmp(name, data&lt;span style=&quot;color: #333333;&quot;&gt;-&amp;gt;&lt;/span&gt;name);

  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt; (result &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;0&lt;/span&gt;)
   curnode &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; curnode&lt;span style=&quot;color: #333333;&quot;&gt;-&amp;gt;&lt;/span&gt;rb_left;
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt; (result &lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;0&lt;/span&gt;)
   curnode &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; curnode&lt;span style=&quot;color: #333333;&quot;&gt;-&amp;gt;&lt;/span&gt;rb_right;
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;else&lt;/span&gt;
   &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt; data;
 }
 &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #007020;&quot;&gt;NULL&lt;/span&gt;;
}

&lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #0066bb; font-weight: bold;&quot;&gt;insertPerson&lt;/span&gt;(RBRootType &lt;span style=&quot;color: #333333;&quot;&gt;*&lt;/span&gt;root, Person &lt;span style=&quot;color: #333333;&quot;&gt;*&lt;/span&gt;data)
{
 RBNodeType &lt;span style=&quot;color: #333333;&quot;&gt;**&lt;/span&gt;new &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;&amp;amp;&lt;/span&gt;(root&lt;span style=&quot;color: #333333;&quot;&gt;-&amp;gt;&lt;/span&gt;rb_node), &lt;span style=&quot;color: #333333;&quot;&gt;*&lt;/span&gt;parent &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #007020;&quot;&gt;NULL&lt;/span&gt;;
 &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;while&lt;/span&gt; (&lt;span style=&quot;color: #333333;&quot;&gt;*&lt;/span&gt;new) {
  Person &lt;span style=&quot;color: #333333;&quot;&gt;*&lt;/span&gt;cur &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; container_of(&lt;span style=&quot;color: #333333;&quot;&gt;*&lt;/span&gt;new, Person, node);
  &lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;int&lt;/span&gt; result &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; strcmp(data&lt;span style=&quot;color: #333333;&quot;&gt;-&amp;gt;&lt;/span&gt;name, cur&lt;span style=&quot;color: #333333;&quot;&gt;-&amp;gt;&lt;/span&gt;name);
  
  parent &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;*&lt;/span&gt;new;
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt; (result &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;0&lt;/span&gt;)
   new &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;&amp;amp;&lt;/span&gt;((&lt;span style=&quot;color: #333333;&quot;&gt;*&lt;/span&gt;new)&lt;span style=&quot;color: #333333;&quot;&gt;-&amp;gt;&lt;/span&gt;rb_left);
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt; (result &lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;0&lt;/span&gt;)
   new &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;&amp;amp;&lt;/span&gt;((&lt;span style=&quot;color: #333333;&quot;&gt;*&lt;/span&gt;new)&lt;span style=&quot;color: #333333;&quot;&gt;-&amp;gt;&lt;/span&gt;rb_right);
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;else&lt;/span&gt; 
   &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;0&lt;/span&gt;;
 }
 
 &lt;span style=&quot;color: #888888;&quot;&gt;// New node&lt;/span&gt;
 rb_link_node(&lt;span style=&quot;color: #333333;&quot;&gt;&amp;amp;&lt;/span&gt;(data&lt;span style=&quot;color: #333333;&quot;&gt;-&amp;gt;&lt;/span&gt;node), parent, new);
 rb_insert_color(&lt;span style=&quot;color: #333333;&quot;&gt;&amp;amp;&lt;/span&gt;(data&lt;span style=&quot;color: #333333;&quot;&gt;-&amp;gt;&lt;/span&gt;node), root);

 &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;1&lt;/span&gt;;
}


&lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #0066bb; font-weight: bold;&quot;&gt;main&lt;/span&gt;(&lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;int&lt;/span&gt; argc, &lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;char&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;**&lt;/span&gt;argv)
{
 RBRootType mytree &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; RB_ROOT;

 Person a;
 memset(&lt;span style=&quot;color: #333333;&quot;&gt;&amp;amp;&lt;/span&gt;a, &lt;span style=&quot;color: #0044dd;&quot;&gt;&#39;\0&#39;&lt;/span&gt;, &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;sizeof&lt;/span&gt; a);
 strncpy(a.name, &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;Micheal Smith&quot;&lt;/span&gt;, &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;14&lt;/span&gt;);
 strncpy(a.phone, &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;1112223333&quot;&lt;/span&gt;, &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;11&lt;/span&gt;);
 insertPerson(&lt;span style=&quot;color: #333333;&quot;&gt;&amp;amp;&lt;/span&gt;mytree, &lt;span style=&quot;color: #333333;&quot;&gt;&amp;amp;&lt;/span&gt;a);

 Person b;
 memset(&lt;span style=&quot;color: #333333;&quot;&gt;&amp;amp;&lt;/span&gt;b, &lt;span style=&quot;color: #0044dd;&quot;&gt;&#39;\0&#39;&lt;/span&gt;, &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;sizeof&lt;/span&gt; b);
 strncpy(b.name, &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;Jack Stuart&quot;&lt;/span&gt;, &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;12&lt;/span&gt;);
 strncpy(b.phone, &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;2223334444&quot;&lt;/span&gt;, &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;11&lt;/span&gt;);
 insertPerson(&lt;span style=&quot;color: #333333;&quot;&gt;&amp;amp;&lt;/span&gt;mytree, &lt;span style=&quot;color: #333333;&quot;&gt;&amp;amp;&lt;/span&gt;b);
 
 
 Person &lt;span style=&quot;color: #333333;&quot;&gt;*&lt;/span&gt;srch &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #007020;&quot;&gt;NULL&lt;/span&gt;;
 printTree(&lt;span style=&quot;color: #333333;&quot;&gt;&amp;amp;&lt;/span&gt;mytree);
 
 &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt; ( (srch &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; searchPerson(&lt;span style=&quot;color: #333333;&quot;&gt;&amp;amp;&lt;/span&gt;mytree, &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;Micheal Smith&quot;&lt;/span&gt;)) &lt;span style=&quot;color: #333333;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color: #007020;&quot;&gt;NULL&lt;/span&gt; ) 
  printf(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;Micheal found: %s&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0; color: #666666; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;&lt;/span&gt;, srch&lt;span style=&quot;color: #333333;&quot;&gt;-&amp;gt;&lt;/span&gt;phone);
 &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;else&lt;/span&gt;
  printf(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;Micheal not found.&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0; color: #666666; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;&lt;/span&gt;);

 &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt; ( (srch &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; searchPerson(&lt;span style=&quot;color: #333333;&quot;&gt;&amp;amp;&lt;/span&gt;mytree, &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;Jack Stuart&quot;&lt;/span&gt;)) &lt;span style=&quot;color: #333333;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color: #007020;&quot;&gt;NULL&lt;/span&gt; ) 
  printf(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;Jack found: %s&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0; color: #666666; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;&lt;/span&gt;, srch&lt;span style=&quot;color: #333333;&quot;&gt;-&amp;gt;&lt;/span&gt;phone);
 &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;else&lt;/span&gt;
  printf(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;Jack not found.&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0; color: #666666; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;&lt;/span&gt;);
 printf(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;--------------------------------------------------&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0; color: #666666; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;&lt;/span&gt;);
 
 &lt;span style=&quot;color: #888888;&quot;&gt;/**&lt;/span&gt;
&lt;span style=&quot;color: #888888;&quot;&gt;  *          Mike&lt;/span&gt;
&lt;span style=&quot;color: #888888;&quot;&gt;  *          /  &lt;/span&gt;
&lt;span style=&quot;color: #888888;&quot;&gt;  *        Jack&lt;/span&gt;
&lt;span style=&quot;color: #888888;&quot;&gt;  */&lt;/span&gt;

 &lt;span style=&quot;color: #888888;&quot;&gt;// If I add Andrew, it&#39;s unbalanced.&lt;/span&gt;
 Person c;
 memset(&lt;span style=&quot;color: #333333;&quot;&gt;&amp;amp;&lt;/span&gt;c, &lt;span style=&quot;color: #0044dd;&quot;&gt;&#39;\0&#39;&lt;/span&gt;, &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;sizeof&lt;/span&gt; c);
 strcpy(c.name, &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;Andrew Kudos&quot;&lt;/span&gt;);
 strcpy(c.phone, &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;3334445555&quot;&lt;/span&gt;);
 insertPerson(&lt;span style=&quot;color: #333333;&quot;&gt;&amp;amp;&lt;/span&gt;mytree, &lt;span style=&quot;color: #333333;&quot;&gt;&amp;amp;&lt;/span&gt;c);

 &lt;span style=&quot;color: #888888;&quot;&gt;//traverse!!  root must be Jack.&lt;/span&gt;
 printTree(&lt;span style=&quot;color: #333333;&quot;&gt;&amp;amp;&lt;/span&gt;mytree);

 
 &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;0&lt;/span&gt;;
}
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/3474001684745947710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/3474001684745947710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/3474001684745947710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/3474001684745947710'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2014/12/quick-example-of-red-black-tree.html' title='Quick Example of Red Black Tree.'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-112190611310438834</id><published>2014-12-08T23:01:00.000-08:00</published><updated>2014-12-25T13:16:00.744-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="code"/><title type='text'>Sample Usage of AVL, quick and dirty.</title><content type='html'>So, previous article ported FreeBSD AVL into Linux AVL. (&lt;a href=&quot;http://litdream.blogspot.com/2014/12/avl-tree-in-c.html&quot;&gt;AVL Tree in C&lt;/a&gt;&amp;nbsp;)&lt;br /&gt;
Here is quick and dirty way of how to use it. &lt;br /&gt;
It will be straightforward, except one thing.&lt;br /&gt;
&lt;br /&gt;
Your data struct must be divided into two pieces. &amp;nbsp;Data part and avl_node_t part. &amp;nbsp;The Data part size must be multiple of 8. &amp;nbsp;If not, there will be a puzzling assert((offset &amp;amp; 0x7) == 0). &amp;nbsp;Here is the usage. &amp;nbsp;For convinience, I put the link part the first. &amp;nbsp;This will easy to cast type between (avl_node_t) and (struct person) with the same pointer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;div style=&quot;background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;&quot;&gt;&lt;pre style=&quot;margin: 0; line-height: 125%&quot;&gt;&lt;span style=&quot;color: #557799&quot;&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #557799&quot;&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #557799&quot;&gt;#include &amp;lt;unistd.h&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #557799&quot;&gt;#include &amp;lt;errno.h&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #557799&quot;&gt;#include &amp;lt;string.h&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #557799&quot;&gt;#include &amp;lt;stdint.h&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #557799&quot;&gt;#include &amp;quot;avl.h&amp;quot;&lt;/span&gt;

&lt;span style=&quot;color: #557799&quot;&gt;#define NAME_LEN 36&lt;/span&gt;
&lt;span style=&quot;color: #557799&quot;&gt;#define PHONE_LEN 10&lt;/span&gt;

&lt;span style=&quot;color: #888888&quot;&gt;// assuming dtype has a link member as node type (avl_node_t)&lt;/span&gt;
&lt;span style=&quot;color: #557799&quot;&gt;#define OFFSETOF(data) 0&lt;/span&gt;

&lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;typedef&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;struct&lt;/span&gt; person {
 &lt;span style=&quot;color: #333399; font-weight: bold&quot;&gt;avl_node_t&lt;/span&gt;  my_link; 
 &lt;span style=&quot;color: #333399; font-weight: bold&quot;&gt;char&lt;/span&gt; name[ NAME_LEN &lt;span style=&quot;color: #333333&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #0000DD; font-weight: bold&quot;&gt;1&lt;/span&gt;];
 &lt;span style=&quot;color: #333399; font-weight: bold&quot;&gt;char&lt;/span&gt; phone[ PHONE_LEN &lt;span style=&quot;color: #333333&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #0000DD; font-weight: bold&quot;&gt;1&lt;/span&gt;];
} Person;

&lt;span style=&quot;color: #333399; font-weight: bold&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #0066BB; font-weight: bold&quot;&gt;comparePerson&lt;/span&gt;(&lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;const&lt;/span&gt; &lt;span style=&quot;color: #333399; font-weight: bold&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #333333&quot;&gt;*&lt;/span&gt;a, &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;const&lt;/span&gt; &lt;span style=&quot;color: #333399; font-weight: bold&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #333333&quot;&gt;*&lt;/span&gt;b) 
{
 Person &lt;span style=&quot;color: #333333&quot;&gt;*&lt;/span&gt;_a &lt;span style=&quot;color: #333333&quot;&gt;=&lt;/span&gt; (Person &lt;span style=&quot;color: #333333&quot;&gt;*&lt;/span&gt;)a;
 Person &lt;span style=&quot;color: #333333&quot;&gt;*&lt;/span&gt;_b &lt;span style=&quot;color: #333333&quot;&gt;=&lt;/span&gt; (Person &lt;span style=&quot;color: #333333&quot;&gt;*&lt;/span&gt;)b;
 &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;if&lt;/span&gt; ( strncmp(_a&lt;span style=&quot;color: #333333&quot;&gt;-&amp;gt;&lt;/span&gt;name, _b&lt;span style=&quot;color: #333333&quot;&gt;-&amp;gt;&lt;/span&gt;name, NAME_LEN) &lt;span style=&quot;color: #333333&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: #0000DD; font-weight: bold&quot;&gt;0&lt;/span&gt; )
  &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #333333&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000DD; font-weight: bold&quot;&gt;1&lt;/span&gt;;
 &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;if&lt;/span&gt; ( strncmp(_a&lt;span style=&quot;color: #333333&quot;&gt;-&amp;gt;&lt;/span&gt;name, _b&lt;span style=&quot;color: #333333&quot;&gt;-&amp;gt;&lt;/span&gt;name, NAME_LEN) &lt;span style=&quot;color: #333333&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #0000DD; font-weight: bold&quot;&gt;0&lt;/span&gt; )
  &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000DD; font-weight: bold&quot;&gt;1&lt;/span&gt;;
 &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000DD; font-weight: bold&quot;&gt;0&lt;/span&gt;;
}

Person&lt;span style=&quot;color: #333333&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #0066BB; font-weight: bold&quot;&gt;searchByName&lt;/span&gt;(&lt;span style=&quot;color: #333399; font-weight: bold&quot;&gt;avl_tree_t&lt;/span&gt; &lt;span style=&quot;color: #333333&quot;&gt;*&lt;/span&gt;tree, &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;const&lt;/span&gt; &lt;span style=&quot;color: #333399; font-weight: bold&quot;&gt;char&lt;/span&gt; &lt;span style=&quot;color: #333333&quot;&gt;*&lt;/span&gt;name)
{
 Person &lt;span style=&quot;color: #333333&quot;&gt;*&lt;/span&gt;cur &lt;span style=&quot;color: #333333&quot;&gt;=&lt;/span&gt; AVL_NODE2DATA(tree&lt;span style=&quot;color: #333333&quot;&gt;-&amp;gt;&lt;/span&gt;avl_root, tree&lt;span style=&quot;color: #333333&quot;&gt;-&amp;gt;&lt;/span&gt;avl_offset);
 &lt;span style=&quot;color: #333399; font-weight: bold&quot;&gt;avl_node_t&lt;/span&gt; &lt;span style=&quot;color: #333333&quot;&gt;*&lt;/span&gt;p;
 &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;while&lt;/span&gt; (cur) {
  &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;if&lt;/span&gt; (strcmp(cur&lt;span style=&quot;color: #333333&quot;&gt;-&amp;gt;&lt;/span&gt;name, name) &lt;span style=&quot;color: #333333&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #0000DD; font-weight: bold&quot;&gt;0&lt;/span&gt;)
   &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;return&lt;/span&gt; cur;
  &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;if&lt;/span&gt; (strcmp(name, cur&lt;span style=&quot;color: #333333&quot;&gt;-&amp;gt;&lt;/span&gt;name) &lt;span style=&quot;color: #333333&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #0000DD; font-weight: bold&quot;&gt;0&lt;/span&gt;) {
   p &lt;span style=&quot;color: #333333&quot;&gt;=&lt;/span&gt; AVL_DATA2NODE( cur, tree&lt;span style=&quot;color: #333333&quot;&gt;-&amp;gt;&lt;/span&gt;avl_offset );
   p &lt;span style=&quot;color: #333333&quot;&gt;=&lt;/span&gt; p&lt;span style=&quot;color: #333333&quot;&gt;-&amp;gt;&lt;/span&gt;avl_child[&lt;span style=&quot;color: #0000DD; font-weight: bold&quot;&gt;0&lt;/span&gt;];
  }
  &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;else&lt;/span&gt; {
   p &lt;span style=&quot;color: #333333&quot;&gt;=&lt;/span&gt; AVL_DATA2NODE( cur, tree&lt;span style=&quot;color: #333333&quot;&gt;-&amp;gt;&lt;/span&gt;avl_offset );
   p &lt;span style=&quot;color: #333333&quot;&gt;=&lt;/span&gt; p&lt;span style=&quot;color: #333333&quot;&gt;-&amp;gt;&lt;/span&gt;avl_child[&lt;span style=&quot;color: #0000DD; font-weight: bold&quot;&gt;1&lt;/span&gt;];
  }
  cur &lt;span style=&quot;color: #333333&quot;&gt;=&lt;/span&gt; p &lt;span style=&quot;color: #333333&quot;&gt;?&lt;/span&gt; AVL_NODE2DATA( p, tree&lt;span style=&quot;color: #333333&quot;&gt;-&amp;gt;&lt;/span&gt;avl_offset) &lt;span style=&quot;color: #333333&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #007020&quot;&gt;NULL&lt;/span&gt;;
 }
 &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #007020&quot;&gt;NULL&lt;/span&gt;;
}

&lt;span style=&quot;color: #333399; font-weight: bold&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #0066BB; font-weight: bold&quot;&gt;printTree&lt;/span&gt;(&lt;span style=&quot;color: #333399; font-weight: bold&quot;&gt;avl_tree_t&lt;/span&gt; &lt;span style=&quot;color: #333333&quot;&gt;*&lt;/span&gt;tree)
{
 &lt;span style=&quot;color: #333399; font-weight: bold&quot;&gt;int&lt;/span&gt; i &lt;span style=&quot;color: #333333&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000DD; font-weight: bold&quot;&gt;0&lt;/span&gt;;
 Person &lt;span style=&quot;color: #333333&quot;&gt;*&lt;/span&gt;cur;

 printf(&lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;Total nodes in tree: %ld&lt;/span&gt;&lt;span style=&quot;color: #666666; font-weight: bold; background-color: #fff0f0&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;&lt;/span&gt;, avl_numnodes(tree));
 printf(&lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;Root: %s&lt;/span&gt;&lt;span style=&quot;color: #666666; font-weight: bold; background-color: #fff0f0&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;&lt;/span&gt;, ((Person &lt;span style=&quot;color: #333333&quot;&gt;*&lt;/span&gt;)(AVL_NODE2DATA( tree&lt;span style=&quot;color: #333333&quot;&gt;-&amp;gt;&lt;/span&gt;avl_root, tree&lt;span style=&quot;color: #333333&quot;&gt;-&amp;gt;&lt;/span&gt;avl_offset)))&lt;span style=&quot;color: #333333&quot;&gt;-&amp;gt;&lt;/span&gt;name);

 cur &lt;span style=&quot;color: #333333&quot;&gt;=&lt;/span&gt; avl_first(tree);
 &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;while&lt;/span&gt; (cur) {
  printf(&lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;%d : %s(%s)&lt;/span&gt;&lt;span style=&quot;color: #666666; font-weight: bold; background-color: #fff0f0&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;&lt;/span&gt;, i, cur&lt;span style=&quot;color: #333333&quot;&gt;-&amp;gt;&lt;/span&gt;name, cur&lt;span style=&quot;color: #333333&quot;&gt;-&amp;gt;&lt;/span&gt;phone);
  cur &lt;span style=&quot;color: #333333&quot;&gt;=&lt;/span&gt; AVL_NEXT(tree, cur);
  i&lt;span style=&quot;color: #333333&quot;&gt;++&lt;/span&gt;;
 }
 printf(&lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;---------------------------------------------------------------------&lt;/span&gt;&lt;span style=&quot;color: #666666; font-weight: bold; background-color: #fff0f0&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;&lt;/span&gt;);
}

&lt;span style=&quot;color: #333399; font-weight: bold&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #0066BB; font-weight: bold&quot;&gt;main&lt;/span&gt;(&lt;span style=&quot;color: #333399; font-weight: bold&quot;&gt;int&lt;/span&gt; argc, &lt;span style=&quot;color: #333399; font-weight: bold&quot;&gt;char&lt;/span&gt; &lt;span style=&quot;color: #333333&quot;&gt;**&lt;/span&gt;argv)
{
 &lt;span style=&quot;color: #333399; font-weight: bold&quot;&gt;avl_tree_t&lt;/span&gt; avl;

 Person a;
 memset(&lt;span style=&quot;color: #333333&quot;&gt;&amp;amp;&lt;/span&gt;a, &lt;span style=&quot;color: #0044DD&quot;&gt;&amp;#39;\0&amp;#39;&lt;/span&gt;, &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;sizeof&lt;/span&gt; a);
 strncpy(a.name, &lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;Micheal Smith&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #0000DD; font-weight: bold&quot;&gt;14&lt;/span&gt;);
 strncpy(a.phone, &lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;1112223333&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #0000DD; font-weight: bold&quot;&gt;11&lt;/span&gt;);
 avl_create(&lt;span style=&quot;color: #333333&quot;&gt;&amp;amp;&lt;/span&gt;avl, comparePerson, &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;sizeof&lt;/span&gt;(Person), OFFSETOF(&lt;span style=&quot;color: #333333&quot;&gt;&amp;amp;&lt;/span&gt;a));
 avl_add(&lt;span style=&quot;color: #333333&quot;&gt;&amp;amp;&lt;/span&gt;avl, &lt;span style=&quot;color: #333333&quot;&gt;&amp;amp;&lt;/span&gt;a);

 Person b;
 memset(&lt;span style=&quot;color: #333333&quot;&gt;&amp;amp;&lt;/span&gt;b, &lt;span style=&quot;color: #0044DD&quot;&gt;&amp;#39;\0&amp;#39;&lt;/span&gt;, &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;sizeof&lt;/span&gt; b);
 strncpy(b.name, &lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;Jack Stuart&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #0000DD; font-weight: bold&quot;&gt;12&lt;/span&gt;);
 strncpy(b.phone, &lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;2223334444&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #0000DD; font-weight: bold&quot;&gt;11&lt;/span&gt;);
 avl_add(&lt;span style=&quot;color: #333333&quot;&gt;&amp;amp;&lt;/span&gt;avl, &lt;span style=&quot;color: #333333&quot;&gt;&amp;amp;&lt;/span&gt;b);

 &lt;span style=&quot;color: #888888&quot;&gt;//traverse &lt;/span&gt;
 printTree(&lt;span style=&quot;color: #333333&quot;&gt;&amp;amp;&lt;/span&gt;avl);

 &lt;span style=&quot;color: #888888&quot;&gt;/**&lt;/span&gt;
&lt;span style=&quot;color: #888888&quot;&gt;  *          Mike&lt;/span&gt;
&lt;span style=&quot;color: #888888&quot;&gt;  *          /  &lt;/span&gt;
&lt;span style=&quot;color: #888888&quot;&gt;  *        Jack&lt;/span&gt;
&lt;span style=&quot;color: #888888&quot;&gt;  */&lt;/span&gt;

 &lt;span style=&quot;color: #888888&quot;&gt;// If I add Andrew, it&amp;#39;s unbalanced.&lt;/span&gt;
 Person c;
 memset(&lt;span style=&quot;color: #333333&quot;&gt;&amp;amp;&lt;/span&gt;c, &lt;span style=&quot;color: #0044DD&quot;&gt;&amp;#39;\0&amp;#39;&lt;/span&gt;, &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;sizeof&lt;/span&gt; c);
 strcpy(c.name, &lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;Andrew Kudos&amp;quot;&lt;/span&gt;);
 strcpy(c.phone, &lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;3334445555&amp;quot;&lt;/span&gt;);
 avl_add(&lt;span style=&quot;color: #333333&quot;&gt;&amp;amp;&lt;/span&gt;avl, &lt;span style=&quot;color: #333333&quot;&gt;&amp;amp;&lt;/span&gt;c);

 &lt;span style=&quot;color: #888888&quot;&gt;//traverse!!  root must be Jack.&lt;/span&gt;
 printTree(&lt;span style=&quot;color: #333333&quot;&gt;&amp;amp;&lt;/span&gt;avl);

 &lt;span style=&quot;color: #888888&quot;&gt;// Searching.&lt;/span&gt;
 Person &lt;span style=&quot;color: #333333&quot;&gt;*&lt;/span&gt;search;
 search &lt;span style=&quot;color: #333333&quot;&gt;=&lt;/span&gt; searchByName(&lt;span style=&quot;color: #333333&quot;&gt;&amp;amp;&lt;/span&gt;avl, &lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;Jack Stuart&amp;quot;&lt;/span&gt;);
 &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;if&lt;/span&gt; (search) 
  printf(&lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;Jack found: %s&lt;/span&gt;&lt;span style=&quot;color: #666666; font-weight: bold; background-color: #fff0f0&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;&lt;/span&gt;, search&lt;span style=&quot;color: #333333&quot;&gt;-&amp;gt;&lt;/span&gt;name);
 &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;else&lt;/span&gt;
  printf(&lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;Jack not found&lt;/span&gt;&lt;span style=&quot;color: #666666; font-weight: bold; background-color: #fff0f0&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;&lt;/span&gt;);

 search &lt;span style=&quot;color: #333333&quot;&gt;=&lt;/span&gt; searchByName(&lt;span style=&quot;color: #333333&quot;&gt;&amp;amp;&lt;/span&gt;avl, &lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;lalalalala&amp;quot;&lt;/span&gt;);
 &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;if&lt;/span&gt; (search)
  printf(&lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;lala found:&lt;/span&gt;&lt;span style=&quot;color: #666666; font-weight: bold; background-color: #fff0f0&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;&lt;/span&gt;);
 &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;else&lt;/span&gt;
  printf(&lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;lala not found&lt;/span&gt;&lt;span style=&quot;color: #666666; font-weight: bold; background-color: #fff0f0&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0&quot;&gt;&amp;quot;&lt;/span&gt;);

 &lt;span style=&quot;color: #008800; font-weight: bold&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000DD; font-weight: bold&quot;&gt;0&lt;/span&gt;;
}
&lt;/pre&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/112190611310438834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/112190611310438834' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/112190611310438834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/112190611310438834'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2014/12/sample-usage-of-avl-quick-and-dirty.html' title='Sample Usage of AVL, quick and dirty.'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-5816927154022303893</id><published>2014-12-08T22:43:00.001-08:00</published><updated>2014-12-31T05:58:00.962-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="code"/><title type='text'>AVL Tree in C</title><content type='html'>I ported FreeBSD avl implementation into Linux users pace version.&lt;br /&gt;
Code is here(&lt;a href=&quot;https://github.com/litdream/avl_linux&quot;&gt;github link&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
Practically speaking, we don&#39;t need AVL tree these days in high level languages like Python. &amp;nbsp;There are good alternatives in general. &amp;nbsp;In algorithm perspective, there is a Red Black Tree, the rival of AVL tree. &amp;nbsp;They mostly serve for the similar purpose. &amp;nbsp;RBTree is easier to implement, but size is factor of 2 vs. AVL is 1.4. &amp;nbsp;Linux uses RBTree internally, and FreeBSD had AVL. &amp;nbsp;(&lt;a href=&quot;http://lwn.net/Articles/184495/&quot;&gt;Linux RBTree article&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
Well, in day to day life, modern languages provide their own version of &quot;List&quot;. &amp;nbsp;In Python case, we just stuff data into the list, and later call it by index. &amp;nbsp;For efficient search, we use bisect module. &amp;nbsp;If we need sort, Python list takes very &quot;Intelligent&quot; approach to be efficient. &amp;nbsp;I will discuss this later, but listsort.txt in Python source can be referenced.&lt;br /&gt;
&lt;br /&gt;
But, then, why bother AVL tree?&lt;br /&gt;
First, it&#39;s mentioned more in different algorithm books probably thanks to BST (Binary Search Tree). &amp;nbsp;And, AVL is a good subject to introduce concepts of algorithm, &quot;let&#39;s cover the weakness of a given algorithm.&quot; &amp;nbsp;Second, it&#39;s personal. &amp;nbsp;I just like it with no reason.&lt;br /&gt;
&lt;br /&gt;
When I searched AVL written in C, I found many pages. &amp;nbsp;First, GNU libavl is an overkill. &amp;nbsp;Other small projects are not mature enough. &amp;nbsp;Either it&#39;s &quot;not generic&quot;, or data allocation logic is &quot;malloc&quot;. &amp;nbsp;This will cost performance. &amp;nbsp;Modern days, C is chosen by performance in many cases. &amp;nbsp;So, too many or individual malloc is a bigger penalty.&lt;br /&gt;
&lt;br /&gt;
Interestingly, FreeBSD has avl implementation and they still include it even today. &amp;nbsp;Probably, former SunOS used avl for kernel data. &amp;nbsp;This is small. &amp;nbsp;This only implements AVL algorithm, but comparator is a function pointer which I can attach. &amp;nbsp;AVL node does not bother the data, but my data suppose to embed avl_node_t. &amp;nbsp;And, AVL algorithm doesn&#39;t do high-level search. &amp;nbsp;So, I have to provide the high level search, like searchByName(const char *key). &amp;nbsp;I liked the design &amp;nbsp;because it is more flexible. &amp;nbsp;Unfortunately, it&#39;s not directly usable in Linux. &amp;nbsp;So, I tweaked and made it usable in Linux. &amp;nbsp;There are two files (avl.h and avl.c). &amp;nbsp;Enjoy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
&lt;/h4&gt;
</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/5816927154022303893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/5816927154022303893' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/5816927154022303893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/5816927154022303893'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2014/12/avl-tree-in-c.html' title='AVL Tree in C'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-4597530468600572414</id><published>2013-12-27T22:19:00.004-08:00</published><updated>2013-12-27T22:19:26.371-08:00</updated><title type='text'>Bach, again.</title><content type='html'>My youtube #12,&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/LSJBddnMSkc?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/4597530468600572414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/4597530468600572414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/4597530468600572414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/4597530468600572414'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2013/12/bach-again.html' title='Bach, again.'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-1373206326312891585</id><published>2013-10-30T09:22:00.002-07:00</published><updated>2013-10-30T18:19:03.560-07:00</updated><title type='text'>Pushing scale practice doesn&#39;t help improvising.</title><content type='html'>I used to have this problem in my first year playing guitar.&amp;nbsp; My first ultimate goal was &quot;Far beyond the sun&quot; by Yngwie Malmsteen.&amp;nbsp; Pretty ambitious for a beginner.&amp;nbsp; Accomplishing song by song, picking speed went up, left finger maneuver became fluent.&amp;nbsp; However, Yngwie Malmsteen style is pretty challenging.&amp;nbsp; If I remember that time, I practiced different scales in metronome.&amp;nbsp; One day, I could play &quot;far beyond the sun.&quot;&amp;nbsp; However, the speed I play for Yngwie Malmsteen didn&#39;t help other songs.&amp;nbsp; I was puzzled.&lt;br /&gt;
&lt;br /&gt;
Big Question. &quot;I could cover fastest genre of the music, but other than his music, I am still struggling with other pieces.&amp;nbsp; Why? &quot;&lt;br /&gt;
&lt;br /&gt;
Having 10 years of gap without playing guitar, I can&#39;t play Yngwie Malmsteen as I did.&amp;nbsp; But, I can enjoy more music than back then I used to play.&amp;nbsp; Here is my answer about the question.&lt;br /&gt;
&lt;br /&gt;
Improvising has two modes.&amp;nbsp; &quot;Controlled progression&quot; and &quot;Shredding&quot;.&amp;nbsp; Controlled progression relies on current musical context.&amp;nbsp; What is the key signature/main scale?&amp;nbsp; What is the beat signature/and main rhythm? More importantly, controlled progression much relies on the brain, the most important tool for music.&amp;nbsp; Muscle movement works together with the brain.&amp;nbsp; Do you see that the limiter is &quot;the brain&quot;?&lt;br /&gt;
On the other hand, shredding depends less on the brain.&amp;nbsp; It heavily relies on muscle memory.&amp;nbsp; Brain just sets up basic information like &quot;what code/what sclae&quot; and &quot;what major beat&quot;, then finger works all.&amp;nbsp; In here, detail is less important, such as order of notes&amp;nbsp; as long as notes are in scale, and diatonically working.&lt;br /&gt;
&lt;br /&gt;
When playing in band, these come out somewhat mixed.&amp;nbsp; For example, Yngwie Malmsteen, many phrases are roughly 20% controlled, 80% shredded.&amp;nbsp; So, brain tells &quot;From now, 4 measures will be diminished rooted 20th fret C down.&quot;&amp;nbsp; Then, during 4 measures fingers improvise without help of brain.&amp;nbsp; In the meanwhile, brain accepts the next phase, &quot;stop at 8th C vibration, for the 4 beats, and then the last half beat will Bm harmonic minor in pulling manner.&quot;&amp;nbsp; After executing 4 measure, this should end at C, and pulling Bm harmonic scale comes up.&amp;nbsp; Sure while this finger is working, Brain just thinks the next, not the one fingers are playing.&lt;br /&gt;
&lt;br /&gt;
When in shredding mode, accidentals are not common.&amp;nbsp; Because accidental is a big brain work.&amp;nbsp; &quot;We make irregular note X, which is not in scale, but produces effects of A,B,C, and some alpha of tention.&amp;nbsp; It will be resolved by in scale tonic Y or 5th of Y, etc. &quot;&amp;nbsp; These need lots of controlled work.&amp;nbsp; Fingers can&#39;t just dance on their own.&amp;nbsp; They will pay attention to the brain.&lt;br /&gt;
&lt;br /&gt;
Now the key point here.&amp;nbsp; Increasing maneuverability in controlled work is the foundation to play variety of music.&amp;nbsp; At the same time, brain should have more tools to provide good signals to the fingers.&amp;nbsp; I will explain this further.&lt;br /&gt;
Here is a simple test how fast I can maneuver in controlled.&lt;br /&gt;
Simply pentatonic through 6 strings.(Low A(5th fret 6th string) to high C(8th fret 1st string).&amp;nbsp; Try beginning with down picking. Change the same play with beginning with up picking.&amp;nbsp; This is one example of controlled picking.&lt;br /&gt;
There are different patterns of controls like 3rd down (C-A, B-G, A-F, G-E, F-D, .... ), alternate/3 string sweep, etc.&lt;br /&gt;
If these maneuver is fluent, many things will be easier.&amp;nbsp; Plus, shredding speed will also increase.&lt;br /&gt;
&lt;br /&gt;
At the same time, don&#39;t forget to listen to more good musics.&amp;nbsp; And catch ideas from the music.&amp;nbsp; Eventually, collection of these ideas will make brain lucrative to utilize, and improvising will be cool and sound.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/1373206326312891585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/1373206326312891585' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/1373206326312891585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/1373206326312891585'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2013/10/pushing-scale-practice-doesnt-help.html' title='Pushing scale practice doesn&#39;t help improvising.'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-5337403578502140857</id><published>2013-10-28T17:04:00.001-07:00</published><updated>2013-10-28T17:04:34.933-07:00</updated><title type='text'>Guitarists...</title><content type='html'>So, my favorite instrument is the guitar.&amp;nbsp; Practically, I only can play the guitar.&amp;nbsp; Many great musicians inspires me, but due to my limited time, when I get a chance to play it, I have to concentrate for just one thing.&lt;br /&gt;
&lt;br /&gt;
Anyway, my favorite guitarist is &quot;Jason Becker.&quot;&amp;nbsp; He is the god and the most fluent guitarist.&amp;nbsp; At the same time, he had many brilliant ideas.&amp;nbsp; Considering all of his work, which ended at his age of 29, he didn&#39;t have his best time, unfortunately.&lt;br /&gt;
&lt;br /&gt;
Then, my favorite &quot;active&quot; guitarist is &quot;Guthrie Govan&quot;.&amp;nbsp; He is very special, to tell the truth.&amp;nbsp; Most of guitarists have own color, specializing handful of genre, Guthrie doesn&#39;t have specialty.&amp;nbsp; He is really all-rounder.&amp;nbsp; Rock, Blues, Jazz (Classic, Beebop, fusion, plus some brilliant covers with different colors), and Country.&amp;nbsp; Picking, finger style, slap, tapping, arpegio, ...&amp;nbsp; He also plays very good acoustic.&amp;nbsp; His theory is very strong.&lt;br /&gt;
&lt;br /&gt;I recommend his videos in youtube.&amp;nbsp; None have disappointed me, so far.</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/5337403578502140857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/5337403578502140857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/5337403578502140857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/5337403578502140857'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2013/10/guitarists.html' title='Guitarists...'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-8462640259777861868</id><published>2013-08-21T15:51:00.001-07:00</published><updated>2013-08-21T15:52:47.927-07:00</updated><title type='text'>Virtual Fighter 4 title music</title><content type='html'>My youtube #11. &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/Cq5XDivo4pY?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/8462640259777861868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/8462640259777861868' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/8462640259777861868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/8462640259777861868'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2013/08/virtual-fighter-4-title-music.html' title='Virtual Fighter 4 title music'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-8576907531292998588</id><published>2013-04-30T21:23:00.002-07:00</published><updated>2013-04-30T21:24:57.205-07:00</updated><title type='text'></title><content type='html'>My youtube #10.&lt;br /&gt;
&lt;br /&gt;
Time What is Time - Blind Guardian.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/OvONMnPeUZg?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/8576907531292998588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/8576907531292998588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/8576907531292998588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/8576907531292998588'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2013/04/my-youtube-10.html' title=''/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-4392224546273049893</id><published>2012-10-22T22:13:00.001-07:00</published><updated>2012-11-12T21:27:35.384-08:00</updated><title type='text'>Audacity slow-down calculator</title><content type='html'>&lt;b&gt;*Note: this article is out-dated.&amp;nbsp; Or, no-worth.&amp;nbsp; I found that audacity fixed noise problem with tempo change.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
If you play music, audacity is an essential tool for many useful things. &amp;nbsp;Copying music, Ear training, etc. &amp;nbsp;When slowing down original source using &quot;change tempo&quot;, annoying noise mixes with proper output. &amp;nbsp; I walk two step to avoid noise. &amp;nbsp;&quot;change speed&quot; and &quot;change pitch&quot;.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
How much parameter to give to slowdown but no noise, no pitch change is calculated.&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
#!/usr/bin/env python&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
import os&lt;/div&gt;
&lt;div&gt;
import sys&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
a = raw_input(&quot;slow down percent (50% half speed): &quot;)&lt;/div&gt;
&lt;div&gt;
target_speed = float(a)&lt;/div&gt;
&lt;div&gt;
target_pitch = ( 100.0 - target_speed ) / target_speed * 100&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
print &quot;target pitch change: %2.2f&quot; % target_pitch&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/4392224546273049893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/4392224546273049893' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/4392224546273049893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/4392224546273049893'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2012/10/audacity-slow-down-calculator.html' title='Audacity slow-down calculator'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-6085850596623666278</id><published>2012-10-03T08:04:00.001-07:00</published><updated>2012-10-03T08:04:31.267-07:00</updated><title type='text'>About Enthusiasm</title><content type='html'>&lt;span style=&quot;background-color: white; color: #777777; font-family: &#39;Droid Sans&#39;, arial, sans-serif; font-size: 15px; line-height: 24px;&quot;&gt;I read a Korean article (&lt;a href=&quot;http://wangsy.com/blog/2012/10/passion/&quot;&gt;http://wangsy.com/blog/2012/10/passion/&lt;/a&gt;), and One made me think for a while is this:&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #777777; font-family: &#39;Droid Sans&#39;, arial, sans-serif; font-size: 15px; line-height: 24px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white; color: #777777; font-family: &#39;Droid Sans&#39;, arial, sans-serif; font-size: 15px; line-height: 24px;&quot;&gt;요즘 드는 또 다른 생각이 열정이란 만들어 내는 것도, 지켜내는 것도 아닌 주어지는 것 같습니다. 마치 천부적 재능이, 말 그대로 주어진 것이듯 ,열정도 주어지는 것인 것 같습니다. 뭔가 매우 비관적이고 운명론적 사고관이지만, 요즘 드는 생각이 그렇습니다. 열정을 가져 보아라, 열정이 꺼지지 않도록 잘 지켜라는 조언은 천부적 재능을 받아 보아라, 왜 예쁘게 태어나지 않았니 라고 하는 것과 같은 부질없는 이야기 인 것 같습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #777777; font-family: &#39;Droid Sans&#39;, arial, sans-serif; font-size: 15px; line-height: 24px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;It&#39;s very difficult to argue or practically apply this sentence. &amp;nbsp;But, I want to say that the author is so brave to tell this, because this is hard to say or hard to find an answer in practical world. &amp;nbsp;After a while, I somewhat agreed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/6085850596623666278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/6085850596623666278' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/6085850596623666278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/6085850596623666278'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2012/10/about-enthusiasm.html' title='About Enthusiasm'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-1898031164557849371</id><published>2012-08-03T11:14:00.000-07:00</published><updated>2012-08-03T11:19:48.708-07:00</updated><title type='text'>Software Design, or not?</title><content type='html'>During my career, I saw many people who write good pieces of software. &amp;nbsp;My goal has always been pursuing this. &amp;nbsp;To write a good software like these people. &amp;nbsp;But, here is an interesting thing to bring up.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So many of great software developers don&#39;t prepare separate time for designing!&lt;/div&gt;
&lt;div&gt;
In my case, I need time to design what I will write. &amp;nbsp;My design process is roughly like this:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
1. Gather requirements. &amp;nbsp;And list what should happen.&lt;/div&gt;
&lt;div&gt;
2. Divide out inputs and outputs. &amp;nbsp;This eventually determines &quot;interface&quot;.&lt;/div&gt;
&lt;div&gt;
3. Organize internal or intermediate data that I will handle in my system. &amp;nbsp;And see if I have to store anything. &amp;nbsp;(Store in memory for session, or store in DB for&amp;nbsp;persistence). &amp;nbsp;These will contribute a lot to concrete functions or classes. &amp;nbsp;And key to the solutions.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Yep.. No UML, but my own way of listing and diagrams to represent. And this takes time. &amp;nbsp;So much time, actually.&lt;/div&gt;
&lt;div&gt;
I saw, and I am working with many great and smart developers. &amp;nbsp;And I know they write close to flawless codes in a shot. &amp;nbsp;My conclusion is &quot;They also design, but they all do in their brain. &amp;nbsp;Therefore, design process is fast, and sometimes it looks missing from outside.&quot; &amp;nbsp;To be thorough, I need to check one by one through paper. &amp;nbsp;So, I am solving problem case by case. &amp;nbsp;This is inefficient, but so far this brings out my best quality. &amp;nbsp;I wish I could do these check step in brain so that I can produce software faster. &lt;br /&gt;
The key skill here is &quot;memory&quot;, which is very hard to improve.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/1898031164557849371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/1898031164557849371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/1898031164557849371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/1898031164557849371'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2012/08/software-design-or-not.html' title='Software Design, or not?'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-1482259674242609204</id><published>2012-08-02T14:36:00.002-07:00</published><updated>2013-05-06T17:08:29.392-07:00</updated><title type='text'>Passing by a bird</title><content type='html'>&lt;b id=&quot;internal-source-marker_0.18498014472424984&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;On the way to work this morning, I was driving my truck on 400 south at 60 mph. &amp;nbsp;I saw a bird from a distance. &amp;nbsp;He was flying -- entering low to cross the road from the right. &amp;nbsp;This bird, interestingly, tried to turn the direction, right in front of my lane. &amp;nbsp;While approaching to him(or her?), I recognized that it was &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;an eagle&lt;/span&gt;&lt;b id=&quot;internal-source-marker_0.18498014472424984&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; by his slow but strong wing flap. &amp;nbsp;Since he just began to take off, he couldn’t fly high enough to clear height of my truck. &amp;nbsp;Initially, I wasn’t bothered slowing down because birds are quick to fly away. &amp;nbsp;But, the &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;eagle&lt;/span&gt;&lt;b id=&quot;internal-source-marker_0.18498014472424984&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; seemed to stay still in front of me trying to turn around. &amp;nbsp;I put on a break a little bit and paid big attention to the distance to him. &amp;nbsp;After my second slow down for the elevated alerting level, the &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;eagle&lt;/span&gt;&lt;b id=&quot;internal-source-marker_0.18498014472424984&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; finally finished turning.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;When we were close, the &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;eagle&lt;/span&gt;&lt;b id=&quot;internal-source-marker_0.18498014472424984&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; made a big wing-flap. &amp;nbsp;I saw him very close through the top right corner of my front windshield. &amp;nbsp;He missed me. &amp;nbsp;Although, it was an alerting situation, his final wing flap (flying away) looked beautiful. &amp;nbsp;He made total of 4 or 5 strong flaps during this incident, but 60 mph was a fast speed for natural creatures. &amp;nbsp;I felt so relieved that I didn’t harm this beautiful bird.&lt;/span&gt;&lt;/b&gt;</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/1482259674242609204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/1482259674242609204' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/1482259674242609204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/1482259674242609204'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2012/08/passing-by-bird.html' title='Passing by a bird'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-216949437466715577</id><published>2012-06-25T20:52:00.003-07:00</published><updated>2012-06-25T20:52:19.190-07:00</updated><title type='text'>Several drafts...</title><content type='html'>I decided to use blog more to improve my writing skill. &lt;br /&gt;
Still writing a blog post is a hard thing. &amp;nbsp;I read somewhere to encourage blog posting saying &quot;Invest a little more time writing facebook/twitter to write a blog post.&quot; (translated from Korean)&lt;br /&gt;
&lt;br /&gt;
So, here I am.&lt;br /&gt;
My method to accomplish this was to use draft. &amp;nbsp;I write freely and save as draft.&lt;br /&gt;
I review my drafts and edits until I am satisfied to publish one.&lt;br /&gt;
&lt;br /&gt;
The reality is only having several drafts so far. &amp;nbsp;Not one makes me happy to publish.&lt;br /&gt;
The trend will be only having more drafts, but very few will be published. &amp;nbsp;:)&lt;br /&gt;
I really envy people who write fluently and describe one&#39;s thought on writing.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/216949437466715577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/216949437466715577' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/216949437466715577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/216949437466715577'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2012/06/several-drafts.html' title='Several drafts...'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-8751062713295027587</id><published>2012-05-18T21:49:00.004-07:00</published><updated>2012-05-18T21:49:45.346-07:00</updated><title type='text'>my youtube #7</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/3bbcYveGCPw?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/8751062713295027587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/8751062713295027587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/8751062713295027587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/8751062713295027587'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2012/05/my-youtube-7.html' title='my youtube #7'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-953811523420375191</id><published>2012-05-11T05:16:00.001-07:00</published><updated>2012-05-11T05:16:25.411-07:00</updated><title type='text'>Back to Gentoo for one of my guest</title><content type='html'>Confessing that I gave up FreeBSD, but came back to Gentoo.&lt;br /&gt;
But not for my desktop. &amp;nbsp;My desktop is Windows 7, although I don&#39;t like this.&lt;br /&gt;
Running Gentoo as a guest with Enlightenment windows manager.&lt;br /&gt;
&lt;br /&gt;
Feel home!&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/953811523420375191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/953811523420375191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/953811523420375191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/953811523420375191'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2012/05/back-to-gentoo-for-one-of-my-guest.html' title='Back to Gentoo for one of my guest'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-4447585050865810681</id><published>2012-04-04T19:43:00.002-07:00</published><updated>2014-12-25T13:19:47.427-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="code"/><title type='text'>Experience with FreeBSD</title><content type='html'>I use Windows Vista on my laptop, but I miss Linux a lot. &lt;br /&gt;
&lt;div&gt;
Maybe I am not the only one to see these days problems of popular Linux distros. &amp;nbsp;&quot;Bloated.&quot;&lt;/div&gt;
&lt;div&gt;
My best featured machine is 5-year-old Dell Inspiron 1521 (AMD, 2G mem, 120G disk). &amp;nbsp;This barely runs modern FC15 without visual effects. &amp;nbsp;My choice of Desktop, KDE turned down my love with their broken nepomuk indexer. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I feel like, my laptop is ruled out. &amp;nbsp;When I found myself disabling default stuffs just to make my user experience not terrible, a question came up. &amp;nbsp;Aren&#39;t there any other distro for small boxes?&lt;/div&gt;
&lt;div&gt;
Well, there are DamnSmallLinux. &amp;nbsp;But that&#39;s not a major distro.&lt;/div&gt;
&lt;div&gt;
How about Gentoo? &amp;nbsp;I used to be a big fan of Gentoo, but now I don&#39;t like compiling unless I have to do so. &amp;nbsp;If Gentoo supports binary packages a little better, that will be the perfect distro.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Then, FreeBSD came.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp;1. FreeBSD is a major distro, and actually a traditional unix than Linux.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp;2. FreeBSD supports not only source compilation, but also does binary packages. &amp;nbsp;Very strong and&amp;nbsp;convenient.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp;3. If the software works on both FreeBSD and Linux, then most likely its compatibility level is very high already.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
However, I just realized that #3 is self-torturing, too much. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
I was about to develop my own patch for screen-4.0.3 on FreeBSD, I ran into a different issue.&lt;/div&gt;
&lt;div&gt;
Complaint of &quot;sys/stropts.h&quot;.&lt;/div&gt;
&lt;div&gt;
I didn&#39;t know what that header file supposed to be... But, well, elite programmers like screen developers use this, and there should be a reason to be used. &amp;nbsp;So, I searched and learned about how FreeBSD organize compatibility header files. &amp;nbsp;But, when I looked at binary patch file, disappointed a little bit.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoKetBsxc2rVdA3s81oXd-hyeKtjfedhKbJz_XTr3hwGEyCMLYfsyXHsIB4e3fvb9pTV0ux-MmjLsDDuygpwGKXYtQBcaPYfC0TazuO0KsuKoovHraYxbsKm1tatq4Ne8fx-i-qmNytwUP/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt; &lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;

--- process.c
+++ process.c
@@ -37,7 +37,7 @@
 #include &quot;config.h&quot;
 
 /* for solaris 2.1, Unixware (SVR4.2) and possibly others: */
-#ifdef SVR4
+#if defined(SVR4) &amp;amp;&amp;amp; !defined(__FreeBSD__)
 # include sys stropts.h
 #endif
 &lt;/code&gt;
&lt;/pre&gt;
&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;

&lt;/code&gt;&lt;/div&gt;
&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;
&lt;/code&gt;
&lt;div&gt;
&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;
&lt;/code&gt;
&lt;div&gt;
This happens three times in different files. &amp;nbsp;&lt;/div&gt;
&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;
&lt;/code&gt;
&lt;div&gt;
In other words, FreeBSD doesn&#39;t use this header. &amp;nbsp;Reading a little more from stackoverflow, surely this is for Sun. &amp;nbsp;Main source tree not having this patch means, FreeBSD isn&#39;t major enough, and I will run into this situations in the future.. &amp;nbsp;This is self-torturing. &amp;nbsp;&lt;/div&gt;
&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;
&lt;/code&gt;
&lt;div&gt;
Fine! &amp;nbsp;Close to 10 years of Development life won&#39;t give up this obstacle. &amp;nbsp;It&#39;s tedious, but not difficult. &amp;nbsp;So, I prepared seperate header directory from&amp;nbsp;/usr/src/sys/compat/svr4/, and renamed its contents. &amp;nbsp;(svr4_ was prefixed, DAMN!!). &amp;nbsp;Modified Makefile and compiled. &amp;nbsp;The next &quot;make&quot; command passed &quot;sys/stropts.h&quot;, but another complaint.&lt;/div&gt;
&lt;br /&gt;
&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;
&lt;/code&gt;
&lt;div&gt;
&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;utmp.c:731: error: &#39;struct utmpx&#39; has no member named &#39;ut_xtime&#39;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;
&lt;/code&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;

&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;
struct is difined differently?? &amp;nbsp;From BSD and Linux??&lt;/div&gt;
&lt;div&gt;
And again, from binary patch file (patch-os.c, patch-utmp.c) read about how to work around utmp problem (the patch was describing how to replace some sections of code, not just lines), I realized that &quot;ENOUGH!!!&quot; &amp;nbsp;Having compatibility by paying this torturing is costly. &amp;nbsp;I accepted that &quot;FreeBSD isn&#39;t popular enough.&quot;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now, I am not sure if I want to try out Arch Linux.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/4447585050865810681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/4447585050865810681' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/4447585050865810681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/4447585050865810681'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2012/04/experience-with-freebsd.html' title='Experience with FreeBSD'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-7719576712473384088</id><published>2012-02-03T07:04:00.000-08:00</published><updated>2012-02-03T07:10:04.160-08:00</updated><title type='text'>subversion can&#39;t roll back source file.</title><content type='html'>&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;Hmm.. If I misunderstand, please someone correct me.&lt;/span&gt;&lt;br style=&quot;background-color: white; line-height: 18px;&quot; /&gt;&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;Subversion doesn&#39;t support &quot;clean&quot; way to roll back source code!! &amp;nbsp;Again, delta based VCS is broken from the concept. &amp;nbsp;This is not an issue with &quot;git&quot;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;If I messed up codes, but they are not checked in, then simply subversion rolls back happily.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&quot;svn revert [filenames]&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;I happily checked in a source change, and found out that I messed up later, merge comes into play.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;From svn book,&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html#svn.branchmerge.basicmerging.undo&quot;&gt;http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html#svn.branchmerge.basicmerging.undo&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Command is simply this.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&quot;&lt;span style=&quot;background-color: white;&quot;&gt;svn merge -c -303 http://svn.example.com/repos/calc/trunk&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Now this is troublesome. &amp;nbsp;What if the revision 303 check-in is huge, with many other files checked-in together?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;In other words, revision 303 contains my mess-up, but all other check-ins from other files are fine, what should we do? &amp;nbsp;We kill good changes simply exchange for roll back my bad change?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Does anyone know if merge can work in file level?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/7719576712473384088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/7719576712473384088' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/7719576712473384088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/7719576712473384088'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2012/02/subversion-cant-roll-back-source-file.html' title='subversion can&#39;t roll back source file.'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-3843278885963547727</id><published>2012-01-31T15:31:00.001-08:00</published><updated>2012-01-31T15:31:40.018-08:00</updated><title type='text'>My Youtube #6</title><content type='html'>my youtube #6&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.youtube.com/watch?v=CzdT-YY3J8k&quot;&gt;http://www.youtube.com/watch?v=CzdT-YY3J8k&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/CzdT-YY3J8k?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/3843278885963547727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/3843278885963547727' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/3843278885963547727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/3843278885963547727'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2012/01/my-youtube-6.html' title='My Youtube #6'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-1920193404207508783</id><published>2011-12-31T21:08:00.001-08:00</published><updated>2011-12-31T21:10:38.837-08:00</updated><title type='text'>youtube #5</title><content type='html'>&lt;a href=&quot;http://www.youtube.com/watch?v=0-xWadhoWKE&quot;&gt;My youtube #5&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/0-xWadhoWKE?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/1920193404207508783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/1920193404207508783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/1920193404207508783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/1920193404207508783'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2011/12/youtube-5.html' title='youtube #5'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-1167779952571746247</id><published>2011-12-26T18:55:00.000-08:00</published><updated>2011-12-26T18:57:55.334-08:00</updated><title type='text'>youtube upload #4</title><content type='html'>This time, it is Korean heavy metal.&lt;br /&gt;
&lt;br /&gt;
Kim Kyungho, &quot;Judgement Day&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/EwMlPOALm3s?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/1167779952571746247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/1167779952571746247' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/1167779952571746247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/1167779952571746247'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2011/12/youtube-upload-4.html' title='youtube upload #4'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3451922019587875700.post-2046158494202145615</id><published>2011-10-27T05:23:00.000-07:00</published><updated>2011-10-27T05:23:48.148-07:00</updated><title type='text'>Hard to keep up the blog, thanks to twitter, G+, facebook.</title><content type='html'>Thanks to those easy to use social media, I forget my blogs more often.&amp;nbsp; I hope to get something interesting to post.&amp;nbsp; These days, I don&#39;t have any specific subjects.&amp;nbsp; Other than work and music, I don&#39;t run my side projects and researches.&lt;br /&gt;
&lt;br /&gt;
Maybe I can put my &quot;type slow&quot; practice.&amp;nbsp; I definitely get benefit from that practice.&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://litdream.blogspot.com/feeds/2046158494202145615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3451922019587875700/2046158494202145615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/2046158494202145615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3451922019587875700/posts/default/2046158494202145615'/><link rel='alternate' type='text/html' href='http://litdream.blogspot.com/2011/10/hard-to-keep-up-blog-thanks-to-twitter.html' title='Hard to keep up the blog, thanks to twitter, G+, facebook.'/><author><name>Raymond</name><uri>http://www.blogger.com/profile/12590881589757651877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://bp1.blogger.com/_c6sA-rPrMlo/R4QL8wzkBTI/AAAAAAAAACM/ZiIEJ1499sw/S220/images.jpeg'/></author><thr:total>0</thr:total></entry></feed>