隣に座ってる人がRhinoにgotoが欲しいって言ってたので作りました。rhino1_7R4。
RhinoはIRFactoryの吐く中間表現ではbreak,continue,switchなどをToken.GOTOとして表現しているので、validなコードから中間表現を作成して特定の構文をToken.GOTOにしてやればそれっぽく動きます。動きました。動かなくても泣かない人向け。
隣に座ってる人がRhinoにgotoが欲しいって言ってたので作りました。rhino1_7R4。
RhinoはIRFactoryの吐く中間表現ではbreak,continue,switchなどをToken.GOTOとして表現しているので、validなコードから中間表現を作成して特定の構文をToken.GOTOにしてやればそれっぽく動きます。動きました。動かなくても泣かない人向け。
開発部 川野です。今週木曜日(7/25)、キャノン IT ソリューションズ様主催の Sencha セミナーでお話させて頂くことになり、デモンストレーション用に表題のアプリを作成しました。Node.js と Sencha Touch を組み合わせてアプリを作りたい方の参考になる気がしたので、ソースコードを公開します。
Photo Sharing App(ソースコード):
https://github.com/kawanoshinobu/photo-sharing-app
Photo Sharing App(デモ):
http://photo-sharing.herokuapp.com
Sencha セミナーでは、このアプリの作成方法を解説します。開催時間が平日昼間なのですが、もしご都合のつく方は、ぜひぜひお越し下さい!参加費は無料です ^^ お申し込みは以下のサイトから ↓
Senchaセミナー ~Senchaで広がるHTML5/CSS/JavaScript開発の世界~ :
http://www.canon-its.co.jp/seminar/20130725sencha.html
以前執筆してWEB+DB PRESSに掲載された「良い設計」の記事を収録したムック「Web開発の基礎徹底攻略」が発売されました。編集部の意向でタイトルは「はじめての設計」になっています。
情報は下記を参照してください。
ムックには赤松さんの「コーディングの基礎知識」も掲載されています。実は、「良い設計」の記事を書くときの最初の打ち合わせで、編集者が参考記事として持ってきた記事がこれでした。その場では目次だけ目を通しました。
赤松さんの記事は約3年前の記事です。たぶんリアルタイムでも読んでいます。とは言え、3年前なので流石に内容の記憶はしていません。今回、執筆前に赤松さんの記事を再読してしまうと自分の記事が書きづらいので、目次以上は目を通しませんでした。代わりに、目次からなんとなく内容を想像して、自分の記事が被り過ぎないように多少の配慮をしました。その試みが成功したかは未確認です。被らない配慮をしたとしても、根本的な部分で、良い設計についての基本スタンスは類似になっているのではないかと勝手に予想しています。
Last Wednesday, the intern students gave achievement presentations on the last day of their work in Japan.
On that occasion, Lokesh, who did his internship at Ariel, played a movie showing how his and his flatmates’ stay in Japan was really like.
As it’s well-made, we asked him to play it not only on the presentation but on the farewell meeting at Ariel, too. We all enjoyed it very much.
Also, Lokesh said it’s ok to post the movie here; so I’d like to share it with you. Thank you, Lokesh!: lokesh_part2
Internship of 2 months is over and the Indians are flying back to India. Time has passed so quickly and we all miss them. They’ve achieved great job. Their work will be included in the next release of our product.
They also enjoy Japan. Especially, one of them ate poke, beef and poke. It is prohibited in Hindi.
I believe Kawano-san is going to be in India in summer vacation.
1年前にブログ出張すると書きました。1年経って、ありえるえりあに戻ってくることにしました。
結局、出張先ブログであまり記事を書いていないので、ブログを書く習慣が微妙に失われている気がします。
先日、インド学生相手にプレゼンをしたのでその資料を公開します。タイトルは「Internationalization(国際化プログラミング)」ですが、プレゼンを聞いた某氏から、文字コードの話しかしていないじゃないですか、と嫌味を言われました。そのとおりです。自分の英語力では、難しい話はできませんでした。説明が簡単であることは、外国人と一緒の開発では重要な要素です。
inoue-i18n.tar.gzを展開してi18n.htmlファイルをWebブラウザで開いてください。
以下、プレゼン資料の文字部分です。
フラットデザイン、流行ってますね。「いつやるか、今でしょ!」ということで、今回もフラットデザインネタです。
気まぐれで Sencha Touch のフラットデザインテーマの開発リポジトリを作ったところ、サングラスをかけた怖い外国人のお兄さんから「Sencha Touch のフラットデザインテーマ作るの?おれ、めっちゃ興味あるから頑張って!期待してるよ!(※意訳)」という内容の脅迫メールが届きました。。そんな訳で、週末に作ってみたのでご紹介します。
Sencha Touch Flat UI Theme は Flat UI プロジェクトの配色を参考に作成しました。リポジトリは以下の URL です。
sencha-touch-flat-ui-theme:
https://github.com/kawanoshinobu/sencha-touch-flat-ui-theme
使い方は簡単で、ソースファイルをアプリの resources/touch ディレクトリにコピーして app.scss でインポートすれば OK です。
– Sencha Touch Flat UI Theme の dist/src
ディレクトリのファイルをアプリの resource/touch
ディレクトリにコピーします。
1 |
cp -r ../sencha-touch-flat-ui-theme/dist/src/ touch/resources/ |
– app.scss ファイルを以下のように更新します。
1 2 3 4 5 6 |
// @import 'sencha-touch/default'; // @import 'sencha-touch/default/all'; @import 'sencha-touch/flat'; @import 'sencha-touch/flat/all'; // Custom code goes here.. |
– それから app.scss ファイルをコンパイルすれば準備完了です。
1 |
compass compile resources/sass/ |
興味が湧いた方は、ぜひぜひデモサイトで触ってみて下さい。Kitchen Sink アプリに Flat UI Theme を適用したものを以下の URL で公開しています。
http://kawanoshinobu.com/apps/sencha-touch-flat-ui/
This week I am going to write about the game “Ma-Jan”. I was told about this by takamura-san, inagaki-san and sugawara-san. Thanks to them for explaining me the rules.Firstly I will describe the rules and then the algorithm.
Disclaimer: The rules listed are my interpretation of the game. They might be incorrect. Similarly the algorithm looks correct to me, but it might have some flaws on some corner cases. Please excuse me if you find any mistakes and report it in comments.
Objective
There are 14 digits (0-9) given to you. You need to form matchings as given by the rules. The code assumes you know the 13 digits in advance and tries to find all possibilities to complete the game for you.
Rules for matchings
Algorithm
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
<ul> Method main()</p> <li> Read the input string s</li> <li> Check for validity of s, it must have 13 digits and the count of any digit must not exceed 4</li> <li>Make a global HashSet which will hold all the answers. Note that the hashset reomves all duplicates from the set </li> <li> Make an array <i>a</i> to store the count of each of digit in the input string.</li> <li>//There are 10 possibilties for the 14th digit (0-9), so assume that the 14th digit is each of the digit using a for loop.<br /> for( i= 0 ;i<=9; i++)<br /> {<br /> add digit <i>i</i> to array <i>a</i>;<br /> call recursive function <i>recur(a, 0,new ArrayList(), false,i);</i><br /> remove digit <i>i</i> from array <i>a</i><br /> }</li> <li>print all possibilties from the hashset</li> <p>end main</p> <p> //A Recursive function which has parameters :<br /> /*<br /> #array a containing the count of all the remianing digits<br /> #int pointer ; indicates the number of digits parsed<br /> #Arraylist array; contaning the result for the current pass<br /> #boolean numTwo; tells if the current solution has seen a two length (xx) pair.<br /> # int number; the digit which we have added to make it 14.<br /> */<br /> function recur(a,pointer,array,numTwo,number)<br /> {</p> <ul> <li>if(pointer ==14) // means that we have made 1 possibilty<br /> {<br /> make a solution from the ArrayList. //This is a bit difficult but see my code attached for clarity.<br /> add the solution made to the hashset<br /> return;<br /> }</li> <li> if(!numTwo) // we have not made any pairs, so look if its possible<br /> {<br /> for(i=0;i <= 9; i++)<br /> {<br /> clone the array a with x making x[i]-=2;<br /> make a new arraylist array1 adding (i i) to the current arraylist<br /> //call the recursive fucntion to see if the current configs can make a solution<br /> recur(x,pointer+2,array1,true,number);<br /> }<br /> }</p> </li> <p>//Similarly try 2 more recursive calls;</p> <li> To add (xxx) , if possible</li> <li>To add(x,x+1,x+2) , if possible</li> </ul> <p>//See my code for details.</p> <p>end recur<br /> } |
I have attached my code along. It is not clean and not refactored properly. But you can take a reference if you want.
Link to source code link
Thats all , thank you for reading.
ありえるえりあで何度か紹介した JDI ですが、昨日、作者さんから Sencha Touch 2.2.1 に対応したとの連絡を頂きました。
https://github.com/simonbrunel/jdi
Sencha Touch 2.2.1 で動作するようになったことに加えて、パフォーマンスの改善が図られています(改善の目的は BlackBerry 10 で快適に動作させるため、とのこと)。
実は、私が送った Touch 2.2.0 対応のための Pull Request も一旦マージしてくれたのですが、その後、結構書き換えられてました、、無駄な仕事をさせてしまい、すみません ^^;
JDI は先日 Sencha 社が主催した HTML5 is Ready App Contest で 1 位になったアプリです。それだけでなく、作者さんがソースコードを公開してくれているので、実践的なアプリを作る際に大変参考になります。
もしまだチェックしていないようであれば、ぜひぜひ一度ご覧下さい!
Last week, during the presentation at Waltz, Shoma-san mentioned about brainf*ck, which reminded me about one of the contest which I participated that allowed only this language to be used. So I decided to write a blog on this language.
Brainf*ck is one of the most famous esoteric programming languages (esoteric means one that is invented just for fun or experiment, and has no special significance or practical use). Because of the offensive word used in latter part of the name, it is a bit difficult to find information about this on the internet, and so it is referred by several names like brainf***, brainf*ck or simply BF. It was developed by Urban Muller in 1993 because he wanted to write a smallest possible compiler for the Amiga OS.
Brainf*ck takes the Turing machine model, and it operates on a array of memory cell, referred to as a tape. Each cell is initially set to 0, and the pointer points to a first memory cell. There are only a few commands that the language recognizes, which is shown below:
.
So lets try and write a the most famous program, Hello World! in brainf*ck. So here is the code to print Hello World! followed by a endline character.
1 |
++++++++++[>+++++++>++++++++++>+++>+<<<++.>+.+++++++..+++.>++.<.+++.------.--------.>+.>. |
The next code is to move the value at cell0 to cell1, here is the brainf*ck code:
1 |
[->+<] |
Explaination
I will explain this code because it is smaller. At first the pointer points to cell0. The ‘[‘ operator checks if the content of the current cell is zero or not, if zero it moves to the matching ‘]’ which here is the end of the code. In case non-zero, it decrements the current cell by a ‘-‘, moves to the next cell by a ‘>’, and increments that cell1 by a ‘+’. It then checks with a ‘]’ if the cell0 is zero or not, and if non-zero, it moves to the matching ‘[‘ which is the start of the code here.
I would like the readers to try and find out why Hello World! codes work. If anyone faces any problem in it, please feel free to contact me, or add a comment.
最近のコメント