" プログラミング (無料)タグ投稿記事"

[Ruby]ハングルの日記念コーディング。 ハングルのそぎ分解

10 9、2010 / / alexken作成/ / 技術 / / No Comments

チメバンジギョムハングルの日記念にハングルの音節をそぎに分解するコーディング。

つまり、Unicode2.0で小、中、終声に組み合わせ可能なすべての現代ハングルの音節11172をもれなく配置したので、
完成型コードであるUnicodeが照合型コードとしての特徴を持つようになるということを示すためにコーディング。

元照合型コードではしその分解は、ビ​​ットを削減する超種を得て出すならば、
Unicodeでは、以下のように分けだけでうまくいけば、超終声を勝ち取ることができる。


ハングルの科学性もう一度感嘆

ソースコード

#!/ usr / bin / env ruby

"ㄱ" , "ㄲ" , "ㄴ" , "ㄷ" , "ㄸ" , "ㄹ" , "ㅁ" , "ㅂ" , "ㅃ" , "ㅅ" , @ chosung_list = [" ㄱ "、 " ㄲ "、 " ㄴ "、 " ㄷ "、 " ㄸ "、 " ㄹ "、 " ㅁ "、 " ㅂ "、 " ㅃ "、 " ㅅ "、
, "ㅈ" , "ㅉ" , "ㅊ" , "ㅋ" , "ㅌ" , "ㅍ" , "ㅎ" ] " ㅆ "、 " ㅇ "、 " ㅈ "、 " ㅉ "、 " ㅊ "、 "w"、 " ㅌ "、 "ふ"、 " ㅎ "]
"ㅏ" , "ㅐ" , "ㅑ" , "ㅒ" , "ㅓ" , "ㅔ" , "ㅕ" , "ㅖ" , "ㅗ" , "ㅘ" , @ jungsung_list = [" ㅏ "、 " ㅐ "、 " ㅑ "、 " ㅒ "、 " ㅓ "、 " ㅔ "、 " ㅕ "、 " ㅖ "、 " ㅗ "、 " ㅘ "、
, "ㅚ" , "ㅜ" , "ㅝ" , "ㅞ" , "ㅟ" , "ㅠ" , "ㅡ" , "ㅢ" , "ㅣ" ] " ㅛ "、 "ノ"、 " ㅚ "、 " ㅜ "、 " ㅝ "、 " ㅞ "、 " ㅟ "、 " ㅠ "、 " ㅡ "、 " ㅢ "、 " ㅣ "]
" " , "ㄱ" , "ㄲ" , "ㄳ" , "ㄴ" , "ㄵ" , "ㄶ" , "ㄷ" , "ㄹ" , "ㄺ" , @ jongsung_list = [""、 " ㄱ "、 " ㄲ "、 " ㄳ "、 " ㄴ "、 " ㄵ "、 " ㄶ "、 " ㄷ "、 " ㄹ "、 " ㄺ "、
, "ㄽ" , "ㄾ" , "ㄿ" , "ㅀ" , "ㅁ" , "ㅂ" , "ㅄ" , "ㅅ" , " ㄻ "、 " ㄼ "、 " ㄽ "、 " ㄾ "、 " ㄿ "、 " ㅀ "、 " ㅁ "、 " ㅂ "、 " ㅄ "、 " ㅅ "、
, "ㅈ" , "ㅊ" , "ㅋ" , "ㅌ" , "ㅍ" , "ㅎ" ] " ㅆ "、 " ㅇ "、 " ㅈ "、 " ㅊ "、 "w"、 " ㅌ "、 "ふ"、 " ㅎ "]

a ) def unicode_of(a)
"U*" ) . pop a。unpack( "U *")。pop
end

class String
def succ
( 'U*' ) head = self。unpack( "U *")
tail = head。pop
( 'U*' ) + [ tail + 1 ] . pack ( 'U*' ) return head。pack( 'U *')+ [tail + 1]。pack( 'U *')
end
end

( ch ) def split(ch)
) offset = unicode_of( "が")
unicode = unicode_of(ch)
"=(" print ch + "=("
#初声出力
[ ( unicode - offset ) / print @ chosung_list [(unicode - offset)/
* @jongsung_list . length ) ] + "+" (@ jungsung_list。length * @ jongsung_list。length)] + "+"
#中性出力
[ ( ( unicode - offset ) % print @ jungsung_list [((unicode - offset)%
* @jongsung_list . length ) ) / (@ jungsung_list。length * @ jongsung_list。length))/
] + "+" @ jongsung_list。length] + "+"
#終声出力
[ ( unicode - offset ) % @jongsung_list . length ] + ") \n " print @ jongsung_list [(unicode - offset)%@ jongsung_list。length] + ")\ n"
end

