Stop Talking, Start Doing - 停止空想,开始行动 My personal blog, with some boring research staff and some tricks I was fancy to. I'll try my best to make this blog fun and useful. Not just a place I complain about all happens in my Lab. https://codersherlock.github.com// Thu, 29 Dec 2016 11:06:02 -0500 Thu, 29 Dec 2016 11:06:02 -0500 Jekyll v3.0.1 How to design a board game, step by step <h1 id="history">History</h1> <p>I always want to design a board game, but unfortunately, I have higher expectation on this design so that I can even finish one during these years. My dreaming work must be suit for both entertainment and competition, which both amateurs or pros can enjoy this game.</p> <p>My first designed board game is <em>“SimCity ~ Board version”</em>. It was a great fun when I was in forth grade of elementary. Compare to a board game, it’s more like a paper-version web game. I offer everything include game design, a “database” (notebook) to record all players status. At beginning, it wasn’t that popular, but my classmates love it. With several weeks running, 30 players joined this silly game and students from other classes came for me to join my game. During three month testing, I released more than <strong>120</strong> new buildings, <strong>15</strong> new activities and even made this game payable. It sounds stupid, but lots of them rather pay 50 cents for accelerating their construction. I also faced competitors, but no one wants to play their bad designed game. At least for myself, I won’t spent players’ 20 hours for just a nuclear plant, offer them a lottery that every players whose level is up to 20 can get chance to win their own plants (Trust me, my lottery only have 0.01 chance that you win nothing, and anyone can get free tickets everyday and only pay 10 cents for a spare lottery ticket). Of course, my board game didn’t last for long. Before final weeks, I made a statement that game will closed. At the evening after statement, I wrote wealthy rank for all players to let all of them know who wins or lose.</p> <p>This history always encourage me to design a new board game, but this time I am not facing to young boys and girls who don’t have too much to play at school. I admit this is a serious challenge to me but I’ll try my best to make this game fun to play.</p> <h1 id="my-dream">My dream</h1> <ul> <li>Better for two players</li> <li>Competitive</li> <li>Do have fortune features, but good strategy can guarantee winning</li> <li>Simple, better to be PnP (Print and Play)</li> </ul> <h1 id="preparation">Preparation</h1> <h2 id="warm-up">Warm-up</h2> <p><a href="https://docs.google.com/document/d/1V_czXDnFuQfNyzLM7R5FUrX0vYD9QR17R3FQQ25pjZY/edit?usp=sharing">Island-Combat</a> is my first idea. I designed it in Chinese, but you may free to guess what these figures mean.</p> <h1 id="game-concepts">Game Concepts</h1> <h1 id="develop-process">Develop Process</h1> Tue, 27 Dec 2016 13:39:25 -0500 https://codersherlock.github.com//archivers/design-a-board-game https://codersherlock.github.com//archivers/design-a-board-game Fun Freshman from china ~ 人生修复者 <p>在题目上,我就厚着脸皮装了一次嫩。虽然这一年多的时间,每逢与人交谈,我总会以 Graduate Freshmen 自称。但是总感觉自己在一天一天的变得消沉和无趣。不知道成熟是何物的我试图一直保持自己乐观到单纯的性格,但随着保持时间的变长,我已然不知自己究竟是真的傻还是装的蠢了。一直与人无争的我终还是变得扭曲搬的“孤傲”了起来。</p> Wed, 23 Nov 2016 22:58:00 -0500 https://codersherlock.github.com//archivers/freshman-from-china https://codersherlock.github.com//archivers/freshman-from-china Nonsense Some of my previews experiment works: 2016 <p>This blog contains only some basic record of my works. For some details, I will write a unique blog just for some specific topics.</p> <h1 id="section">2016-10</h1> <h2 id="time-experiment-of-rsync">Time Experiment of rsync</h2> <p>Patch is based on rsync with version 3.1.2. [<a href="https://download.samba.org/pub/rsync/rsync-3.1.2.tar.gz">Rsync</a>|<a href="/static/2016-10/rsync/rsync-3.1.2-time.patch">Patch</a>]</p> <h3 id="how-to-collect-data">How to collect data</h3> <p>Basically, everything of transmission time and computation time will be output with overall time will be printed on the console.<br /> But we also need some bash script to collect data through different size of random size and with different modification through them.</p> <ul> <li>Start from 8K to 64M, modify at beginning, [<a href="/static/2016-10/rsync/small2Big_change_at_begin.sh">Bash script</a>]</li> <li>Start from 8K to 64M, modify at last, [<a href="/static/2016-10/rsync/small2Big_change_at_last.sh">Bash script</a>]</li> <li>Start from 8K to 64M, modify at random place with a (slow) python script, [<a href="/static/2016-10/rsync/small2Big_change_at_anyplace.sh">Bash script</a>|<a href="/static/2016-10/rsync/addbyte.py">Python program</a>]</li> </ul> <h2 id="time-experiment-of-seafile">Time Experiment of seafile</h2> <p>Patch is based on seafile 5.1.4. You can find the release from <a href="https://github.com/haiwen/seafile/releases">seafile official repo</a>. You may follow official compile instructions from <a href="https://manual.seafile.com/build_seafile/linux.html">here</a>. [<a href="">Patch <strong>no longer avaiable, new version at following sections</strong></a>]</p> <h3 id="how-to-collect-data-1">How to collect data</h3> <p>We also need everything be done using scripting. But this time I only design added some distance between two increasing files’ sizes.</p> <ul> <li>Start from 8K to 16M, 4 times increasing, modify at beginning/ at 1024 different places with python script. [<a href="/static/2016-11/seafile/trans.sh">Bash Script</a>|<a href="/static/2016-11/seafile/addbyte.py">Python program</a>]</li> <li>After using this auto testing script, everything of output will be marked in log files of seafile, which located in <strong>~/.ccnet/log/seafile.log</strong></li> <li>We need to use this simple awk code and vim operation to extract data.</li> </ul> <div class="highlighter-rouge"><pre class="highlight"><code><span class="c"># CDC: content defined chucks</span> <span class="c"># HUT: Http upload traffic</span> <span class="c"># ALL: overall time of one commit &amp; upload</span> awk <span class="s1">'/CDC|HUT|ALL/ {print $4,$5}'</span> ~/.ccnet/log/seafile.log &gt; results.stat </code></pre> </div> <h3 id="install-seafile-on-odroid-xu">Install Seafile on odroid xu</h3> <p>Due to failure of my cross-compile to seafile on android. I used develop board as a replacement experiment platform for ARM-seafile testing. I used a <a href="http://www.hardkernel.com/main/products/prdt_info.php?g_code=G137510300620">odroid xu</a> as hardware standard. Because all I need is an ARM platform, only an ARM-Ubuntu is enough for me. But develop prototype on a board is much fun than coding, I won’t address much this time. But I’ll start a blog telling some really cool stuff I made for a strange aim.</p> <p>To install a ubuntu with GUI is my all preparation work. I found to way to do this.</p> <ul> <li> <p><a href="http://www.armhf.com/boards/odroid-xu/">armhf</a> is a website for arm-based ubuntu. It has a detailed instruction to follow at <a href="http://www.armhf.com/boards/odroid-xu/odroid-sd-install/">here</a>. They also provide ubuntu 12.04/ 14.04 and debian 7.5 to choose. But unfortunately odroid xu’s hdmi output doesn’t supported by ubuntu native firmware. So install ubuntu-desktop might can’t be boot up for video output.</p> </li> <li> <p>Burn images is much easy to install a pre-complied ubuntu system. I found this on odroid xu’s forum, which contains xubuntu image [<a href="http://odroid.in/ubuntu_14.04lts/ubuntu-14.04lts-xubuntu-odroid-xu-20140714.img.xz">download</a>] for odroid xu. With this image, you just need to use dd command to write whole system mirror into sdcard.</p> </li> </ul> <div class="highlighter-rouge"><pre class="highlight"><code><span class="c"># If .img end with xz, use this command to uncompress first</span> unxz ubuntu-14.04lts-xubuntu-odroid-xu-20140714.img.xz <span class="c"># Burn image into SD-card</span> sudo dd <span class="k">if</span><span class="o">=</span>ubuntu-14.04lts-xubuntu-odroid-xu-20140714.img <span class="nv">of</span><span class="o">=</span>/dev/sdb <span class="nv">bs</span><span class="o">=</span>1M <span class="nv">conv</span><span class="o">=</span>fsync sync </code></pre> </div> <h1 id="section-1">2016-11</h1> <h2 id="android-kernel">Android Kernel</h2> <h3 id="how-to-build-an-android-kernel">How to build an Android Kernel?</h3> <p>Generally, I won’t tell anything in this parts, just mark some related links, and point out some mistakes or error solutions.</p> <ul> <li> <p><a href="http://source.android.com/source/building-kernels.html#figuring-out-which-kernel-to-build">Google Official Guide</a><br /> – If you don’t have AOSP sources, you have to download prebuilt toolchains which recommended in this guide might not be correct. Use following links to choose your fitting tools.<br /> — <a href="https://android.googlesource.com/?format=HTML">ASOP git root</a>, under sub class “/platform/prebuilts/gcc”</p> </li> <li> <p><a href="https://softwarebakery.com/building-the-android-kernel-on-linux">Packing and Flashing a Boot.img</a> <strong>[highly recommend]</strong></p> </li> </ul> <h1 id="section-2">2016-12</h1> <h2 id="android-kernel-1">Android Kernel</h2> <h3 id="how-to-compile-with-ftrace">How to compile with ftrace?</h3> <p>If we want to debug under android, ftrace is a great tool for working. But, ftrace is not available in android if we used default configure file. Android kernel configuration is in <strong>arch/arm64/kernel/configs</strong>. We need to add few lines under that.</p> <div class="highlighter-rouge"><pre class="highlight"><code><span class="nv">CONFIG_STRICT_MEMORY_RWX</span><span class="o">=</span>y <span class="nv">CONFIG_FUNCTION_TRACER</span><span class="o">=</span>y <span class="nv">CONFIG_FUNCTION_GRAPH_TRACER</span><span class="o">=</span>y <span class="nv">CONFIG_DYNAMIC_FTRACE</span><span class="o">=</span>y <span class="nv">CONFIG_PERSISTENT_TRACER</span><span class="o">=</span>y <span class="nv">CONFIG_IRQSOFF_TRACER</span><span class="o">=</span>y <span class="nv">CONFIG_PREEMPT_TRACER</span><span class="o">=</span>y <span class="nv">CONFIG_SCHED_TRACER</span><span class="o">=</span>y <span class="nv">CONFIG_STACK_TRACER</span><span class="o">=</span>y </code></pre> </div> <h3 id="how-to-extract-android-images-dump-an-image">How to extract android images: Dump an image</h3> <p>If we want to hold a rooted status after flashing boot, we need to extract an image from android devices. We can first use following command to find which blocks belongs to. According to some references, <a href="http://getpocket.com/redirect?url=http%3A%2F%2Fforum.xda-developers.com%2Fshowthread.php%3Ft%3D2450045">this article</a> provide three ways to dump an image, I picked one for easy using.</p> <div class="highlighter-rouge"><pre class="highlight"><code>adb shell ls -al /dev/block/<span class="nv">$SOME</span><span class="se">\_</span>PLATFORM/<span class="nv">$SOME</span><span class="se">\_</span>DEVICE/by-name <span class="c"># {Partitions} -&gt; {Device Block}</span> <span class="c"># dump file</span> su dd <span class="k">if</span><span class="o">=</span>/dev/block/mmcblk0p37 <span class="nv">of</span><span class="o">=</span>/sdcard/boot.img </code></pre> </div> Fri, 28 Oct 2016 12:27:33 -0400 https://codersherlock.github.com//archivers/some-of-my-previews-exper-work https://codersherlock.github.com//archivers/some-of-my-previews-exper-work Research Using charles proxy to monitor mobile SSL traffics <p>In this blog, I will generally talk about how to use proper tools to monitor SSL traffics of a mobile devices. Currently, I only can dealing with those SSL traffics which use an obviously certification. Some applications may not using system root cert or they doesn’t provide us a method to modify their own certs. For these situation, I still didn’t find a good solutions for it. But I’ll keep updating this if I get one. <br /> My current solution is using AP to forward all SSL traffic to a proxy, <a href="https://www.charlesproxy.com/">charles proxy</a> is my first choice (Prof asked). It’s a non-free software which still update new versions now. So mainly, I’ll talk about how to charles SSL proxy.</p> <h3 id="preparations">Preparations</h3> <ul> <li>Monitor device situation: Linux Machine with wireless adapter</li> <li>Download the newest version(4.0.1) of charles</li> <li>Target android devices with root privilege</li> </ul> <h3 id="install-charles-and-configuration">Install Charles and Configuration</h3> <ul> <li>You have to install charles first. After downloading the charles proxy, you have to unzip it and configure some basic settings.</li> </ul> <div class="highlighter-rouge"><pre class="highlight"><code><span class="c"># open charles first</span> ./bin/charles </code></pre> </div> <ul> <li>Save charles’ private key and public key</li> </ul> <p>In Help -&gt; SSL Proxying -&gt; Export Charles Root Certificate and Private Key, enter a password and save the public and private key in *.p12 format. <br /> You also need to save charles Root Certificate, it also contains in the same menu. For convience, save it as *.pem format.</p> <ul> <li>Set Proxy and SSL Proxy</li> </ul> Thu, 27 Oct 2016 22:50:33 -0400 https://codersherlock.github.com//archivers/charles-is-not-a-good-tool https://codersherlock.github.com//archivers/charles-is-not-a-good-tool Network Stop Talking is the worst title of one blog Wed, 26 Oct 2016 22:50:33 -0400 https://codersherlock.github.com//archivers/hello https://codersherlock.github.com//archivers/hello Nonsense