Posted by & filed under いろいろ.


隣に座ってる人がRhinoにgotoが欲しいって言ってたので作りました。rhino1_7R4。

RhinoはIRFactoryの吐く中間表現ではbreak,continue,switchなどをToken.GOTOとして表現しているので、validなコードから中間表現を作成して特定の構文をToken.GOTOにしてやればそれっぽく動きます。動きました。動かなくても泣かない人向け。


関連文書:

  • 関連文書は見つからんがな

Posted by & filed under 開発.


開発部 川野です。今週木曜日(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

photo-sharing


関連文書:

Posted by & filed under .


以前執筆してWEB+DB PRESSに掲載された「良い設計」の記事を収録したムック「Web開発の基礎徹底攻略」が発売されました。編集部の意向でタイトルは「はじめての設計」になっています。

情報は下記を参照してください。

ムックには赤松さんの「コーディングの基礎知識」も掲載されています。実は、「良い設計」の記事を書くときの最初の打ち合わせで、編集者が参考記事として持ってきた記事がこれでした。その場では目次だけ目を通しました。

赤松さんの記事は約3年前の記事です。たぶんリアルタイムでも読んでいます。とは言え、3年前なので流石に内容の記憶はしていません。今回、執筆前に赤松さんの記事を再読してしまうと自分の記事が書きづらいので、目次以上は目を通しませんでした。代わりに、目次からなんとなく内容を想像して、自分の記事が被り過ぎないように多少の配慮をしました。その試みが成功したかは未確認です。被らない配慮をしたとしても、根本的な部分で、良い設計についての基本スタンスは類似になっているのではないかと勝手に予想しています。


関連文書:

  • 関連文書は見つからんがな

Posted by & filed under いろいろ.


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


関連文書:

  • 関連文書は見つからんがな

Posted by & filed under いろいろ.


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.

IMG_31281

 

I believe Kawano-san is going to be in India in summer vacation.

IMG_3133

 


関連文書:

  • 関連文書は見つからんがな

Posted by & filed under 勉強会.


1年前にブログ出張すると書きました。1年経って、ありえるえりあに戻ってくることにしました。

結局、出張先ブログであまり記事を書いていないので、ブログを書く習慣が微妙に失われている気がします。

先日、インド学生相手にプレゼンをしたのでその資料を公開します。タイトルは「Internationalization(国際化プログラミング)」ですが、プレゼンを聞いた某氏から、文字コードの話しかしていないじゃないですか、と嫌味を言われました。そのとおりです。自分の英語力では、難しい話はできませんでした。説明が簡単であることは、外国人と一緒の開発では重要な要素です。

inoue-i18n.tar.gzを展開してi18n.htmlファイルをWebブラウザで開いてください。

以下、プレゼン資料の文字部分です。



Internationalization

INOUE Seiichiro

Ariel Networks, Inc. CTO

Works Applications Guest Fellow

Who I am

  • CTO of Ariel Networks, Inc.
  • Guest Fellow of ATE division at Works Applications
  • Formerly, a developer of Lotus Notes at Boston

Who I am (cont.)

  • My books and articles:
    • “Perfect Java”
    • “Perfect JavaScript”
    • “P2P textbook”
    • “Server Side JavaScript”
    • etc.

Today’s Topic

  • Internationalization (in short, i18n)
    • history and concept
    • character code

Agenda

  1. i18n overview
  2. languages and characters in computer
  3. History of character code
  4. Unicode & Java String

1. i18n overview

What i18n is

making software handle
country/region/culture specific things

locale

country/region/culture specific things

=> locale

i18n examples (1)

  • language
    • input
    • output

i18n examples (2)

  • timezone
  • calendar (e.g. Japanese era, holidays, etc.)
  • date/time format (e.g. 2013/7/3, Jul/3/2013)

i18n examples (3)

  • number format (e.g. 100,000.00 symbol for decimal point)
  • monetary/currency (e.g. dollar, yen, rupee)
  • measurement units (e.g. mile, feet)

i18n examples (4)

  • name format (e.g. order of family name/given name, middle name, Mr/Ms)
  • address format (e.g. postal code, the order of address elements)
  • telephone number format (e.g. number of digits)
  • icon (e.g. postbox)

i18n evolution

2. languages and characters in computer

what we should do

two steps:

  1. define character set
  2. assign number (=code point) to each character

in order to define character set

we should know what characters are

definition of character
the elements of written languages

Question; what is character?

Question; what is character? (cont.)

Question; what is character? (cont.)

  • resolved only by agreement
  • we have to think about languages

language examples

  • Japanese
  • English
  • French
  • Hindi
  • Marathi
  • Chinese

language/script separation

script examples

  • latin alphabet
  • hiragana
  • katakana
  • kanji
  • hangul
  • devanagari

language/script mapping

character set

character set examples

  • ASCII (latin alphabet, some symbols)
  • JIS 0208 (latin alphabet, hiragana, katakana, kanji, etc.)
  • ISCII (devanagari, etc)

Unicode (try to contain all scripts in the world)

Where should languages be taken care of?

3. History of character code

brief history of character set

  • 1963 ASCII
  • 1967 ISO/IEC 646
  • 1969 JIS 0201
  • 1973 ISO 2022
  • 1978 JIS 0208
  • 1982 CP932(MS-DOS)
  • 1985 EUC-JP
  • 1987 ISO 8859

brief history of character set (cont.)

  • 1988 Unicode 88
  • 1991 ISCII
  • 1992 Unicode v1.0
  • 1993 ISO 10646
  • …(Unicode version up)
  • 2012 Unicode v6.2

Terms

  • ISO: International Organization for Standardization
  • IEC: International Electrotechnical Commission
  • JIS: Japanese Industrial Standards
  • ASCII: American standard code for information interchange
  • ISCII: Indian Script Code for Information Interchange

European languages history

Japanese history (1)

Japanese history (2)

ISO 2022

Japanese history (3)

4. Unicode & Java String

Unicode

The Unicode Consortium and The Unicode Standard

http://www.unicode.org/

  • character set
  • encoding scheme
  • collation rule
  • various algorithm (e.g. BiDi)

Unicode brief history

  1. Unicode 88 …16bit code
  2. Original ISO 10646 …32bit code
  3. ISO 10646 accepted Unicode … super set of Unicode. 32bit code
  4. ISO 10646/Unicode grows …21bit code

ISO/IEC 10646

Encoding scheme

UTF(Unicode/UCS Transformation Format)

  • UTF-8
  • UTF-16
  • UTF-32
  • (UTF-7)

UTF-8

  • 8-bit variable-width encoding (a.k.a. multi-byte char)
  • upper compatible with ASCII
  • getting the standard in Internet

UTF-8 (cont.)

UTF-8 conversion example

UTF-8 conversion example (cont.)

UTF-16

  • 16-bit, variable-width encoding
  • Most of characters are encoded in 16-bit fixed-width (same as BMP/UCS-2)
  • Using surrogate pair for characters other than BMP
  • Sometimes, use BOM(Byte Order Mark)
  • Java string internal encoding scheme

UTF-16 Surrogate pair

UTF-16 Surrogate pair(cont.)

UTF-16 conversion example

UTF-16 conversion example (cont.)

UTF-32

  • 32-bit fixed-width encoding
  • Caution: considering composed characters, one character still cannot be 32-bit width

fyi, Unicode character database

  • http://www.unicode.org/charts/
  • http://www.unicode.org/charts/charindex.html

Java String

  • The internal encoding is UTF-16
  • Not UCS-2, BMP
  • (Before Java 1.4, it used to be UCS-2)
  • Without considering surrogate pair and composed characters, easy to use (16-bit fixed width encoding)

Java String’s surrogate pair

Composed characters

  • precomposed character
  • combining

=> normalization (to canonical format)

Java String’s composed characters

Java String’s composed characters(cont.)

Java String’s composed characters (cont.)

Java String’s composed characters (cont.)

Java String’s composed characters (cont.)

Java String’s composed characters (cont.)

What collation is

sort and equality algorithm of characters

  • In ASCII era, collation is similar to character code
  • However, we sometimes need a different sort algorithm such as case-ignore
    • usual order: A,B,a,b
    • case-ignore order: A,a,B,b

Unicode collation

  • Each character has a collation value

Java String’s collation

Summary

  • Unicode and Java have resolved most of i18n issues
  • Still, application programs should take care of some issues
  • Please improve your system with a proper i18n knowledge


関連文書:

  • 関連文書は見つからんがな

Posted by & filed under 開発.


フラットデザイン、流行ってますね。「いつやるか、今でしょ!」ということで、今回もフラットデザインネタです。

気まぐれで Sencha Touch のフラットデザインテーマの開発リポジトリを作ったところ、サングラスをかけた怖い外国人のお兄さんから「Sencha Touch のフラットデザインテーマ作るの?おれ、めっちゃ興味あるから頑張って!期待してるよ!(※意訳)」という内容の脅迫メールが届きました。。そんな訳で、週末に作ってみたのでご紹介します。

Sencha Touch Flat UI Theme

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 ディレクトリにコピーします。

– app.scss ファイルを以下のように更新します。

– それから app.scss ファイルをコンパイルすれば準備完了です。

flat-ui-usage

Kitchen Sink with Flat UI Theme

興味が湧いた方は、ぜひぜひデモサイトで触ってみて下さい。Kitchen Sink アプリに Flat UI Theme を適用したものを以下の URL で公開しています。

http://kawanoshinobu.com/apps/sencha-touch-flat-ui/

flat-ui-demo

Showcase

sencha-touch-flat-ui

 


関連文書:

Posted by & filed under いろいろ.


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

  • From the 14 digits, you have to form 4 triplets( 3) and 1 pair (2). So 3*4 +1 *2 =14
  • The triplets can be of the form, (xxx) all same numbers, or (x, x+1, x+2); i.e three consecutive numbers. So (333) and (567) is correct but (568) and (112) are incorrect.
  • The pair has to be of the form (xx) same digits.So (22) is correct but not (45)
  • You know the 13 digits, and want to figure out all possibilities to finish the game. So you have to write within square brackets ‘[ ]’ the matching which is expected to complete by the 14th digit. So if the 13 digits are 1112233444555, then you need to output (111)(33)(444)(555)[22] meaning that the square bracket is where the 14th card is going to be placed and according to rules it must be a 2. Note that there are other possibilities as well. The code has to report all such possibilities.

Algorithm

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.


関連文書:

  • 関連文書は見つからんがな

Posted by & filed under 開発.


ありえるえりあで何度か紹介した 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 位になったアプリです。それだけでなく、作者さんがソースコードを公開してくれているので、実践的なアプリを作る際に大変参考になります。

もしまだチェックしていないようであれば、ぜひぜひ一度ご覧下さい!

jdi1.2

関連文書:

Posted by & filed under いろいろ.


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.

The next code is to move the value at cell0 to cell1, here is the brainf*ck code:

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.


関連文書:

  • 関連文書は見つからんがな