.. "힣" ) . each { | x | split ( x ) } "が" .. "ヒᇂ ")。each {| x | split(x)}

結果

が=(a +ㅏ+)
各=(a +ㅏ+ㄱ)
ガᆩ=(a +ㅏ+ㄲ)
ガᆪ=(a +ㅏ+繖)
間=(a +ㅏ+ㄴ)
ガᆬ=(a +ㅏ+ㄵ)
ガᆭ=(a +ㅏ+ㄶ)
ガト=(a +ㅏ+ c)
行く=(a +ㅏ+ㄹ)
ガル=(a +ㅏ+ㄺ)
...
ヒット=(ㅎ+ㅣ+ㅅ)
ヒᆻ=(ㅎ+ㅣ+ㅆ)
ヒン=(ㅎ+ㅣ+ㅇ)
ヒᆽ=(ㅎ+ㅣ+ㅈ)
ヒᆾ=(ㅎ+ㅣ+ㅊ)
ヒᆿ=(ㅎ+ㅣ+ w)
ヒᇀ=(ㅎ+ㅣ+ㅌ)
ヒップ=(ㅎ+ㅣ+ふ)
ヒᇂ=(ㅎ+ㅣ+ㅎ)

iCalを利用したEPG

1 31、2009 / / alexken作成/ / 技術 / / 3 Comments

EPG(Electronic Program Guide)番組表をどのようにすれば簡単に見ることができるかしてから、

  1. xmlをxsltを使ってhtmlに変換
  2. RSS形式でpublishing

を考えている途中iCalで使用されるics形式にするとiCalが分かった表現もしてくれることで、

  • MacOSXでは、iCalで購読するとされ
  • iCalと同期されているiPod Touch / iPhoneで見ることができ
  • Windows Vistaにもicsをサポートしているカレンダーが標準装備され、
    おそらくOutlookにも対応することで、
  • Google Calenderも同じicsに登録すると、いつでもどこでも見られるし、

だから、EPGデータをICS形式に変換すると、素敵でしょという気がした。

放送局ごとにICSを作成し、各放送局ごとにICSは、可能な限り選って、次のように書くことにした。

BEGIN:VCALENDAR
PRODID :-/ / TTA / / EPG DATA / / KO
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-TIMEZONE:Asia / Seoul
X-WR-CALNAME:MBC
BEGIN:VEVENT
DTSTART:20090131T223500
DTEND:20090131T235500
UID:MBC20090131T223500
CLASS:PUBLIC
DESCRIPTION:ジャンル:芸能/娯楽 - トークショー
出演:ユン·ジョンシン、キム·ククチン、キム·グラ、キム·ソンジュ、シン·ジョンファン、イ·ハヌル、パク·ミソン
演出:ヨウンヒョク、ギムユゴン
SUMMARY:明朗ヒーロー
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR

rubyで作成されたicsをiCalで読んでみる
結果は一応成功...

だいたい想像していたEPGの形で示すことはあるが、実生活に楽にスルマンクム見るピョンハンゴではない。

そして、その場で書くことは別の問題がいくつかあります。

  1. 定期的に責任を持って変換scriptを返すサーバーが必要であり、
  2. CalDAVにiCal用にはWebDAVホスティングする必要がありますが、そうず、
  3. icsに変換してそのままwebに置いてgoogle calendarに登録すると、それを再びiCalで読み込むことができる。
    だから、google calendarに読んでみると、ハングルが割れる...
    (明らかにUTF-8で保存されていますが、KSX1001をUTF-8にイルオトウルテように割れている。)

OTLとりあえず今日はここまで.....

XSLTで作成されたXMLViewer

1 30、2009 / / alexken作成/ / 技術 / / No Comments

xmlの多くの利点にもかかわらず、落ちるreadability円不満である。
業務上xmlをよく触るみるとxml内の情報を簡単に見られるツールが切実たし、それで以前にjavaで作成されたTreeViewの形のXmlViewerも作った。

今回はxlstで作った、思ったよりすっきりしてい気に入る。
TreeViewのフォームより簡単に、包含関係を表現する。

最初、elementとattributeをいちいち指定してxsltを作成してみると1000行を超えて立った。
だから、ほとんど90%完成した時点で、最初から再起動してelementとattributeの名前を指定しない形に変えたところcss、javascriptを含めて120行ほどで終えることができるだけでなく、特定のdtd / schemaのxmlだけでなく、汎用XMLViewerに使用できんになった。

作ってみるとポハムグァンギェマン表示するシンプルなビューは、すべての情報を漏れなく示すビューを表現するためにjavascriptを使用したwebで見つけたコードをベースにした
原理は、非表示にしたり、ボヨジル領域を<div class = "ClassName">にソルジョンハンドィそのclassを持つelementを回りながら処理するルーチンであった。

問題は、Cスタイルのforルプムン

var i = 0 ; i < Max ; i ++ ) { for(var i = 0; i <Max、i + +){
BLOCK;
}

この私が主に使用しているブラウザsafariで回らなかった。

だから、

var i in Collection ) { for(var i in Collection){
BLOCK;
}

形に変えて、ブラウザ依存性を削除して、

包含関係を色で表現するためにCSSで

background : none ; } * {background:none;}
: #6666ff ; } div {background:#6666ff;}
background : #7777ff ; } div> div {background:#7777ff;}
div { background : #8888ff ; } div> div> div {background:#8888ff;}

形にできた。

私javascript / CSSの方はほぼ門外漢だからこれが最適なコードなのかはわからないが、私が最初に意図した機能や目的は、すべて動作して気に入る。

そして今まで

<xsl:apply-templates />

はselectで子elementを指定してこそドゥェヌンジュル思ったが、
ただapply-templates万取り上げてくれたら分かって子elementを分かって歌ってくれる...(今日の初めに了解^ ^ ;)

Simple View

Complex View

encoding = 'utf-8' ?> <?xml version = '1 .0 'encoding =' utf-8 "?>
xmlns:xsl = 'http://www.w3.org/1999/XSL/Transform' > <xsl:stylesheet version = '2.0' xmlns:xsl ='http://www.w3.org/1999/XSL/Transform'>

> <xsl:template match = "/">
<html>
<head>
<title> XML Viewer </ title>
> <style type = "text/css">
div.element {
float:left;
display:block;
padding:1em;
border:solid 1px black;
margin:1em;
}

/ *
elementの名前とattrをheader-areaで包む理由
attrの横にサブelementがブトヌンゲ見たくなくて...
正解は、overflow:auto;
* /
div.header-area {
overflow:auto;
background:none;
}

div.attr {
float:left;
margin-right:2em;
background:none;
}

i.att_name {color:#333333}
i.att_value {color:#666666}

/ *
nested elemementを異なる色で表示する
これが一番良い方法なのかは分からないが...
* /
* {background:none;}
div {background:#6666ff;}
div> div {background:#7777ff;}
div> div> div {background:#8888ff;}
div> div> div> div {background:#9999ff;}
div> div> div> div> div {background:#aaaaff;}
div> div> div> div> div> div {background:#bbbbff;}
div> div> div> div> div> div> div {background:#ccccff;}
div> div> div> div> div> div> div> div {background:#ddddff;}
div> div> div> div> div> div> div> div> div {background:#eeeeff;}
div> div> div> div> div> div> div> div> div> div {background:#ffffff;}
</ style>

language = "JavaScript" > <script type = "text/javascript" language = "JavaScript">

function toggle(obj){
if(obj.style.display!= "block")
obj.style.display = "block";
else
obj.style.display = "none";
}

function toggle_all_attr(){
var divs = document.getElementsByTagName( 'div');
var tcl = "attr";
for(var i in divs){
var test = "" + divs [i]。className + "";
if(test.indexOf(tcl)!= -1){
toggle(divs [i]);
}
}
}

</ script>
</ head>
<body>
onclick = "toggle_all_attr()" > simple/complex </a > </h2 > <h2> <a href = "#" onclick = "toggle_all_attr()"> simple / complex </ a> </ h2>
<xsl:apply-templates />
</ body>
</ html>
</ xsl:template>

<! - elementの処理- >
> <xsl:template match = "*">
> <div class = "element">

<! -本人のattr処理して- >
> <div class = "header-area">
/> </h3 > <h3> <xsl:value-of select = "name(.)" /> </ h3>
/> <xsl:apply-templates select = "@*" />
</ div>

<! - sub elementの処理... - >
<xsl:apply-templates />

</ div>
</ xsl:template>

<! - attribute処理- >
> <xsl:template match = "@*">
> <div class = "attr">
> <xsl:value-of select = "name(.)" /> </i > <br /> <i class = "att_name"> <xsl:value-of select = "name(.)" /> </ i> <br />
> <xsl:value-of select = "." /> </i > <i class = "att_value"> <xsl:value-of select = "." /> </ i>
</ div>
</ xsl:template>
</ xsl:stylesheet>

airclickにeyetvコントロールする

1 7、2009 / / alexken作成/ / 技術生活 / / 1 Comment

pinnacle
私の部屋ではTVをMacOSX上pinnacle HDTV stickとeyetvで見ている。 eyetv2
WindowsでTVを見る時は、渋々見るのだったが、MacでTVに見るのよりもはるかに楽でいい。
MacOSタトイラギよりEyeTVと呼ばれるプログラムが立派だ。
もちろん、信号内のハングルになったEPGはすべてケモクジマンだ。

airclick
pinnacle HDTV stick用のリモコンが最近見えない。 空が素行に見えますが、物証がない。
それで不便だったところに、元々持っていたAirClickにEyeTVをコントロールしようと捜してみたらinsanelymacにその情報を探した。
Windows用は、コンパイルする必要がありますが、Macはscriptで作成して、functions.plist万編集するとされている形。
今後も様々な用途に活用可能で負けるような感じだ....




functions.plistファイルを
/ Applications / AirClick.app / Contents / Resources /
残りのapplescriptファイルを
/ Applications / AirClick.app / Contents / Resources / scripts /
フォルダにコピーします。

eyetv

[。NET]たった3行のビデオプレーヤーを作成する

5 22、2008 / / alexken作成/ / 技術 / / 1 Comment

1。 むやみにVisual Studio 2008を浮かべてC#WinFormプロジェクトを作成する
2。 [Add Reference]でMicrosoft.DirectX.AudioVideoPlaybackを追加してくれて(DirectXは敷かれている必要があります)
3。 Formをダブルクリックし、次のように打ってくれる。

; using Microsoft.DirectX.AudioVideoPlayback;

Form1_Load ( object sender, EventArgs e ) { private void Form1_Load(object sender、EventArgs e){
FromFile ( @"c:\test.avi" ) ; Video v = Video。FromFile(@ "c:\ test.avi");
= this ; v。Owner = this;
( ) ; v。Play();
}

4。 F5を押してください。

ところではならない。

[Debug] - [Exceptions] - [LoaderLock]のThrown項目をコジュンダ。

loaderlock.png
5。 F5を押してください。

ㅋㅋㅋ成功....
form1.jpg

[雑説]
今回の一週間WDMデバイスドライバプログラミング教育している。
Kernel Modeプログラムでは、ちょっとだけ下手するとブルースクリーン...
久しぶりに見るVisualStudio ...アンボドン間変わったな...

[ruby](が...ヒᇂ )。each {| x | print x}

5 14、2008 / / alexken作成/ / 技術 / / 3 Comments

ルビーの勉強始めた翌日、ふと
Unicodeのハングルの領域を完全に出力するプログラムをrubyで絞ればどうなるか気になった。

頭の中で直感的に

. each { | x | print x } が...ヒᇂ )。each {| x | print x}

というコードが浮いて上がった。 怖いクールです。
"が"のUnicodeがAC00であることを知らなくても( 'ヒᇂ "のコード値は覚えていてもいない。)Rangeをサポートしてくれないか?

他の言語ならきっとループがぐるぐる回って、
"が"ではなく、AC00からcodeの値を増加させながら.... なんだかんだしているコードがドゥェルトインデ....

ところでアンドンダ。
より正確にはドヌンドゥトだてしまう。

理由は、ruby Stringの内部処理がUTF-8でもそうだった。
くそ....

UTF-8もUnicodeエンコーディングギボプジュンか当たって、それなり長短があるUnicodeエンコーディングですが、
シリアル化や、ネットワークの転送シエナ適切なエンコーディングであり、メモリ内処理は、UCS2またはせめてUCS4で処理さ合っていると思う。
ようにせいぜいUnicodeで非難されながら、現代ハングル11072文字すべて割り当てて、ハングル処理が照合型のように処理が可能で、ハングルソートの問題や.....
などなど...(ヨクカジンアンモクオトナ?しかし、機嫌を見ながら...)

おそらくASCIIが1byteでエンコードされている点から、(英語圏のプログラマの...)力ミルリンドゥトだ。

とにかくString succメソッドをゴンドゥリゴヤてしまった。(星望ましく見えないが...)

class String
def succ
( 'U*' ) head = self。unpack( "U *")
tail = head。pop
( 'U*' ) + [ tail + 1 ] . pack ( 'U*' ) return head。pack( 'U *')+ [tail + 1]。pack( 'U *')
end
end

.. "힣" ) . each { | x | print x } "が" .. "ヒᇂ ")。each {| x | print x}
.. "ん" ) . each { | x | print x } "あ" ... "ん")。each {| x | print x}

# "あいうえお"。each_char {| x | print x}
. succ puts "あいうえお"。succ


...

可能性は低いでしょうが、ruby 2.0ではごUCS2または4にStringの内部処理を変更したらと思う念願だ。

[ruby] ruby没頭校ユクジュン...

5 14、2008 / / alexken作成/ / 技術 / / No Comments

会社の業務では、用途に応じて、主に、さまざまな言語を使用して、
一度使ってかどうか、簡単な処理は、主にperlを使用する。
主にすることがUIが必要なく、
主にUnix環境なのに加え、
textの処理がほとんどだとregula expressionが強力で、perlこそ非常に資格がある。

rubyとは言語を最初にジョプハンゴン1999年に日本で勉強する時だ。
自然言語処理研究室なのでそこ駅でtextの処理がほとんどである。
ruby勉強していた人間も数あったが、ただの趣味であるだけ、
実用的な面では、その研究室さえperlだった。

だから私はperlをそこで学び始めた。
Unix + Emacs + Perl。

そうだったrubyが数年前からあまりにも流行なので、私も勉強してみ業務にも適用してみたかった、
チーム秒高perlウクが2人も(noise&gogma)の風
一人だけでrubyのコードを量産することができなくて、私も身近で誰もがみんな知っているperlが主流であった。

最近、この二人を誘って、Rubyの勉強開始。

浮気のに何オリョウンゴなかった。
ファンデサンさんの20分のガイド一回見せたところ、
まさにルビー信徒に変身​​...

会社の図書館にある "Programming Ruby"をことごとく借り​​も勉強中。

ところで一体大まかに読み取ることができない。

行ごとの意味をゴプシプウニ非常に幽玄であること。
特に文法の設計が非常に芸術である。

以前のシン君と一緒メッセンジャーでちょっと交わし、Code Blockと一緒Meta Programmingがなぜ必要なのか、なぜ使うべきか理解ができなかったが、
イゴトチャムものである。

今のところRubyの話でブログが砲撃ドゥェルコだ。

Macでシリアルログの表示

3 5、2008 / / alexken作成/ / 技術 / / No Comments

21世紀の今も多くのマシンがシリアルポートを使用しています。

TVやSTBなどの場合は、ASやデバッグ用に、
そして多くの天体の機器はまだシリアル通信が主ではないかと思う。

業務上TVのシリアルログを見ることがよくあるのに....

Macでは今までどのようなプログラムにするか知りませんでした。

一応
Windowsでは、TeraTermを多く使用するんだが
Mac用にはどのようなプログラムに見るか知らなかった。

シリアルログを表示するプログラムでは、

  • Minicom
  • Zterm
  • Screen

があり、

minicomが一番産み示しており、簡潔さはscreenが圧倒的のようだ。
さらにscreenは、インストールも必要なく、基本的な内装である。

Macのシリアルポートがないため、USB2Serialジェンダーに接続し、ドライバをインストールすると、
/ dev / tty.usbserialXXXXというデバイスが表示されることで

$ screen / dev / tty.usbserialXXXX 9600

[java] reflect on java

11 13、2007 / / alexken作成/ / 技術 / / No Comments

フェサソClassを調べることがあるがreflectをカモクオソしばらくgooglingて再度学習...

java.lang.Stringのmethodを出力するルーチンのゴルジャマン要約すると....

; import java.lang.reflect。*;

public class ClassExam {

printClassInfo ( String className ) { public void printClassInfo(String className){
try {
this . getClass ( ) . getClassLoader ( ) . loadClass ( className ) ; Class a = this。getClass()。getClassLoader()loadClass(className);
methods = a. getDeclaredMethods ( ) ; Method [] methods = a。getDeclaredMethods();
int i = 0 ; i < methods. length ; i ++ ) { for(int i = 0; i <methods。length; i + +){
. println ( methods [ i ] . toString ( ) ) ; System。out。println(methods [i]。toString());
}
( Exception e ) { } catch(Exception e){
}
}

main ( String [ ] args ) { public static void main(String [] args){
ClassExam ( ) ; ClassExam a = new ClassExam();
"java.lang.String" ) ; a。printClassInfo( "java.lang.String");
}
}
2 3 » ページ:1 2 3 »

ブログのカテゴリ

天体写真ギャラリー