langs: ja en en en en en ja es en en ja en en en en ja es en en ja ja en en ja ja ja en ja en ja en ja en ja ja en ja en ja en ja ja en ja ja en ja en ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en

text:
後半に向かうにつれ、もう目を開けていられないほど心地よく過ごせました。
娘はだんだん眠くなってグズグズしてきていましたが、Yuriさんがあやしてくれていたので安心して最後のほうにはもう娘の存在を手放す?とにかく意識を自分に向けることができました。子供と一緒の空間にいて、こんなに気を緩められてのははじめてかもしれません。
すると、全身のありとあらゆる場所の緊張がほどけて、どうしてこんなに頭や身体をかたーくしていたんだろう、と思える瞬間がありました。
自分自身に気付き、手放す、ことができました。
産後から脚が冷えるという話をしていて、休むポーズに入ると足にブランケットをかけてくれました。
そういった心遣いがほんとに、あたたかく、心地よかったです。
そのあと30分は、Yuriさんが娘を連れ出してくれて、ゆっくり休むことができました
最後にレッスン後の身体はどうか、ふだんの生活に取り入れられる、オススメのポーズなど教えてもらいました。
レッスンのなかでの色々な気付きはあったけれど、日常に戻ると忘れてしまうところを、週一度のヨガで力を抜くことなど、わたしの立場に立ってお話してくれるので、心ににすっとはいりました。
いつも、クラスの最後に『自分のために、一呼吸』と言われると、ああ、そういえばそんなに呼吸を意識できてなかったなぁと思っていて、大事に、大事に呼吸をしてスッキリするのですが、今回のレッスンは自分を大事にできてるなと思える瞬間がたくさんありました。
このプライベートレッスンならではの、素敵な空間に、丁寧なカウンセリング、ヨガレッスンが、あって。さらにキメ細やかなサポートが、ほんとに、すばらしかったです。
相手の、心に、身体に寄り添ってくれる素敵なレッスンでした。
子連れもOKなところってなかないのと、子連れOKでもやっぱり子供がぐずって、ほとんどやりたいことできなかったりすることが多くて、逆に疲れて終わってしまうこともあるけれど、このレッスンでは完全に自分だけに集中でき、もう本当に大、大、大満足でした。
極上の3時間をありがとうございました!(30代主婦)
難しいことを考える必要はなく、ただ先生の声やリードに身を委ねて、身体を動かし呼吸を続けていくと、その先に、自分の身体と呼吸と心に向き合える時間が待っている。
リトリートというと、どこか遠くいまいる場所から離れたところに行って特別なことをする、というイメージがあるかもしれないけれど(実際そういうやり方もあるのだろうけれど)、お金をかけて遠くに行かなくても、こんなに近くにリトリートできる場所があるなんて、すばらしい!!って思いました。また伺いたいです。
何がそんなに良かったのかーーー。
閑静な住宅街にあって、窓からは空がよくみえる。心地良い音楽が流れていて、居心地の良いすてきなお部屋。
最初に問診表に、身体の不調や気になるところ、リトリートでの希望などを記入します。それをもとに、ヨガの経歴や伝えた要望に沿ってプログラムを考えてくださいます。
なにも心配する必要はありません。安心してお任せできます。なぜなら、yuri先生だからです(笑)。
今回の私は、「動きたい」「浅くなっている呼吸を深くしたい」という希望と、いくつか身体の不調をあげました。それが、レッスンを終える頃には、見事に要望が叶えられ、身体のお悩みも解消されていたので、やはり、先生さすが!!です。
正直、最初は若干緊張していました。先生とお会いするのもお久しぶりでしたし、個人宅でマンツーマンだし(汗)。
けれども、いざ始まって、マットに仰向けになり、力を抜いていく準備を始めると、緊張もほどけていきました。立位のポーズに入る頃には、集中があるのみ。レッスンが進むにつれ、しっかり汗もかき、呼吸の深まりも感じられていきます。そして、呼吸法と瞑想によって、心が静かになっていきました。
最後30分は、自由に好きに過ごします。私は迷わず、そのまま部屋でゆっくりすることにしました。部屋にあった本にも興味はあったけれど、頭を使いたくなくて、仰向けに寝っ転がり、窓からみえる空、流れていく雲を眺めていました。
「動きたい」と思って来たけれど、心の奥底には「休みたい」という感情もあったのかもしれないと気づきました。頭を使わず何も考えたくない、、それに気づけて即実行できたことが、満足度を高める結果に繋がったのだと思います。自分の本音に気づくこと、見逃さないことは大事なことですね。
こんなに穏やかで静かで豊かな気持ちになれたのは、久しぶりでした。大満足かつ、心から良かった!と思える時間を過ごすことができました。本当にありがとうございました。(ヨガ歴6年女性)


document_lang: ja

langs: ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ko ja ja ja ja ja ja ja ko ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ko ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en en

text:
問題が解決する沖縄ユタの選び方
特別な能力を持っている沖縄ユタでも得意、不得意はあります。
神でさえ、得意、不得意の分野があるのでそれは仕方のない事なのです。
鑑定をお願いしたけど問題解決に至らなかったという事にならないように、鑑定を行う前にしっかりと選ぶようにしましょう。
選ぶのが難しい場合は、お勧めの先生を選んでくれる電話占いを利用するのも良いと思います。
カテゴリー: 沖縄ユタとは
本物の霊能力を持つ沖縄ユタ
投稿日時: 2017-08-02 投稿者: wpmaster
沖縄ユタは神霊に選ばれた霊能力者
現在、沖縄の占い師として有名な沖縄ユタですが、古くからシャーマンとして人々から頼りにされていた存在です。
巫女や祈祷者の事ですが、沖縄ユタは召命型シャーマンだと言われていて、神霊によって選ばれた者だけが能力を授かる事ができるのです。
沖縄ユタ以外にも霊能力を持っている方はいますが、その全てが優れている霊能力者とは言えません。
霊能力者にも本物と偽物が存在している為、しっかりと見極めて鑑定をしてもらわないと不運から抜け出す事は困難となります。
本物と偽物で大きく違う部分があるので、そのポイントを抑え判断すれば本物の霊能力者と出会う事ができます。
霊能力者の力もさまざまで全ての人が全く同じ能力を持っているわけではありません。努力や志によって違いがあります。
本物の霊能力者であれば、人々の幸せを願い力を使ってくださいます。しかし、偽物の場合は人々の不幸を願ったり自分自身の事だけを考えています。
沖縄ユタは高級霊と交信ができる
能力をどのように利用するかで神霊も向き合い方が異なる為、偽物だと高級霊とは交信する事ができなくなります。
幸せを願い努力をする霊能者に対しては高級霊も向き合って下さるので、問題解決への答えを教えて下さるのです。
沖縄ユタの場合は、相談者を幸福へと導きたいと強く願って下さるので高級霊と交信をし、思想を受け取り伝達してくださいます。
鑑定をする事で前向きになれたり、問題が解決するのは高級霊により良い「気」を受けているからだと言えるでしょう。
状況悪化は偽物の霊能力者
一方、低級霊としか交信ができない霊能力者はマイナスな気を受けている場合が多く、鑑定を受けても明るい気持ちになる事ができません。
以前より状況が悪化する場合もあります。不幸から抜け出せないのは偽物の霊能者鑑定を受けている可能性が高いです。
幸運を願っているなら、本物の霊能者を選ぶようにしましょう。
沖縄ユタは本物の霊能力者
本物かどうかは、どのようなアドバイスをしてくるのかが重要です。前向きになれるようなアドバイスがない場合や、不幸な事ばかり忠告される場合は低級霊に支配されている霊能者の可能性が高いです。
本来なら明るくなれるようにアドバイスが行われ、問題解決への方法を明確にアドバイスしてくれるものです。
沖縄の占い師は当たるという声が届いていますし、実際に体験した人の声も参考になります。神霊により選ばれ、人々の幸福を願っている沖縄ユタであれば問題解決へと導いて下さいます。
カテゴリー: 沖縄ユタとは
沖縄ユタは霊能者なのか
投稿日時: 2017-08-01 投稿者: wpmaster
沖縄に古くから伝わる霊能力者である沖縄ユタも近年は、沖縄の占い師としての知名度の方が高いと言えるでしょう。
霊能力者に霊視をしてもらうというよりは、鑑定をしてもらう目的で訪れる方が増えています。
しかし、本来沖縄ユタは霊能者であり占い師とは少し違っています。
問題解決へと導いて下さる事は同じですが、統計的な占術を用いて鑑定を行っているわけではありません。
占い師と霊能力者の違いについて、よくわかっていない方もいらっしゃいますが大きな違いがあります。
沖縄ユタは霊の声が聴ける
透視をして未来や過去が見えるのが霊能者だと認識しているかもしれませんが、それだけではありません。
沖縄ユタは、透視だけではなく霊との交信ができます。霊媒ができるので、霊の思想を受取る事ができるのです。
相談者の悩みを、神や守護霊に伺いその答えを伝達してくださる役目をもっています。
神や守護霊などの声を代弁する事はもちろんですが、占いやお祓い、祈祷も行ってくださいます。
相談者に合わせた独自の鑑定を行ってくれるのが、霊能力者です。
占い師は、手法を学びさえすれば誰でもなれます。
手相や占星術、四柱推命…これらは統計的な占術を用いた鑑定となる為、同じ手法を用いれば結果は誰が鑑定しても同じです。
統計的な占術よりも霊能力を用いた鑑定の方が答えが明確である事は確かだと言えるでしょう。
沖縄ユタがよく当たるとメディアなどで取り上げられているのも、占いとは違い的確なアドバイスがもらえるからでしょう。
沖縄ユタは神に選ばれた人
視えているもの、聴いているものを伝えて下さるので占い師と霊能力者では大きく違うのです。
占いは誰でもできますが、霊能力は誰でも持てるものではありません。
特殊能力であり、選ばれた人しか持つことができない力なのです。
沖縄ユタとなれるのは神に選ばれた人で、選ばれた人はそれを断る事もできないと言われています。
沖縄ユタは欠かせない存在
沖縄の占い師としての知名度の高い沖縄ユタですが、昔は人々の生活には欠かせない存在でした。
日常生活での些細な事でも、大きな決断でも頼りにされていました。医師さえも沖縄ユタを頼るくらい、人々から信頼され必要とされていた存在です。
家庭はもちろん、仕事や恋愛…人生で悩みを抱えている方は沢山いらっしゃいます。
それは今でも変わらず、地域だけではなく全国の人が沖縄ユタを頼りにしています。
どうする事もできないと諦めていた悩みも、沖縄ユタなら解決へと導いてくださるでしょう。
カテゴリー: 沖縄ユタとは
投稿日時: 2017-07-31 投稿者: wpmaster
沖縄ユタはなくてはならない存在
沖縄ユタとは沖縄や奄美大島に古くから伝わる霊能力者です。シャーマンと呼ばれる事も多いですが、巫女や祈祷師を指しています。現在は沖縄の占い師としても有名です。
感受性の強い女性の方が神意を鋭敏に感じる事ができる事からユタは女性がなるべきものとされてきましたが、男性のユタも存在します。
古くから人々の生活を支える存在として頼りにされていて「医者半分、ユタ半分」と医者ですら沖縄ユタに信頼を置いていたくらいです。
なくてはならない存在だった沖縄ユタは、近年でも多くの人々を助け、頼りにされています。
霊能力者は特殊能力を持っていますが、この力は特別で誰もが手にできるものではありません。生まれ持って与えられたものなのです。
沖縄ユタは神霊に選ばれた者だけがなる事ができ、選ばれた者はその道を断る事もできないと言われています。使命であり、人々を救う為に選ばれた神に仕える者だという事です。
霊と交信ができるので、神や守護霊と交信する事ができ高次の世界からのメッセージを人々に伝える事ができます。その役目をしているのが、沖縄ユタです。
沖縄ユタは霊との交信で問題解決
霊は人々が知る事のできない事までご存知です。その思想をシャーマンを通し伝えて下さるのです。伝えて下さる内容は悩みの解決に繋がる事はもちろん未来予知までさまざまです。
沖縄ユタは、家庭の運勢や吉凶の判断や除災などの呪術や供養も行います。家庭問題はもちろん恋愛や仕事などあらゆる問題を解決に導いて下さいます。
今まで解決しなかった悩みでも、沖縄ユタが神や霊と交信してくださる事で簡単に悩みが解決するのです。
占いとは違い、神秘的な力を用いて問題解決へと導くので解決する確率も高いと考えて良いでしょう。体験談を見ても効果が絶大である事がよくわかります。
霊能力での問題解決をオカルトだと思う方もいるかもしれません。
しかし、沖縄本島には斎場御嶽という世界遺産にも登録されている沖縄ユタにとっての聖地も存在します。
その事からもオカルトではなく、本当に人々から必要とされ問題解決に役立っているという事は明確です。
あらゆる問題を解決してくれる沖縄ユタですが、得意・不得意があるので確認をしてから相談をする方が、的確な答えをいただけます。
どうしようもない状況で困っている人であっても沖縄の占い師である、沖縄ユタに相談をする事で明るい未来を見る事ができ開かれた道を歩む事ができます。
カテゴリー: 沖縄ユタとは
霊と交信ができる沖縄ユタ
投稿日時: 2017-07-31 投稿者: wpmaster
沖縄ユタは霊と交信ができる
沖縄ユタは霊と交信をする事で、人々の悩みを解決へと導いています。交信は占いとは違う別の方法であり、限られた人しか行う事ができません。
沖縄ユタの場合は、召命型シャーマンだと言われていて、神霊に選ばれたものしかなる事ができないと言われています。ちなみに、シャーマンとは巫女や祈祷師の事です。
沖縄ユタは生活に欠かせない
誰もがなれるわけではない為、昔から貴重な存在であり人々から頼りにされているのです。生活をする上では欠かす事ができない存在でありました。
現在でも沖縄ユタは沖縄の占い師として、人々の悩みを解決へと導いてくれる存在で、頼りにされています。神霊や守護霊とコンタクトを取る事ができ、受け取ったメッセージを相談に来た人々へ伝えています。
沖縄ユタは神霊に選ばれし者
普通の人は霊と繋がり交信する事はできません。沖縄ユタは神霊に選ばれ特殊能力を与えてもらったので高い次元にいる例とも繋がり、メッセージを受け取る事ができます。この能力を人の幸せの為に使い、沖縄ユタはさまざまな人の悩みを解決しています。
霊と交信ができる事は特殊な能力である為、不安を感じる方もいらっしゃるでしょう。しかし、実際に体験をして幸せを手に入れる事ができています。
沖縄ユタは霊からの思想を取り次ぐ
霊の交信には意識のある状態とトランス状態で行う2つがあります。
トランス状態とは日常的な意識状態ではない事です。イメージとしては、夢や意識が朦朧としている状態です。
霊との交信で、高次元の霊は人類に対して思想を伝えます。それを取り次ぐのが沖縄ユタの役目となります。
霊界交信によって、霊の思想を受け取り人々の悩み解決を導く事ができます。また、それだけではなく未来予知なども可能となるのです。
沖縄ユタはメッセージを受け取る役目
霊界交信とは通信霊と霊媒の存在が必要です。通信霊とは霊界からのメッセージを送る霊の事で、霊媒は霊界からのメッセージを地上に伝える役目です。霊媒を行っているのが、沖縄ユタとなります。
沖縄ユタは霊からメッセージを受け取るだけではなく、お祓いや先祖供養の仕方なども教えて下さいます。
神霊に選ばれ特別な能力を持っているからこそ、あらゆる問題を解決へと導く事ができるのです。沢山の沖縄ユタが存在しますが、相性も重要となります。
沖縄ユタにも不得意な事はあるので、相談内容によっては断られる事もあります。
的確なアドバイスを求め問題解決を願っている場合は、本物の沖縄ユタを選ぶようにしましょう。
カテゴリー: 沖縄ユタとは
投稿日時: 2017-07-24 投稿者: wpmaster
沖縄ユタとは、沖縄に古くから伝わる霊能者の相生のひとつです。
民族霊媒師や巫女など言われ方は様々で、男性もいますが大半が女性です。
神と繋がり守護霊とコンタクトを取る事ができ、悩みを抱えている人にアドバイスを行ったり除霊を行うこともあります。
青森イタコに似ていますが、沖縄ユタでは口寄せは行いません。霊能力を使ってカウンセリングをして人々の生活を支えてきました。ただ、ユタがいないと不都合が生じるという点は青森イタコと共通しています。
沖縄ユタの場合「医者半分 ユタ半分」ということわざがあり、それだけユタが人々にとって重要であるという事が良く分かります。
実際に、精神面で不安定な患者に対して医者がユタを勧めることもあります。スピリチュアルな面に長けたユタは医者からも信頼を得ているという事です。
琉球文化圏ではユタ禁止などの歴史もあり、現在でも蔑称を受け取る人々も数多くいます。しかし、歴史を振り返れば沖縄ユタに救われた人は多く、信じ頼っていた人は沢山います。
ユタは召命型のシャーマンだと言われていて、神霊によって選ばれたものと見なされます。神に選ばれたという事になるので、本人の意思で拒絶する事は困難です。
沖縄ユタの評判について
近年メディアなどでも多く取り上げられるようになり、沖縄ユタは高い注目を浴びています。
しかし、霊媒師と聞くと怖いイメージもあり、手を出す事が出来ていない人も多いのではないでしょうか?
沖縄ユタの評判は、比較的高いものが多く、口コミ等を見ても「問題が解決した」「不思議な体験をした」と言っている人が沢山います。
評判は良いものばかりなので、沖縄ユタは問題解決を期待できると思って良いでしょう。
実際に家族の問題を相談をして解決をした人もいますし、恋愛を相談して常住した人も沢山います。神と繋がる事ができるので、あらゆる問題を解決する事ができます。
普通の占いとは違い、将来の目標が見えたり今後取るべき行動がわかったと沖縄ユタに占ってもらった人は明るい人生を過ごす事ができています。
曖昧な答えではなく、明確な答えが欲しいと思っているなら沖縄ユタを利用してみるべきだと思います。沖縄ユタに相談をした人は、「彼と復縁ができた」と相談をした事を本当に喜んでいます。
他人の評判も大切ですが、自分が実際に相談をしてどうなのかが重要です。人それぞれ悩みも違うので、興味があるなら相談してみる価値があります。
評判が良ければ必ず誰でも満足した結果が得られるわけではないので、直感でこの人だと思う人を選ぶ事も大切です。
占いと言っても色々な方法がありますが、ユタではどんな方法で占いをするのか気になっている人も大勢います。
カードを用いたり星を見て判断するのではなく、基本として沖縄ユタの場合は霊能力を利用して占いをします。
氏名や住所など必要最低限の情報だけで、それを基にアドバイスなどを行ってくれます。
そのアドバイスが的確だと人気が高く、実際に言われた通りになったとか、アドバイスに沿って行動をしたら上手くいったと口をそろえて言います。
最初は半信半疑で行っても、帰る頃にはそんな思いは忘れてしまっている人ばかりです。それだけ的中率も高いという事です。
中には祈祷の際に唄を歌うユタもいますが、沖縄ユタと言っても占い方法は少し違っている部分はあるので必ず全員が歌うという事ではありません。
沖縄ユタは今でこそ占いで有名ですが、もとは安らかに日常生活を送る為に助言をする役目でした。それに頼る人も多く、人々はユタに救われ過ごしていたのです。
ご先祖様や神様の声を代弁するのはもちろん、お祓いや祈祷のほか、先祖供養の仕方などを教えるのもユタの仕事になります。
当たると噂の沖縄ユタですが、実際のところはどうなのかが気になっている人も数多くいます。
相談して良かったという声が多いものの、占いだし信じられない…なんて人も沢山いるでしょう。気持ちはわからなくはないですが、当たらないなら人気になるわけもありません。
実際に利用した人の声を聞いてみると、「出産前でまだ性別も聞いていなかったのに言い当てられた」や「3か月以内に結婚する」など、未来に起こる事を言い当てられた人もいます。
沖縄ユタも沢山いますが、専門分野があるので自分の悩みに合ったユタを選ぶようにした方が、的確なアドバイスがもらえます。
現在を見る人もいれば、過去を見る人もいます。未来を見る人もいれば、先祖を見る人もいるのでどのユタが自分に合っているのか考えてみて下さい。
もちろん神霊によって選ばれているので、どのユタでも霊能力者であるという事には変わりありません。
専門分野があるという事を知っておけば、やっぱり当たらなかったじゃないか…という事にもならないでしょう。
当たっている人がいるから、これだけ人気があるのです。もっと信じてみても良いのではないでしょうか。
沖縄ユタではどんな相談を受け付けているのか
悩みに悩んだ末、辿り着いたのが沖縄ユタだったという人もいると思います。
誰もが存在を知っているわけでもないですし、ここに辿り着く事ができたというのは運命とも言えるでしょう。出会えず悩み続けている人は山ほどいます。
そんな素敵な巡り合わせによって、今まで凄く苦労してきたのに沖縄ユタに相談したら簡単に解決する事ができた人も沢山存在しています。
仕事も家庭も何もかもがうまくいかず、逃げ出してしまいたい…そんな不運続きの人や事業が上手くいかないという人などあらゆる悩みを抱えた人が相談に来ます。
霊的な問題に限らず、人間関係や家庭問題、仕事の相談などどんな事に対しても親身になってアドバイスしてくれる存在、それが沖縄ユタです。
沖縄ユタで解決した悩みとは
「不運続きで何とかこの状況を脱出したい」と最後の手段として沖縄ユタの所を訪れる人は沢山います。そして、今までの不運が嘘のように解決したと幸せな人生を送っています。それだけではありません、事業が上手くいかないという人も沖縄ユタに相談をした所、どんどん契約が取れるようになり経営が安定し、自分が思い描いていた以上の人生を歩んでいます。
このようにあらゆる問題解決に繋げていくユタのお力添えは、今どうしようもない状況で困っている人も幸せに導いてもらう事ができます。
選ばれた者しかなる事ができない沖縄ユタは、他では全く解決できなかった事も解決への道へと導いてもらえます。
世の中には同じような事で悩んでいる人は沢山います。その人達が沖縄ユタに頼る事で明るい未来を過ごせているなら、同じように「明るい未来」を歩む事はできるという事です。


langs: ja en ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja ja ja ja ja en ja en ja ja ja ja ja ja ja ja ja ja en

text:
http://anitanchuchu.blog.fc2.com/
みどりの独り言レポート
髙野みどりが各Dogcafe店でのセッションをブログに色々と書かれています。動物だけではなくあらゆる生きとし生けるものの動物、空を飛ぶ鳥たち、水に住む生き物、小さな虫たち、樹木、念の入った石、宝石、貴金属、地球外生物ともお話しが出来る!!大神様から「聞き耳頭巾」を戴いたのです。その実力は皆様絶賛して居ります。スピリチュアル アニマルセッションを受けられた飼い主の皆様、動物を愛する皆様必読です。髙野みどりの実力に驚かれています。
髙野みどりは大神様からの神通力を使い「邪心邪霊」、霊孤である「風孤」「野孤」「艶孤」の「遷座の儀」、御仏の道に行く事の出来ない数々の御霊を御仏の道へとお導きする。その他清め祓いの神事、土地、井戸、山、その他色々なモノの霊視、写真鑑定とその体験をレポートに書き記して居ります。大神様のお力添えを戴き使者としてしっかりとそのお役目を果たさせて戴いて居ります。必読です。
メルマガではイナリダイジ様から「ぶっちゃけトーク言わせてもらいます。」のタイトルで「わんにゃん太郎の独り言」「ご神仏の部屋」のブログでは書けないトーク内容,又お勧めの動物病院、お勧めのドックカフェ、お勧めのサプリ、他色々な情報等、皆様に知って戴き皆様に少しでもお役にたてられればと思います。いろいろなお話しを先生とは違う角度でアニマルを愛す飼い主様、神様大好き人間、楽しく面白く鋭くお話しをしていきます。是非登録されまして読まれて戴きたいと思います。宜しくお願い致します。
HOME  予約情報ニュースお知らせ  高野みどりについて  セッション、神事のご案内ご説明  光明稲荷、お稲荷さんについて  アニマルブログ神事レポート  メルマガ 公式通販  お問い合わせ
Copyright © 2016 takanooffice midorinomori All Rights Reserved.


langs: ja ja ja ja en ja en ja ja en ja en ja en ja en ja en ja en ja en ja en ja ja en ja en ja en ja en ja en ja en ja en ja en ja en ja en ja en ja ja ja ja pt ja ja ja ja ja ja ja en ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja zh ja ja ja ja ja en ja ja ja ja ja ja ja ja ja ja ja ja ja ja en

text:
HANAオーガニックで最高の肌へ
ハナオーガニックの成分について
そんなハナオーガニックの美白成分は、「ローズ」のエキスです。
実はバラは、美白効果が高く、肌の再生力を高める働きがあります。まず、ローズに含まれている「ポリフェノール」は高い抗酸化力があり、活性酵素を強力に抑制してくれる効果があります。
そのため、しみやくすみの原因となるメラニンの生成を大幅に抑えることができるのです。
そして、ローズには、「プラセンタ」も配合されています。プラセンタと言えば、最近話題の細胞増殖因子で、細胞分裂を活発にし、新しい細胞をどんどん作り出すサポートをしてくれます。
ほとんどの化粧品に配合されているプラセンタは、豚や馬など、動物から摂れるものを配合していますが、実はプラセンタは、植物からも摂れます。
厳密には、植物に胎盤はありませんので、「プラセンタ」ではないのですが、動物性プラセンタと全く同じ働きをするほか、動物性プラセンタよりも、安全性が高いとされています。
最後に、ローズのアロマ効果ですね。ローズは、他の植物とは比べ物にならないくらいたくさんのアロマ成分を含んでおり、それが副交感神経に作用し、肌の再生力を高めてくれる働きをします。
またリラックス効果も高いため、ストレスなどによる肌荒れなどの抑制効果も高いと言われています。
このように、意外と侮れないローズの力で、実際に付けて得られる効果と、香りによるダブルの効果で、肌を元気にし、新しい細胞をどんどん作り出すように働きかけてくれます。
植物の力は、時として、ケミカル化粧品以上の効果があり、ハナオーガニックはまさに植物の力強さを感じられる化粧品です。
美白のみならず、ローズの力で、女子力もアップしていきたい方にはおすすめですね。
HANAオーガニック公式サイトはこちら
このページの先頭へ戻る
人気美白化粧品のレビューまとめ
エリクシール ホワイト
メラノクール ホワイトソリッド
スーパーホワイトエクストラ
デルメッド(DERMED)
ホワイトニングリフトケアジェル
KIBIKI(キビキ)
エリクシール ホワイト
ホワイトニングリフトケアジェル
ドットゼロパーフェクト
ワイルドローズビューティーバーム
ブライトニングフォーミュラ
スキンケア化粧品の用語集
エリクシール ホワイト
エリクシール ホワイト
デルメッド(DERMED)
Copyright (C) 2017 30代〜40代の美白スキンケア化粧品(化粧水・美容液など)All Rights Reserved.


langs: en en en en en en en en en it en en de en en en en ja ja en en en en en en ja ja en en en en en en en en en en en en nb en en

text:
Charlotte de Rothschild - Lyric Soprano - Home Page
Toggle navigation Menu Charlotte de Rothschild
Charlotte de Rothschild studied at the Mozarteum in Salzburg, Austria and at the Royal College of Music in London. With her wide knowledge of the song repertoire, from different eras, countries and genres, she has created some wonderful themed programmes; the best known being the "Family Connections" programme which Charlotte has performed all over the world.
Some of the concerts took place in original family houses such as the Villa Ephrussi-Rothschild in the south of France, the Château de Ferrières outside Paris and in the Rothschild-Palais in Frankfurt where she sang in front of Chancellor Kohl on the 250th anniversary of the birth of Mayer Amschel, the founder of the dynasty. Among the many places she has presented the "Family Connections" programme are Mumbai, Athens, Singapore, Switzerland, Taiwan, Japan, the U.S. and the U.K., either with piano accompaniment or with her colleague Danielle Perrett on the harp.
Her on-going research led to the discovery of a musical autograph book, started by a previous Charlotte de Rothschild in 1827, and in 2010 Charlotte collaborated with Professors Philip Gossett and Francesco Izzo, both well-known musicologists, in performances of music taken from this Rothschild "Livre d'Or". Professor Gossett's research on the material yielded a wealth of new knowledge and material and they presented their findings at the 2011 American Musicological Society conference in San Francisco.
Other themes presented in major concert halls or Festivals include "A Bouquet of Flower Songs" (arranged by the season) with which Charlotte toured Japan and India in the Spring of 2012 and again in Japan in July 2014, "Women of the Old Testament" (with harpsichord and piano accompaniments) that she devised for the B'nai Brith Music Festival and "A Woman's Lot" (a humorous look at the passage of life) which she created for the National Federation of Women's Institute's 75th anniversary. Charlotte put together a new programme with harp for the McMullen Museum of Art in Boston. This concert was held in conjunction with the art exhibition "Making History", from the Royal Society of Antiquaries, and included songs that reflect Antiquarian interest in England in the 18th, 19th and early 20th Centuries and they repeated this recital in Yale and in London. Whilst in America Charlotte and Danielle premièred another new programme at the National Gallery of Art in Washington given in honour of the Joan Mirò exhibition. Her latest programme, which she performed with the pianist Adrian Farmer in Boston and then in Newport, Rhode Island, was a celebration of the work of the stained glass artist John La Farge called “Mirages: The Light and Life of John La Farge through Music.”
Charlotte's oratorio career has been extensive; she was a soloist for the Bach Choir with Sir David Willcocks in Exeter, Wells and Truro Cathedrals, in King's College, Cambridge and at the Royal Festival Hall. She performed in Mozart's Requiem twice in the Place de la Madeleine in Paris and was a soloist in Rossini's Petite Messe Solonelle for a recording made in Japan. Her most recent recording with chorus is a new CD of the compositions of Gary Higginson, released on the Regent Record label, with the Ely Cathedral Girl’s Choir, Selwyn College Choir accompanied by Danielle Perrett on the harp.
Charlotte is a Nimbus recording artist and has a 9 CD contract with them. She started her collaboration with the pianist Adrian Farmer recording a double album called “The Songs of Mathilde de Rothschild” which showcase the beautiful French and German songs of her talented ancestor who was a pupil of Chopin and a well-published composer in the 19th century (NI5903/4) and they have since gone on to record two Schumann albums called “An Intimate Recital” and “The First Green”, (NI5908 and NI5932), a Fauré album “Mirages and La Chanson d’Eve” (NI5915) and “The Songs of Roger Quilter”, (NI5930). Among her other CDs are “Christmas Lullabies” (NI7095) and “Fairy Songs” (NI6193) with harp accompaniment.
After performing in Japan for over twenty years, Charlotte recorded a CD of classical Japanese songs called "A Japanese Journey" (NI6190). She was the first foreigner to have recorded this music in the native tongue and as such was hailed as a pioneer and she has promoted the beauty of these songs all over the world, accompanied by the harp, piano or orchestra. She devised and performed quite a number of these Japanese songs as well as her family songs in a 90-minute television documentary for NHK TV called "Rothschild Passions" and was recently featured in a documentary on BS Asahi. A twenty-minute arrangement of Kohsaku Yamada songs was commissioned especially for Charlotte and the English Chamber Orchestra in a concert held at the Barbican and she premièred this work in Prague Castle, sang them recently in Osaka’s Symphony Hall and has just made a new CD of 19 orchestral arrangements of these very beautiful Japanese songs with the City of London Sinfonia conducted by Michael Collins for release later this year.  They will tour Japan together in the Spring of 2017.
主要なコンサート・ホールやフェスティバルなどで取り上げられたその他のテーマとしては、シャーロットが2012年の春に日本とインドで上演し、その後また2014年の7月に日本で再上演した、季節によって編纂された「歌の花束(A Bouquet of Flower Songs)」や、イギリスの歌曲を集めた「魔法のような夜(A Magical Evening)」などがある。後者はハープの伴奏によって歌われ、ニンバス・レーベルより、「妖精の歌(Fairy Songs)」というタイトルでリリースされた。ボストン、イェール、そしてロンドンでは、王室考古協会(the Royal Society of Antiquaries)の美術展、「歴史を作る(Making History)」に合わせて演奏会を行い、18、19、20世紀のイギリスのアンティークの世界を表現するようなプログラムを組んだ。このアメリカツアーの際、シャーロットはワシントンD.C.のナショナル・ギャラリー・オブ・アートで行われたジョアン・ミロの美術展においてもリサイタルを行っている。昨年にもアメリカで、ステンドグラス作家のジョン・ラファージの人生を描いたプログラムでリサイタルを行い、日本ツアーでも一緒に演奏したピアニスト、エイドリアン・ファーマーが伴奏を務めた。
ニンバスの所属アーティストとしてシャーロットは数々のCDをリリースしている。「マティルド・ド・ロスチャイルドの歌(The Songs of Mathilde de Rothschild)」というダブル・アルバムは、シャーロットの祖先で、ショパンの愛弟子であり、19世紀に多くの素晴らしいフランス語やドイツ語の歌を出版したマティルドの作品集である。他にも、シューマンの歌曲集「インティメートリサイタル(An Intimate Recital)」と「ファースト・グリーン(First Green)」、フォーレの歌曲集「ミラージュ(Mirages)」、そしてロジャー・クイルター作曲の歌曲集もリリースしている。シャーロットが初めて日本の歌曲を録音したCDは「日本の旅路(A Japanese Journey)」とタイトルが付けられているが、これはシャーロットが、日本語の歌曲を録音した数少ない外国人歌手の一人であったため、様々な新たな発見の旅であったことから名付けられた。 彼女はこれらの美しいメロディを世界中で紹介してきているが、この度、全く新しい試みとして、マイケル・コリンズの指揮のもと、シティー・オブ・ロンドン・シンフォニアというオーケストラの演奏をバックに、CD「花は咲く(Flowers will bloom)」をリリースした事を大変嬉しく思っている。その中で彼女は、良く知られている歌曲から、今まであまり歌われていなかったものまで、幅広く、心を籠めて歌い上げ、これらの歌の美しさに、新たな光を投げかけている。


langs: ja ja ja ja ja ja en ja ja ja ja ja ja ja ja ja en ja en ja ja ja ja en ja ja en ja ja ja en mk ja zh ja en hbs_lat ja ja mk ja en en en en en

text:
assistive technology & augmentative Communication Conference 2012 in kyoto
東京カンファレンスでは「凸凹を伸ばす」をテーマに、新しい知識をエキサイティングに学び、未来を考えるカンファレスとなります。東京カンファレスの詳細は9月初旬に決定します。皆さんのご参加をお待ちしています。
*ATACカンファレンス2013は従来通り京都国際会館で12月に開催されます。
今年の京都カンファレンスのテーマは「アルテク再発見」。
多くの人が求めている専門的な技術(テクノロジーとテクニック)は、実は身の回りにある常識的なテクノロジーやテクニック(アルテク)の組み合わせであることがよくあります。すでに皆さんが持っている技術を再発見し、いかに上手に活かしていくかを考えていきましょう。


langs: ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja en en

text:
そうした過程をふまえて、何か効果的な方法はないかとサークル内で話し合いを重ねたときに、自分たちで手話を作ることを決断しました。
2004年1月にNPO法人としての認可を受け、新たにユニバーサル、ダイビング、ネットワークとして、今日までに蓄積したノウハウをもとにこの本を出版いたします。
現在手話を使われている方にも、少しでもこの本が役に立てばよいと考えています。また、全く手話を使われこめじるし、指文字とは手の指を使って、 五十音を一文字ずつ表したもの。
はじめに、終わり。1ぺーじ終わり。
まる、9ページ。「ダイビングの手話をつくりました」本文はじめ。
オクトパス、ドライスーツ、レギュレーター……ダイビングに少しでもふれたことがある人なら、だれでも知っている用語です。でも、これらの手話はありません。
「くじら」や「イルカ」を表す手話はあっても、珊瑚、カクレクマノミ、エイなど、まだまだ多くの海中生物を表す手話がありません。「魚」の手話で表すか、指文字で「サ」「ン」「ゴ」などと一文字ずつ表しています。
ダイビングのいろいろなことを表す手話がもっとあったら、だれもが聞こえにくくなる海の中で、より自由に思いを伝えられるのではないでしょうか。
手話は、みんなに便利でやさしく、大きな可能性を秘めたコミュニケーション方法です。
本書では、手話を使ったダイビングスタイルをめざし、みんなで使える新しい手話を提案いたします。
この本で、あなたのダイビングが、より楽しく安全なものになることを願っています。
こめじるし、文中で紹介する手話で、新しくこの本で作ったものや、私たちのグループの中ですでに使っている手話には印をつけています。提案ですので、「もっといい表現がある」、「もうずっと前から自分たちではこんな表現をしている」、という場合は、そちらを優先してください。
本文終わり。9ページ、終わり。
まる、10ページから11ページ。「ユニバーサル手話って?」本文はじめ。
『ユニバーサルデザイン』という言葉をご存じですか? ユニバーサルデザインとは、すべての人が、年齢や障がいの有無にかかわらず一緒に使える、安全で快適な「もの」「建物」「空間」「サービス」をデザインするという考え方です。
単に「もの」の形を表現するデザインだけでなく、人の生き方そのものをデザインしていくという意味でもあります。
ユニバーサル手話は、ユニバーサルデザインの考え方を基本としています。手話は、耳が聞こえない人の大切な言葉であることを尊重しながら、手話の伝える力の強さに着目しました。
すべての人が、障がいの有無にかかわらず、手話と出会い、よりよいコミュニケーションをデザインしていく手話を、ユニバーサル手話と位置づけました。
聞こえる人にとっても、手話が表現手段の一つになったら、より豊かなコミュニケーションがうまれるのではないでしょうか。聞こえない人とも手話で話せるし、聞こえない人にとっても、手話で話せる人が増えると、生活しやすい社会となります。
聞こえない人とのコミュニケーション=手話 がすべてではありませんが、コミュニケーションの幅が広がるのではないでしょうか。
この本は、だれもが手話で話せるユニバーサルな環境をめざしています。
いくつかのユニバーサルデザイン商品が、イラストで説明されています。
1、プルトップの点字。アルミ缶のプルトップに点字で「お酒」と書かれています。イラストは、ビールの缶のふたの部分が点字でぽちぽちしているものです。
2、シャンプーのギザギザ。リンスと区別するために、シャンプーの容器の横はギザギザしています。イラストは、シャンプーとリンスと書かれた2つの容器が並んでいて、シャンプーの横だけぽちぽちがついています。
3、携帯電話。バイブレーター機能やメールが完備され、5のボタンの上には丸いポッチがついています。イラストは、折り畳み式の携帯電話を開いているイラストです。
4、プリペイドカードの切り欠き。さわるだけでカードの種類や差し込む方向がわかります。イラストは、2枚のカードが並んでいます。1枚は、三角の切り欠きが3つ入ったパスネット、もう1枚は、まるい切り欠きが、少し間をおいて2つ入ったテレフォンカードです。
10ページから11ページおわり。
Copyright 2012 UD Japan Co..Ltd. All Rights Reserved.


langs: ja ja fr ja fr ja ja ja ja ja ja ja en fr ja ja ja ja ru ja zh ja ja ja ja

text:
すべての語を含む いずれかの語を含む すべてのカテゴリ ブラウザ マンション管理士 教育 二世帯 買取 家電 代議士 大晦日 学習
最速納期を目指しております。 大手のプレス工場にてプレスし、10日前後で発送しています。 品質の良いものを早く安く制作しお届けします。 最高の品質での商品のお届けが可能となります。 業者の方はもちろん、個人で制作されている方もターゲットです。 最安値・最速納期・最高品質の商品を提供いたします。


langs: ja ja id ja ja ja en ja en ja en ja ja en en ja en en ja en en ja en en ja en en ja ja en ja en ja en ja en en ja en en ja en en ja en ja en ja ja en ja en ja ja en en ja en ja ja en ja ja ja ja en ja ja en ja en ja en ja ja en ja en ja en ja en ja en ja ja en ja ja en ja en en ja ja en ja en ja ja en en ja en en en en en en en ja ja ja ja ja ja ja zh ja ja zh ja ja ja ja

text:
迷わずその場で注文してみました。数日してまず遺伝子検査のキットが送られてきます。
TVで見る科学捜査のように麺棒で頬の内側をすりすり。 それを返送し待つこと約2週間。
口コミにうるおい・敏感肌・柔軟性の3つが診断されているとあったので、ドキドキして開封しました。
結果はうるおいが普通!普通でも充分です、低じゃなく嬉しい。残り2つは敏感肌が低で柔軟性が普通でした。
手元にきた美ジーンは遺伝子検査の結果をもとに、24種類の中から選択されたものだそう。オーダーメイドされたものみたいで特別な感じがします。
早速使ってみると口コミ通り肌への浸透が早い!
手に取ると比較的さっぱりしているのに、浸透した後の肌はもっちりします。
かなりの好感触です。容量が200mlなのも化粧水はたっぷり使いたい自分には好ましいポイント。
その後1カ月継続使用し一番驚いたのは、生理前に必ず出ていた吹き出物が現れなかったことです。
肌質に合った化粧水の威力を実感しました。
次回以降は通常価格になってしまうのですが、私の悩みだったうるおい不足と吹き出物を同時に解消してくれる優れ物なので、継続利用するつもりです。
遺伝子検査はとても簡単でした。
申し込んでから届いた検査キット。
難しいのかな?と思っていたのですが、遺伝子検査は、実に簡単でした。
綿棒で口の頬をこするだけ。
遺伝子検査って怖いなというイメージでしたが、想像以上にシンプルでした。痛くないし、こんな簡単な検査で肌質がわかるなんてすごいですね。また個人情報がしっかり守られた検査機関で匿名化されて調べてもらえるので安心です。
実際に、遺伝子検査を実費でしたらもっと高いと思うのですが美ジーンなら化粧水に肌質検査結果までついてきてお得だと思いました。
美ジーンの価格について
美ジーンは、正直かなり高価な化粧水です。通常価格21,800円。
どう見ても普通の人には、気軽に購入できる値段ではありません。でも遺伝子検査が無料というメリットというのがあり、毎月100名限定に適用されます。
私が購入した美ジーンは、価格で3,980円でした。しかも送料込みです。
2回目以降は、8,500円(税別)となりそれでも高価であることには代わりはありません。しかしながら、自分の肌質にあった化粧水というのは、なかなか出会えるものでもなく貴重だと思います。
継続して効果がでてくるものなので、半年は続けてみようと思います。
30日間返金保証がついている
美ジーンの公式ページの申し込みページの各種規約に30日間返金保証について書いてありました。
肌と合わない場合は、到着30日以内にコールセンターへ電話をします。返金請求する場合は、容器返送必須なので捨てないようにしましょう。送料は購入者負担となっています。
後日、記入した銀行へ返金されるのだそうです。
正しい化粧水の付け方は?
自分の肌に合った化粧水を購入しても正しい化粧水の付け方を知らないと無駄になってしまいます。一般的には化粧水をコットンにつけて叩くように馴染ませる方法が知られていますが、その方法は実は間違っているのです。
素肌はとてもデリケートな物。コットンを肌にすべらすたりパッティングしたりすると肌が余計に傷ついてしまいます。
つまり角質に傷が付き外部からの汚れが侵入にしやすくなってしまうのです。そのため肌は乾燥しやすくて老化現象を加速させてしまうことにもなります。
そうならないためにも化粧水は手に取って付けるのが正しい付け方だといえます。
一人一人にあった化粧水を探しているなら美ジーン
美ジーンという化粧水はどんな化粧水?
美ジーンの価格と定期購入について
美ジーン化粧水の最安値は?また公式で買うのが良い理由とは?
美ジーン化粧水の引き締め成分と効能は?
ニキビに効くメンズ化粧水
男のニキビに効く人気化粧水
男のニキビ対策ができるおすすめ化粧水
赤みニキビ跡に効く男がつかえる化粧水
男のニキビに効く化粧水
Copyright (C) 2016 遺伝子検査 化粧品の口コミ | 実際に購入してみた話題の化粧水All Rights Reserved.


langs: ja ja ja ja en en en en tr en en ja ja ja ja ja ja ja ja en ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja ja ja ja ko ja ja ja ja ja ja ja ja ja ja ja ja ja zh ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja ja ja ja ja ja ja ja en ja ja ja ja ceb ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ru ja ja ja ja ja ja ja ja ja ja en ja ja ja ja ja ja ja ja en ja ja ja ja ja ja ja ja ja ja ja en ja ja ja ja

text:
赤い椅子プロジェクト 今年も小さなことからコツコツと。
あけましておめでとうございます!
昨年は吉祥寺の皆様、ならびに、関係各者多くの皆様にたくさんお世話になり支えていただきながら過ごした一年となり、本当にありがとうございました。
劇的な変化ではないかもしれません。それでも小さなことを地味にコツコツと積み重ねていって、吉祥寺を知って頂くきっかけになったり、吉祥寺を訪れた人がああ来て良かったなと思っていただけるような、そんなきかっけの導入部分を形作っていけたらなと思っています。
年は明けておりますが、昨年末の『吉祥寺ECCO 12月号』の6ページ下段に赤い椅子プロジェクトの紹介を掲載されております。昨年10月に取材していただいたものです。ありがとうございました。
以下がその吉祥寺ECCO 12月号の抜粋となります。ご覧いただければと思います。
それでは本年もどうぞよろしくお願い致します。
共同代表 加藤研介 水城千草
0 件のコメント: この投稿へのリンク
メールで送信BlogThis!Twitter で共有するFacebook で共有するPinterest に共有
ラベル: お知らせ, コラム, 活動報告
赤い椅子プロジェクト『糸モノまつり』に赤い椅子を出展し、ワークショップイベント等で使用されました!
11/28土曜日、糸モノまつり開催中の土曜日に赤い椅子プロジェクトの赤い椅子を、各イベント会場に出展し、使用されました。去年に引き続き2年連続2度目の参加です。
赤い椅子は、今までも大きなイベント時に、そのイベント会場に出展貸出しをし、使っていただき、まちの人の、またそのイベントに参加されている方々の観覧席やお休み処として使っていただいてきました。今年は、5月の吉祥寺音楽祭、7月のふれあい夏祭り、9月の吉祥寺秋まつりワークショップに続き、皆様のお陰を持ちまして第4弾となりました。
今年も前日に勝又木材さんに搬入しました。
社員の方、社長の勝又さんのご好意により、フォークリフトを出動!していただいてとてもスムーズに2階のイベント会場に搬入することができました!
糸モノまつり風景を実際見てみたかったのですが、どうしても都合によりそれは叶わず。。。
糸の紡ぎ作家さん、またそのイベント・ワークショップの参加者に座っていただきました。
後日、日にち経って、勝又木材さんの2階ギャラリーでのワークショップイベント「ツムギテント」で、参加者の皆さんが赤い椅子に座ったり、モノを置いたりしながら糸を紡いでいくそんな姿が写された写真をツムギ作家のソウマノリコさんに送っていただきました。
ソウマさん、改めましてありがとうございました。
写真撮影:ソウマノリコさん
搬出時も勝又木材さんのフォークリフト出動でスイスイっと!2階のギャラリーから、地上へ一瞬で!
更にサンケイリビングさんやカヤシマさんからお借りしていた赤い椅子をまた配置させていただきにあがり、その後、大正通り商店会にありますモノギャラリーさんにイベント後に集まっていた赤い椅子たちを引取り、最後に赤い椅子を常設させていただいているパールズホワイトさんへ!
PW(パールズホワイト)の店主で宝石の主治医の久保田さんが、年末の商店会イベントで背もたれ付きの赤い椅子を使えないかというご要望があり、それだったら!と糸モノまつりで出展したうちの1脚を置かせていただくことになりました。
ちょっと話が前後しますが、糸モノまつりで使用していただいた椅子たちの内の数脚、そしてPWに新たに店頭に置かせていただけることになった椅子たち、そして更に、新規で御殿山にあります、音楽教室を営まれていますスタジオセシリアさんにも置かせていただくことになりました赤い椅子、実は、これらは、秋祭り時に塗装ワークショップを中道通り商店会さまと共催したのですが、そのワークショップで、多くのお子さんを中心としたまちの人に赤く塗っていただいたものなんです!!
やっと、塗装ワークショップ時に赤く塗られた椅子たちがまちなかに現れることになりました!
実際に塗っていただいた方々はもちろん、会場にお越しいただいた方々、塗装ワークショップをご存知だった方々、もちろんそれ以外にも多くの方々に見て触れて座って頂きたいです。
去年に引き続き2度目の参加となりました『吉祥寺糸モノまつり』。
赤い椅子が固まって使用されることがなかなかない中、貴重な体験が自分たちとしてもできたかなと思っております。主催者の一人のソウマノリコさんを始め、多くの主催者の方々、椅子を保管して下さっ方々、全ての方々にこの場をお借りして改めまして感謝申し上げます。どうもありがとうございました。
また、今後共どうぞよろしくお願いいたします。
そして、この糸モノまつりを皮切りに、塗装ワークショップ時に赤く塗られた椅子も吉祥寺のまちなかに旅立っていくことができました。
吉祥寺につながるほんの少しの小さなきっかけとしていただければ幸いです。
以後も私達はこんな小さなきっかけを大切にまちなかのみなさまと活動を続けていければなあと思っています。
どうぞよろしくお願いいたします。
0 件のコメント: この投稿へのリンク
メールで送信BlogThis!Twitter で共有するFacebook で共有するPinterest に共有
2015.11.11日付 朝日新聞東京版 掲載
3日ほど時間が経ちましたが、2015.11.11付の朝日新聞東京版の第2東京28頁に赤い椅子プロジェクトの取り組みが掲載されました。
末尾にかっこ書きに記載されている、記者の高橋さんという方がじっくりとお話を聞いて下さり、まとめて下さったものです。どうもありがとうございました。このHPの10月23日の記事にも書きましたが、かなり深くじっくりとお話を聞いて下さり、それこそ取材というよりもむしろ対話といった流れで、それをまとめていってこのような記事になったのではないかと思います。
これを励みにまちと対話を重ねながらまた頑張っていければと思っています。進みはゆっくりとかも知れませんが、地味に地道にコツコツと、まちの人たちとお話をしながら、「ああこの吉祥寺というまちに来てみて良かったな」と思えるような、思いやきっかけなど作っていける、そんな助けになれればと思います。
同じ紙面には、井の頭公園の弁天池のかいぼりについての記事もありました。井の頭公園も再来年でいよいよ開園100周年です。
以下に添付している記事は、その朝日新聞東京版のもの、もう一つは、以下にお知らせするその当日付の朝日新聞デジタルのスクリーンショットです。
リンク先としての朝日新聞デジタルの記事はこちらです。赤い椅子もカラーで掲載されています。
ご興味ございましたら、ご覧いただければ幸いです。
http://www.asahi.com/articles/ASHBW621RHBWUTIL03P.html
0 件のコメント: この投稿へのリンク
メールで送信BlogThis!Twitter で共有するFacebook で共有するPinterest に共有
ラベル: お知らせ, 活動報告
とあるメディアの記者の方から、赤い椅子の取組みについて今日取材を受け、共同代表の水城と加藤とでお話しを吉祥寺にてさせていただきました。
いつ掲載されるかとかは私たちにもわからないのですが、ちょっとでも吉祥寺と様々な人やモノが繋がっていく、そんなきっかけになればいいなと思います。
吉祥寺駅前のイルミネーションの会場構成!
今年は今までとは全く違う体験ができそうです!
0 件のコメント: この投稿へのリンク
メールで送信BlogThis!Twitter で共有するFacebook で共有するPinterest に共有
とある記者の方が赤い椅子プロジェクトの取り組みの取材をしてくださいました。
私たちの取り組みに読み取りつつ、こちらのお話しを詳しく聞いて下さいまして、感謝感謝です。
いつかどこかで今日の件が発表されることがありましたら、その発表後に私たちからもお知らせできれば
来週は、いよいよ吉祥寺ハロウィンフェスタですね。過去開催史上最高の参加人数になるとか?!
おおいに盛り上がりそうですね。
去年も当日、その場にいた時間帯があったのですが、それはそれは、多くのちびっ子たちとその親御さんたちで盛り上がっていました。今年はそれを上回りそうというと、すごそうですね。
実行委員の方々は大変でしょうが、盛会を祈念しています!
0 件のコメント: この投稿へのリンク
メールで送信BlogThis!Twitter で共有するFacebook で共有するPinterest に共有
『椅子の物語』という書籍があります。
世界のあちこちにある椅子に注目し、その解説や紹介をした本です。
ある空間に椅子が置かれる、そこに座る人がいる、そして、物語が生まれます。座ることによって生まれる物語もあれば、その椅子が作られていく中で生まれる物語もあろうかと思います。空間や、場が、人と交わることによって生まれる物語です。
有名なデザイナーが設計した、あるいは創作した椅子のみならず、まちなかに何気なく置かれているベンチ、噴水周りの腰掛け石、これらもその場の雰囲気などと共に紹介されています。
人に使われ、場に馴染む、またその逆も。まちが呼吸をしながら、その場で生活する、またその場に訪れる人と会話をする。そんな息づく場を作ることに椅子は似合っているのかも知れません。
0 件のコメント: この投稿へのリンク
メールで送信BlogThis!Twitter で共有するFacebook で共有するPinterest に共有
赤い椅子塗装ワークショップの模様を徐々にアップします!
9/13(日)に吉祥寺西公園でおこなわれた赤い椅子塗装ワークショップから約10日ほど経ちました。その模様を、たくさん撮らせていただいた写真をアップしながらご報告しようと思っているのですが、すみません、もう少々お待ち下さい。。m(_ _)m。
塗装中も、子どもたち何人かが、「この椅子どこに置かれるんだろう?」と自分たちの手掛けた椅子がまちなかに置かれることに興味津々の様子でした。
中道通りをメインとして、吉祥寺のまちなかに置かせていただくことができるよう、準備も進めていきますので、首を長くしてお待ちくださいませ。たぶん、まとめて報告を、といか言ってると時間経ってしまいそうな気がするので、ちょっとずつ小出しにするかもです。どうぞよろしくお願いします。
この写真は、塗装ワークショップ開始直前、準備にあたふたしてる様子と、人来るかなーと心配しつつも準備終わってホッとしている様子です、笑。
メールで送信BlogThis!Twitter で共有するFacebook で共有するPinterest に共有
ラベル: イベント, 活動報告
赤い椅子塗装ワークショップをおこないました!
昨日9/13(日)におこなわれた、赤い椅子塗装ワークショップ、約30名ほどの子どもたち、またそのお母さん、お父さんたちに塗っていただき、大変盛り上がりました!
ご参加いただき、本当にありがとうございました!
また改めて、このフェイスブックや、ホームページにてご報告、ご紹介できればと思っていますので少々お待ち下さい。
今回の企画を共同主催して下さった中道通り商店会さま、また協力下さいました、自然塗料オスモカラーでお馴染みのオスモ&エーデル株式会社さま、お手伝い頂いた学生さんたちには御礼申し上げます。
まずは、簡単ではございますが、ご報告と御礼を取り急ぎ述べさせていただき、また後ほどご連絡させていただければと思います。今後ともよろしくお願い致します。m(_ _)m。
メールで送信BlogThis!Twitter で共有するFacebook で共有するPinterest に共有
新しい投稿 前の投稿 ホーム
登録: 投稿 (Atom)
blog archive
blog archive 4月 (1) 3月 (4) 2月 (1) 1月 (5) 12月 (1) 11月 (2) 10月 (6) 9月 (3) 8月 (3) 7月 (2) 6月 (4) 5月 (4) 4月 (2) 3月 (8) 2月 (5) 1月 (3) 11月 (3) 10月 (2) 9月 (4) 8月 (4) 7月 (6) 6月 (3) 5月 (2) 1月 (5) 12月 (3) 11月 (4) 10月 (10) 9月 (8) 8月 (8)


langs: ja en ja ja ja ja ja ja ja ja ja ja ja en en en en ja ja ja ja ja de ja de ja ja ja en en en ja en ja en ja uk ja ja ja ja ja ja en en ja en ja en ja en ja en ja ja ja en ja ja en ja en ja ja pl ja ja en ja ja ja ja en en ja ja en ja en ja ja en ja ja en ja en ja en ja en ja zh en ja ja ja ja ja ja en ja ja ja ja ja ru ja en en ja ja ja ja ja en ja ja en ja ja ja ja ja en ja en ja ja ja ja ja ja ja en ja en en ja en ja ja ja hbs_lat ja ja ja ja ja ja ja ja en en ja ja en ja ja ja en ja ja ja en ja en ja ja en en ja en ja ja en zh ja ja ja ja ja en ja ja en ja en ja ja pl ja en ja en ja en ja en ja en en ja ja en en ja en ja en ja en ja en en ja ja en ja en ja ja en en zh ja ja ja en ja ja ja ja ja ja ja ja ja en ja ja en ja en ja ja ja en ja en en ja ja en ja en en ja ja en ja en ja br en ja ja ja en ja en ja ja en en en ja ja en ja ja en en ja en ja en ja ja en en ja en en ja ja ja ja en ja ja ja ja ja ja en ja en ja en tr en ja ja ja en ja tr ja en ja ja en ja ja ja ja ja es ja en ja en ja ja en ja ja en ja ja ja ja ja ja ja en ja en ja en ja ja en en ja en ja ja ja ja ja en ja ja ja ja ja ja ja ja ja ja en ja en ja ja ja ja ja en ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en zh sv zh fr zh de zh de zh ja en ja ja en ja ja en en ja ja ja ja en ja ja ja en ja en ja ja en ja en en ja ja ja ja hbs_lat ja ja en ja ja ja hbs_lat ja en en ja ja en ja en ja en zh ja en ja ja en en zh ja en ja en ja ja en ja ja ja en zh ja ja ja ja ja ja ja ja ja zh ja tr ja tr ja en ja ja en ja en ja de en ja ja en ja ko ja ja en ja ja tr en ja ja en ja tr en ja ja tr ja tr ja en ja en ja ru ja ja en ja ja ja en ja ja en ja ja en en en ja en ja ja tr ja ja tr ja tr ja tr ja tr ja en ja ja ja ja ja en ja en ja en ja ja ja ja ja ja ja en ja ja ja en ja en ja ja en ja ja el ja en en ja en ja ja ja en ja ja en ja en ja en ja ja el ja ja ja ja ja ja ja en ja fr ja ja en ja ja fr ja ja en ja en ja en en ja ja ja ja en ja ja ja en ja ja en ja ja ja en ja en ja ja ja ja en en ja ja ja ja ja ja ja ja zh ja ja en en ja ja en ja en en zh ja en ja en ja ja en en en ja ja ja ja en ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en en ja en ja ja ja ja en en ja ja ja en en ja en ja ja en ja en ja ja en ja en en en en ja ja en ja en ja ja zh ja en ja en ja ja ja ja ja ja en ja en en ja ja zh en ja en ja ja en ja en ja ja en en ja ja ja en ja ja en ja en ja ja ja ja en ja ja zh ja en en ja en ja en ja en en ja ja ja ja ja ja ja ja ja en zh ja ja en ja en ja en ja ja ja ja ja ja ja ja ja ja ko ja ja en ja ja ja ja en en ja ja ja en en en ja en en ru ja en ja en ja ja ja en ja en ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja en ja ja ja ja en ja en en ja ja en ja zh ja ja ja ja ja ja en ja ja en ja hbs_lat ja tr ja ja ja ja en ja ja en ja ja ja en ja ja ja en ja zh en ja ja ja ja ja en ja hbs_lat ja ja ja ja ja ja en ja ja en ja en en ja en ja en ja en en ja en ja en en ja en ja en ja en en ja en ja da en en ja en ja en en ja en ja ja ja ja ja ja en ja ja ja en ja ja tr en kn ja ja ja en ja en ja en ja ja en en ja ja ja en en en en en en ja ja ja ja ja ja ja ja ja en ja ja ja ja en ja ja ja ja ja ja ja fr en ja en ja ja ja ja ja ja ja ja ja ja ja ja ja ja cs zh ja zh zh zh de zh zh zh zh zh zh zh zh de zh zh zh zh zh zh zh ja ja zh zh zh de zh zh zh zh zh zh zh zh ja zh zh zh cs zh zh zh zh zh zh zh zh zh zh zh cs zh zh zh zh zh zh zh zh ja zh zh zh cs zh zh zh zh zh zh zh zh ja zh zh zh cs zh zh zh ja zh zh zh zh zh zh zh zh fr ja zh ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja ja ja ja ja zh zh zh zh ja zh zh zh cs ja zh zh zh zh zh zh zh ja zh zh ja en en es hu en sv en en en en it it fr en en en it en en it pms nb pt en en pt pt en en cs pt en en es en it pt it it en ilo en it it en it it en pt en en en en en en pt nb en it it hu en ceb en en en fr ceb it pt en it en en fr en en pt en it it it fr en it en en es en en en en es en en en en en en en it en it en en et en pt it de jv cv en en en en en en en en en en en en en en en en en en en en en en en ca ja ja ja ja ja en en it en en hu it en en it it hu hbs_lat en pt hbs_lat en it ia en it it en en ja en it en cs hu cs it en it uk en it en en it is en it pl en en en pt en en it mk it it hu en it en en it en it en en zh it pt es hu en en it en en en en en en en it pt en la de it pt it en it it pt en it it it it en et es it en en en it en en pt en it en pl en en it en en la it it en hu it fr it en en en nb et en it en kk en is it it it en en en fr en hu en pt en ca hbs_lat en pt it es pt en it it it de it zh it ja ru te it it cs en en en pt it en en en it cs en ja ja ca cs ja en it hu en it en en en en it it pt en en en en en et it it en ko ro gl en es pt en en pt en sk ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ca ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja zh ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ko ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja es ja ja ja ja ja ja ja ja ja ko zh ja ja ja ja ja ja zh ja ja zh zh zh zh ja it ja ja zh ja hu ja ja ja ja hu ja ja ja ja ja ja ko ja ja hu ja hu ja ja ja ja ja it ja ja ja ja zh ja ja zh ja ja zh zh ja zh ja it hu zh ja hu ja ja ru ja ja ja ja zh ja ja ja gl ja ja ja ja ja ja zh ja ja ja ko ja ja ja zh ja hu zh ja ja zh ja ja ja zh ja ja ja ja ja ja ja ja ja ja ja ceb ja ja zh zh zh hu ja ja zh ja ja ja zh ja ja ja zh ja ja ja ja ja zh zh ja ja zh ja zh zh ja zh ja ja zh ja hu ja zh ja hu zh ja ja ja it ja ja zh ja zh zh hu ja zh ja it ja hu zh zh zh zh zh ja zh ja zh ja zh ja zh ja zh zh ja ja ja zh ja ja hu ja ja ja zh zh ja ja hu zh ja ko zh zh zh zh zh ja it zh ja ja ja ja zh zh zh ja ja ja ja ja ja ja zh zh ja pt it vi hu ja ja ja ja it ja ja ja it ja ja ja zh ja hu ja zh zh hu ja zh it en

text:
投稿者 KURITA Jute 時刻: 16:55 0コメント
落ち着く音楽はないかな? - I Will See You Again
イライラしているときは、いくら昔好きだったレーベルだとは言え、さすがに Tresor を聞くことはあまりない。アコースティックギター で何か落ち着く感じのものはないかなと、Last.fm を BGM に流していたら、いい音楽に出会えた。 ^^
Andy McKee – I Will See You Again – @ Last.fm
YouTube - I will see you again - Andy Mckee
Andy McKee – Drifting –  @ Last.fm
ART OF MOTION ANDY McKEE
Andy McKee – The friend I never met – @ Last.fm
こちらは、「I Will See You Again」と同じく「DREAMCATCHER 」に。
Andy McKee ラジオ – Last.fm
投稿者 KURITA Jute 時刻: 0:19 0コメント
データコンストラクタによるパターンマッチというと、例えば、以前に Person 型を定義して、Show クラスのインスタンスにしたときに実装した show メソッドの引数での利用が挙げられる。(cf. Haskell で代数的データ型の値を print で出力には)
data Person = Person {name :: String, age :: Int} instance Show Person where show (Person name age) = "Person: " ++ name ++ ", " ++ show age main = print (Person "Tarou" 20)
リストにも当然ながらデータコンストラクタが存在する。(cf. ふつうのHaskellプログラミング , p.173) 普段よく見る「リストによるパターンマッチ」、
「エラトステネスのふるい」でも、リストの先頭要素 p と、先頭以外のリスト ps にパターンマッチさせている。
こういうのがリストのパターンマッチだと最初頭に入れてしまったので、それ以外の方法が頭の隅から追いやられてしまっていた。 (@_@;) それに気づかされたのが、Haskell (programming language) - Wikipedia, the free encyclopedia に書かれていた「逆ポーランド記法」を計算するための関数の例。
The Haskell 98 Report: 定義ずみの型とクラス によると、
data  [a]  =  [] | a : [a]  deriving (Eq, Ord)
リストは、二つの構築子をもつ代数的データ型であるが、3.7 節で述べたように特別な構文をもつ。最初 の構築子は空リストで、`[]' (「ニル」)と書く。二つ目の構築子 は、`:' (「コンス」)と書く。
cons - Wikipedia, the free encyclopedia
上記の引用にあるように : , [] は特別な構文。他のデータコンストラクタとは違う形をしている。そのため、関数における引数のパターンマッチにおいて、「これはデータコンストラクタによるパターンマッチなんだ。」という意識が薄れてしまっていた。
fold についても復習。(cf. Haskell の foldl , foldr)
calc = "1 2 + 3 *" calc = foldl f [] ["1","2","+","3","*"]
関数 f は先ほど foldl の型で見たように、二つの引数を取るので、最初は…
これをファイルに保存して、GHCi 上で :l によりロード。:t f で関数 f の型を見ると、
投稿者 KURITA Jute 時刻: 14:40 0コメント
素朴にエラトステネスのふるい (3) – Python の実装を Haskell へ
前回、再帰的な表現を関数からオブジェクトのメソッドに移すことにより、再帰関数のイメージを複数のオブジェクトの連鎖として理解しようと試みた。実際にオブジェクトが連鎖する場合の実装を Python でしてみたが、今回はこのイメージに沿うように Haskell のコードを変更してみる。
… 呼出すごとに返り値の違うメソッドが作れるのは、Java に (再) 代入があるからです。言語に (再) 代入があると、ある式を、それと等しい値で置き換えられなくなります。つまり、参照透明でなくなります。
Real World Haskell においてもその冒頭で、Why functional programming? Why Haskell? として、
In Haskell, we de-emphasise code that modifies data. Instead, we focus on functions that take immutable values as input and produce new values as output. Given the same inputs, these functions always return the same results. This is a core idea behind functional programming.
考えてみると、前者は当然ながらグローバル変数に限った話ではない。インスタンス変数然り、ローカル変数もまた然り。例えばもし、巨大なクラスがあり、そこにたくさんのインスタンス変数があって、複数のメソッドからいじられているコードを見たら、変更する気が失せる。(+_+) 加えて、テストコードが付属してないなら最悪で、そのままふたをして地中深くに埋めておきたくなってしまう。^^; ローカル変数にしても同じ。「リファクタリング」の「問合わせによる一時変数の置き換え」の対象くらいのものだったらいいけれど、複数の仕事を長々と、 for や if のネスト祭りで、一画面以上に渡り変数がボカスカとひっかき回されているメソッドを見たら、脳みそ沸騰、そして卒倒。(o_ _)o~† インスタンス変数と呼んではいるけれど、人の認識にとってグローバル変数と等価なものは本当に勘弁してほしい。
正直、自分の容量の小さい脳みそでは、成長過程にあるクラスにおいてインスタンス変数が画面から徐々に見えない位置になるに従って徐々にやばくなる。複数のメソッドからインスタンス変数に変更を加えたり、状態に応じたコードを書く段になると目が回りだし、テストコードを書きながらでないとエラー連発。ストレス爆発。昔、「リファクタリング」を読んでいなかったらと思うと、ぞっとする。(@_@;) 長いメソッドや、巨大なクラスを書いて平気な人は、きっと記憶力がいいか、もしくは頭がいいのだろうと思う。自分のように、昨日書いたコードの内容なんて忘れてしまうタイプの脳みそでは全く無理。^^; そういった意味で、もしかすると Haskell が書けるようになったら楽できるかも、という密かな期待が…。
そうえいば、Haskell をさわっていて、はじめに連想したのがリファクタリングだった。メソッド一つの意味を明確にするという動機が、結果的にあらゆるローカル変数・インスタンス変数のスコープを小さくすることに貢献し、問題の局所化と変更への耐性を上げていく。コンパクトでシンプルなものは、理解しやすいし変更しやすい。Haskell に慣れて書けるようになったら、自然とそういたったコードに落ち着くのかな (?) とか思いつつ、未だコンパクトな再帰で目を回しているので、先は長い… ^^;
と、ここで以前に「まるごと JavaScript」 の「Flash の ActionScript で関数型風プログラミング」の記事に「関数型プログラミング」の説明が書かれていたことを思い出した。それによると、
counter 変数はカウンタを表現しており、内部でカウンタの値の状態(state) とカウンタの増分 (step) を持っている。next_counter 関数は、与えられたカウンタオブジェクトの値から新しくオブジェクトを作って返す。
これを Firefox の Firebug 上で実行すると結果は、
Object state=0 step=1 Object state=1 step=1 Object state=2 step=1 Object state=3 step=1 Object state=4 step=1 Object state=5 step=1 Object state=6 step=1 Object state=7 step=1 Object state=8 step=1 Object state=9 step=1 Object state=10 step=1
これを見て更に思い出したのが、Joshua Bloch の Effective Java の「項目 13 不変性を選ぶ」という節。そこでは 複素数 (Complex) クラスにおける不変性について説明されていた。(p.62) 以下は Complex クラスにおける足し算の例。
public Complex add(Complex c) { return new Complex(re + c.re, im + c.im); }
String str = "ABC"; str.toLowerCase();
これに加えて「項目 24 必要な場合には、防御的にコピーする」(p.114) も参考に。実装例は以下を参照。コンストラクタにおいて可変オブジェクトを受け取ったら、それを元にして新しくオブジェクトを生成してフィールドに設定。また、get メソッドにおいても、同様にクライアントに渡す前に新しくオブジェクトを生成して渡している。
ふつうのHaskellプログラミング を見ると、 「9.2 代数的データ型」の「多相的な型の宣言」「再帰的な型」(p.232)、また、「フィールドの更新」(p.228) 辺り が参考になりそう。
Implementation of basic functions にはスタックの Haskell での実装例が書かれていた。
最初に、以下のような多相的な型をフィールドに持つ Stack a 型の定義がある。 (Type declaration より)
data Stack a = MakeStack [a]
push の実装は Implementation of basic functions に、
なるほど、第一引数 Stack a 型の値を `オブジェクト’ 、関数名 push を `メソッド’ と見たてれば、クラスによる実装と同じように見える。ただし、違うのは、返される値が「引数を元に作られた新しい値」であるということ。
また、pop を見ると、返される値がタプルであれば、pop で取り出した値と、pop した後のスタックを返すことができることがわかる。言われてみれば当り前だけれど、「なるほど (@_@) こうすればいいのか」と思った。(同上より)
data Sieve = Sieve { list :: [Int], -- ふるいにかける前の数値のリスト tail :: Sieve -- リストの先頭要素でふるいにかけた後、 --「このふるいから落ちた数値のリスト」を保持するふるい } | Empty deriving Show
前回の Python の実装と違うところは、「ふるいにかけるときの基準となるリストの先頭要素」を保持するフィールド head がないこと。これは右図のピンク色の数値に相当するが、「ふるいにかける前のリスト」から取得できるので、わざわざ作る必要がないことに気がついた。
データコンストラクタ Empty は、Python のコンストラクタ内において、self.tail = None と設定していることに相当するものを書きたいため。
次に、連続してふるいにかけていく動作を書いてみる。ここが Python とは異なるところ。先ほどのスタックの push の実装を真似して、「ふるいにかけたら、ふるい」が返ってくるようにする。当然ながらふるいにかける前とかけた後の中身(値)は異なる。ということで、関数の型宣言は以下のように。
sieve (Sieve xs s) =
今定義しているのは、ふるいを連続的にかけていく sieve 関数。しかし、注目するのは上二つのふるいのみでよい。なぜなら、 sieve 関数が一回に適用できるふるいは一つであり、適用された引数によって「ふるいにかける様子」を表現しなくてはならないため。
sieve $ Sieve (sieveByHead xs) s
sieve (Sieve [] _) = Empty
headSieve (Sieve (x:_) s) = x : (headSieve s)
sieveByHead 関数は、n = 1, –1 で無限ループになってしまったので、パターンマッチを増やした。
投稿者 KURITA Jute 時刻: 10:20 0コメント
Haskell の fmap
A Gentle Introduction to Haskell: Classes によると、
fmap 関数は以前につかった map 関数を一般化したものです。
map と言えば、リストの各要素に対して関数を適用するための関数。例えば、リストの要素を 2 倍したいときは、
print $ map (* 2) $ [1,2,3,4,5] -- [2,4,6,8,10]
map がリストのためにあるのに対し、fmap は自分で作成した代数的データ型に対して、map のように各要素に関数を適用するためにあるようだ。今回、以前に定義したシンプルな Iremono 型 を少し変更し、これに適用できるようにしてみる。
Iremono a 型の定義を以下のように変更。
data Iremono a = Iremono [a] deriving (Show,Eq)
前回は Iremono 型のフィールドが 型変数 a だったけれど、今回はリスト [a] にした。
まずは、fmap を使わずに「入れ物」(Iremono a) の中の中身の要素を 2 倍にする関数を定義してみた。
と、その前に念のため確認。例えば次のように Iremono a 型に map 関数を適用してみても、
print $ map (*2) $ Iremono [1,2,3,4,5]
当然ながら怒られる。 (+_+)
Couldn't match expected type `[a]' against inferred type `Iremono t' In the second argument of `($)', namely `Iremono [1, 2, 3, 4, ....]' In the second argument of `($)', namely `map ((*2)) $ Iremono [1, 2, 3, 4, ....]' In the expression: print $ map ((*2)) $ Iremono [1, 2, 3, 4, ....]
入れ物の中の要素を 2倍にする
Iremono の要素を 2 倍にする doubleIremono 関数を定義。
doubleIremono :: Num a => Iremono a -> Iremono a doubleIremono (Iremono xs) = Iremono (map (*2) xs)
doubleIremono 関数を使ってみる。
print $ doubleIremono $ Iremono [1,2,3,4,5] -- Iremono [2,4,6,8,10]
入れ物の中身の要素に関数を適用
doubleIremono 関数は「要素を 2 倍する」しかできないので、もう少し汎用的にしたい。そこで、関数を渡したら「入れ物」の中身に関数を適用する mapIremono 関数を定義。
mapIremono :: (a -> b) -> Iremono a -> Iremono b mapIremono f (Iremono xs) = Iremono (map f xs)
これを使ってみると、例えば、
print $ mapIremono (* 2) $ Iremono [1,2,3,4,5] print $ mapIremono (\x -> if x < 3 then "hoge" else "piyo") $ Iremono [1,2,3,4,5]
Iremono [2,4,6,8,10] Iremono ["hoge","hoge","piyo","piyo","piyo"]
A Gentle Introduction to Haskell の例を見る
最初に、Functor クラスの fmap 宣言を確認しておく。
fmap は、Functor クラスのメソッド。
class Functor f where fmap :: (a -> b) -> f a -> f b
A Gentle Introduction to Haskell: Classes では Tree a 型を Functor のインスタンスにする例が書かれている。Tree a 型は、
data Tree a    = Leaf a | Branch (Tree a) (Tree a)
(A Gentle Introduction to Haskell: Modules より)
これを以下のように Functor クラスのインスタンスにしている。
instance Functor Tree where
fmap f (Leaf x)       = Leaf   (f x)
fmap f (Branch t1 t2) = Branch (fmap f t1) (fmap f t2)
実装を見ると、各 Tree の要素に fmap 関数の第一引数である `f’ を適用しているのがわかる。
ここでいつも頭が混乱するのでゆっくり考える。(+_+)  上記のように型コンストラクタ Tree は Functor クラスのインスタンスであると宣言した。 Functor Tree の fmap の実装で返しているは Tree a 型。Functor クラスの定義の `f’ を Tree で置き換えることができるとすると、 次のよう想像することができる。
class Functor Tree where fmap :: (a -> b) -> Tree a -> Tree b
この fmap の型が Tree  a 型における実際の fmap の宣言ということ。だから、Tree  a 型の fmap が返している型が Tree b 型で OK と。
あ~ (@_@;) なかなか慣れない…。
Iremono a 型にも fmap
上記を真似して、fmap が適用されたとき、「入れ物」の中身である各要素に関数が適用されるように実装してみる。
instance Functor Iremono where fmap f (Iremono xs) = Iremono (map f xs)
Tree のときと同じように Functor クラスの定義の f を Iremono で置き換えて考えてみると、
class Functor Iremono where fmap :: (a -> b) -> Iremono a -> Iremono b
上記で定義した fmap 関数の定義は、この宣言に沿うように定義されていることがわかる。
さて、実際に fmap を使ってみると、
print $ fmap (*2) $ Iremono [1,2,3,4,5] -- Iremono [2,4,6,8,10]
ところで、class Functor f where によると、
The Functor class is used for types that can be mapped over. Instances of Functor should satisfy the following laws:
fmap id == id fmap (f . g) == fmap f . fmap g
上記を満たすように実装する必要があるらしい。第3回 mapからモナドを理解する:ITpro によると、
idは恒等関数(identity functionもしくはidentity)の略であり,入力したデータをそのまま返す関数です。(.)演算子は関数合成(functional composition)です。(.)の定義は,(f . g) x = f (g x)です。
確かに、型クラスによる宣言だけでは、関数がどのように振舞えばいいのかを規定することはできない。定義の内容はプログラマの手にゆだねられている。
「自分で定義した代数的データ型のフィールドの各要素に関数を適用していく」ということが、上記を保証することでなぜ実現できるのかという一番肝心なところがわからないのだけれど ^^; 、とりあえず一例だけでも試してみることに。  QQQ
main = do print $ test1 # True print $ test2 # True test1 = (fmap id $ Iremono [1,2,3,4,5]) == (id $ Iremono [1,2,3,4,5]) where id = (\x -> x) test2 = (fmap (f . g) $ Iremono [1,2,3,4,5]) == (fmap f . fmap g $ Iremono [1,2,3,4,5]) where f = (* 2) g = (+ 100)
投稿者 KURITA Jute 時刻: 14:53 0コメント
ラベル: Haskell
2008年10月26日日曜日
Haskell で文字列の分割と結合
lines :: String -> [String]
words :: String -> [String]
特定の文字列で区切るなら正規表現を使って、( Text.Regex )
splitRegex :: Regex -> String -> [String]
import Text.Regex main = do print $ lines "hoge\npiyo\nfuga" print $ words "hoge piyo fuga" print $ splitRegex (mkRegex ",") "hoge,piyo,fuga" print $ splitRegex (mkRegex "--") "hoge--piyo--fuga"
lines, words の接頭辞として `un’ をつける。
文字列でくっつけたい場合は、intercalate 。(cf. Haskell でリストの要素を join - List.Data の intersperse, intercalate)
import Data.List css = ["hoge","piyo","fuga"] main = do putStrLn $ unlines css putStrLn $ unwords css putStrLn $ intercalate "—" css
hoge piyo fuga hoge piyo fuga hoge--piyo--fuga
単に文字列のリストをくっつけて、文字列にしたいだけなら concat 。文字列のリストは、文字のリストのリストであるため。
日本語を扱うときは、「Haskell で日本語表示 - utf8-string を利用して」 を参照。
Haskell で Text.Regex の splitRegex 関数を利用しようとするとリンクエラー
投稿者 KURITA Jute 時刻: 23:29 0コメント
ラベル: Haskell , 正規表現 , 文字列
Meadow (Emacs) で矩形領域をカット & ペースト
C-x r k → C-x r y
微妙に使わないものは何度でも忘れてしまう。 (+_+) どうやって忘れないようにしようか。
このカット&ペーストのパターンはさすがに忘れないのでこれを基本形と考え、
は、コマンド実行 command e`x’ecute 。そして矩形の`r’ectangle 。
… いつまで覚えていることができるかな。
最近やっと M-x goto-line と入力しなくても、M-g g で特定の行へジャンプする入力を手が覚えてくれた。 ^^; これは Go! Go! と覚えた。
Meadow/Emacs memo: コピー,切り取り,貼り付け関連
投稿者 KURITA Jute 時刻: 22:29 0コメント
ラベル: Emacs , Meadow
素朴にエラトステネスのふるい (2) - オブジェクト指向を手がかりに再帰表現を考える
「素朴にエラトステネスのふるい (1)」の続き。
コードを再掲。Haskell では、
sieve (p:ps) = p : sieve [n|n <- ps, n ‘mod‘ p /= 0]
def sieve(L): if not L: return [] else: return [L[0]] + sieve([x for x in L[1:] if x % L[0] != 0])
やはり、今日見ても再帰的な表現はどこか理解しきれないと感じる。(+_+) これ以上考えてもらちが開かないので、このままの形で考えるのは諦めた。
ところで、上記のコードは直接素数を生成するわけではない。`ふるい’ はあくまでも素数を生成するためのツール。「2 からはじまる自然数のリスト」を与えたときに素数のリストが生成される。
main = do print $ take 10 $ sieve [2..]
print sieve(range(2,100))
もし、「1 からはじまる自然数のリスト」を引数に与えたなら、その `ふるい’ の性質上、生成されるのは [1] 。なぜなら、最初の「リストの先頭要素で割り切れる要素をふるいにかける」というところで、1 以降の要素が脱落してしまうため。つまり、上記のコードは `ふるい’ の動作を表現しているということを忘れてはダメ。素数が生成されるのはその結果に過ぎない。
よくわからないときは絵を描くことにしているので、素数を生成するときの `ふるい’ をイメージしてみた …
「このふるいは、近所の量販店で売られているふるいとは違う。小麦粉を `ふるう’ のではなく、「数値のリスト」をふるう。動作も一風変わっていて、数値のリストをザザーっと流し込むと、最初にふるいに落ちた数値がふるいにセットされ、その数値で『割り切れない数値』がふるいを通り抜け、割り切れた数値がふるいに残される。
ある数値のリストをこのふるいにかけたとする。直後、ふるわれた数値が地面に落ちる寸前、同じ種類のふるいを別にもう一つ用意し、落ちていく数値を受けとめる。同種のふるいなので動作も同じ。また落ちてきた先頭の要素がふるいにセットされ、残りの要素に対してふるいをかける基準となる。
手元にふるいが更に何個もあったので、これをどんどん繰り返していたら、最後には落ちていく数値がなくなってしまった。」
この様子を示したの右図。で、このふるいを一つのオブジェクトと見たて、ふるいクラスを作成する。まずはこのふるいに対して何ができるかという視点で。
数値のリストをセットする
ここからふるいの内部はどうなっているかと想像すると、
セットされた数値のリストを持つ
セットされたリストの先頭要素を持つ
それから、右図のようにふるいをつなげて使っている様子をふるい自身に覚えてもらうことにすると、
自分がふるい落とした数値を受けとめるふるいを知っている
そして、各自ふるった後、落ちた数値を受け止めるためのふるいを自分で用意してもらうことに。
class Sieve: """ ふるい このクラスのオブジェクトが連なって働くことによって 「エラトステネスのふるい」の振る舞いをする - 使い方 1. インスタンスの生成 2. 値の設定 3. ふるいにかける """ def __init__(self): self.L = [] # ふるいにかける前の数値のリスト self.head = None # ふるいにかける数値のリストの先頭 (ふるいの基準) self.tail = None # Sieve : ふるいにかけた後の数値のリストを保持 def set(self,L): """ ふるいにかける数値のリストを設定 """ self.L = L self.head = L[0] return self def sieve(self): """ ふるいにかける """ self._sieveByHead() if self.tail: self.tail.sieve() def _sieveByHead(self): """ 設定されたリストの要素をその先頭要素で割り、 割り切れなかったものをふるいから落とし、新たにふるいに設定する ※ 設定されたリストの要素が二つ以上ないと tail は None のまま。 """ if len(self.L) > 1: self.tail = Sieve() sieved = [x for x in self.L if x % self.head != 0] if sieved: self.tail.set(sieved) def __str__(self): """ ふるいの基準として使われた数値を出力 """ if not self.head: return "" return str(self.head) + ", " + str(self.tail) if self.tail \ else str(self.head) s = Sieve().set(range(2,100)) s.sieve() print s
最初に示したコードと比べるとかなり長くなってしまったが、こちらはイメージしやすい。 ^^ なぜかと言えば、クラス定義で意識するのはオブジェクト単位であり、オブジェクト一つで何ができるかを考えればいいため。sieve メソッドを見ると「自らふるい落とした数値のリストを受けとる`ふるい’」に対して sieve メソッドを呼出している。しかし、メソッドを見ても頭が混乱することはない。単純に `ふるい’ が `ふるい’ に対して 「sieve してくれ」と依頼しているようにしか見えないから。
結局、再帰的な関数において呼出す度に生成される文脈を、オブジェクトというイメージしやすい形に置き換えることにより理解しやすくなった気がする。オブジェクト指向で考えるときの一番基本的な戦略は、「オブジェクトと関わりのあるオブジェクトに対して、どのようにコラボレーションするか?」を問うこと。この方針が `考える範囲を限る’ ということに対して、`オブジェクト‘ という範囲の枠を提供してくれる。
再帰的な関数との違いがもう一つ。それは、やることを分割しているということ。上記のクラスでの実装は、「ふるいにかける動作、ふるう動作、ふるいを連ねる動作、その結果を表示するための動作」を別々にした。そして、それらの動作を `一つのふるい’ というイメージと関連付けて考えた。再帰的な関数では、これを一行で表現する。そうすると、自分の脳みそでは、「一体誰が何をしてその結果どうなったの?」というところで、えっ?(@_@;)? となってしまう。
オブジェクト指向をアナロジーとして用いる
逆に言えば、再帰的な関数を、アナロジーとして上記のような表現とほぼ等価であると見なすことができれば、すんなりと理解できるはず…。明らかな動作の違いは、クラスによる実装では計算が終った時点で計算過程の一部の履歴が残っているのに対して、再帰関数では消えているという点くらいだし。… ということは、えーと、再帰関数である sieve を見たら、次のように見たてればいいということか。
「sieve というメソッドを持つオブジェクト」があると想定。(ふるいに相当)
sieve を再帰的に呼出すところは、新しく同種のオブジェクトを生成すると見なす。
ただし、そのオブジェクトは最終的に計算の過程を保持することなく、計算の終了とともに消滅して結果 (関数の返り値) のみを残す。
最後に、残された結果を連結。
つまり、関数で呼出された文脈をオブジェクトと見なし、そこで使われているローカル変数をインスタンス変数に見たてるということ。以前より少し理解が進んだような気になれた。 ^^
素朴にエラトステネスのふるい (3) – Python の実装を Haskell へ
投稿者 KURITA Jute 時刻: 16:23 0コメント
ラベル: Haskell , Python , 再帰
2008年10月25日土曜日
Haskell で簡単なテキスト処理 (2)
「Haskell で簡単なテキスト処理 - データの抽出」の続き。もう一度、前回と同じ処理を書いてみる。
対象のデータは、「Python で簡単なテキスト処理 (2) - データの抽出」で使った以下の 気象データ 。ここから、気圧 (1列目) と気温 (6列目) のデータのみを抽出したい。
998.7 1003.1 -- -- -- 6.0 10.9 1.8 36 16 2.6 4.8 北西 9.4 北西 6.9 -- -- 晴後一時曇 快晴
1007.2 1011.7 -- -- -- 6.2 11.2 1.1 35 19 3.1 6.6 北西 13.3 北西 9.1 -- -- 快晴 快晴
1011.6 1016.1 -- -- -- 5.9 10.4 1.5 45 29 1.8 3.6 北北西 6.4 南南東 9.1 -- -- 晴 快晴
1014.6 1019.1 -- -- -- 7.0 12.1 2.7 43 24 2.5 5.0 北西 9.4 北北西 9.0 -- -- 快晴 晴後曇
1014.0 1018.6 0.0 0.0 0.0 6.0 8.7 4.0 53 39 2.0 3.8 北西 6.1 西北西 3.7 --
※データファイルは UTF-8 で保存。
まずは、なるべくシンプルに書くにはどうしたらいいかという視点で考えると、
import qualified System.IO.UTF8 as U import Text.Regex.Posix main = U.getContents >>= U.putStr . unlines . extract . lines extract = map col . filter (\x -> not $ x =~ "^[[:digit:]]{1,2}$|^$") col line = let ds = words line in ds !! 0 ++ "\t" ++ ds !! 5
さすがに Ruby のようなシンプル書き方はできないかなぁ…。
追記(2008.11.7) : filter の第1引数を関数合成に変更するなら、
extract = map col . filter (not . (=~ "^[[:digit:]]{1,2}$|^$"))
前回と違うところは、main において do 式を使わずに (>>=) で置き換えたこと。 (>>=) は「左の箱の中身を、右の箱の中に流し込むための装置」と理解している。(これが正しいのかよくわからないのだけれど…。)  do 式では渡された中身を変数に束縛していたが、(>>=) を使うと省略できる。
※ モナドについてはまだよくわからない。(+_+) ただし、Meet the Monads の以下の部分を読んで、イメージとして何か「入れ物」と「中身」の扱いについてのメタ的な記述だというくらいの認識にはなった。 ^^;
多相型は多くの異る型の値を保持できるコンテナのようなものです。… Haskell ではこのコンテナの型も多相にすることができます。それゆえ、「m a」と書いて、ある型の値を保持するある型のコンテナを表現することができます。
Meet the Monads によると (>>=) の型は、
(>>=) :: m a -> (a -> m b) -> m b
関数の合成は、(cf. Haskell の関数合成)
(.) :: (b –> c) –> (a –> b) –> (a –>c)
getContens の型は、Prelude によると、
getContents :: IO String
これは、`IO’ という入れ物に String を入れて運び、 (>>=) で右側に中身だけ「よっこらせ」と降ろすということ。(多分)
lines は String が引数で、`IO’ の中身はここに投入される。
lines :: String -> [String]
そして、必要な処理がされると、putStr によってまた`IO’ に入れられて出力。これが main 関数の返り値になる。
putStr :: String -> IO ()
ところで、(.) により putStr から lines までが、Stirng –> IO() という型の一つの関数に合成される。
IO モナド によると、
Haskell では、トップレベルの main 関数の型は IO () でなければなりません。
(>>=) の関数の型を今回の場合に当てはめると、
IO String –> (String –> IO ()) –> IO ()
これで String が投入されると IO () が返され、main 関数の型に沿うようになる。
モナドついてわからないけれど、外見は上記のような理解でいいのだろうか… ^^;
Haskell で正規表現 (2) =~ , Python・Ruby と比較しながら を参照。
数字を表わすには `\d’ ではなく、Rx - Posix Basic Regular Expressions によると、
[[:digit:]]
正規表現に一致しないものを抽出したい場合、not 関数 で Bool 値を反転させる。
not :: Bool -> Bool
map と filter を合成している関数をリスト内包表記に置き換えると、
extract css = [col cs| cs <- [cs| cs <- css, not $ cs =~ "^[[:digit:]]{1,2}$|^$"]]
しかし、あまり見やすくならないので map, filter の合成を使うことに。
map f . filter match
一つのパターンとして覚えておくといいかも。
main 関数において、行を抽出した後に、列を抽出するという意図を明確にしたいなら、
import qualified System.IO.UTF8 as U import Text.Regex.Posix main = U.getContents >>= U.putStr . col . row row = filter (\x -> not $ x =~ "^[[:digit:]]{1,2}$|^$") . lines col = unlines . map col' where col' line = let ds = words line in ds !! 0 ++ "\t" ++ ds !! 5
line – unlines の組み合わせを別々の関数の入口と出口に配置し、filter ・ map をそれぞれ行・列の抽出処理に対応させるようにしてみた。例1.と比べて、どちらが理解しやすく書きやすいだろう?
filter に適用する無名関数が長いと感じたら、filter match として、match 関数を作成。
match cs = not $ cs =~ "^[[:digit:]]{1,2}$|^$"
なるべくシンプルにしたいと思って、列の抽出をまとめていったら、逆に長くなってしまった。(+_+) 抽出する列数が少なければあまり意味がなさそう。
import qualified System.IO.UTF8 as U import Text.Regex.Posix import Data.List main = U.getContents >>= U.putStr . unlines . row . lines row = map col . filter match match cs = not $ cs =~ "^[[:digit:]]{1,2}$|^$" col cs = intercalate "\t" $ col' [0,5] cs col' [] _ = [""] col' (x:xs) cs = (col'' x) : (col' xs cs) where col'' i = (words cs) !! i
(cf. Haskell でリストの要素を join - List.Data の intersperse, intercalate)
データを「表」とみなし、表は「列のリスト」からなり、列は「文字列のリスト」からなると考えると、
import qualified System.IO.UTF8 as U import Data.List data Table = Table [Row] instance Show Table where show (Table xs) = concatMap show xs data Row = Row [String] instance Show Row where show (Row xs) = intercalate "\t" xs ++ "\n" main = U.getContents >>= U.print . filterCol . filterRow . readTable filterRow :: Table -> Table filterRow (Table rows) = Table $ filter match rows where match :: Row -> Bool match (Row cells) = if length cells > 1 then True else False filterCol :: Table -> Table filterCol (Table rows) = Table $ map (col [0,5]) rows where col :: [Int] -> Row -> Row col is (Row cells) = Row $ map (cells !!) is readTable :: String -> Table readTable css = Table $ map readRow $ lines css readRow :: String -> Row readRow cs = Row $ words cs
データを readTable , readRow 関数によって Table 型の値に一度変換し、filterRow, filterCol によって必要な部分を抽出するようにした。そのため、ここでは正規表現を利用していない。
各関数はシンプルになったけれど、これはちょっと長すぎる気が。うーん… (+_+)
それにしても、こういう文字列から値の変換は、8.3 Read クラスと Show クラス のように Read を使うのかな?
実際に関数を定義してみて実感したことがあった。それは、パターンマッチの書き方、つまり、フィールドの値を変数に束縛する仕方が、定義でどのように値を使いたいかを暗示しているということ。例えば、上記の filterRow 関数において (Row cells) としているところを (Row (x:xs)) と束縛していたなら、パターンマッチを見ただけで定義において再帰的に処理がされているのでは (?) と予想できる。普通のリスト処理のときはそんなの当り前と思っていたけれど、フィールドにリストがある型に対してはそういう見方になってなかった。 ^^; 多分、読むだけでアップアップしてた。
Haskell で簡単なテキスト処理 (3) – break 関数を使って再帰処理
投稿者 KURITA Jute 時刻: 21:35 0コメント
ラベル: Haskell
2008年10月24日金曜日
Haskell で正規表現 (2) =~ , Python・Ruby と比較しながら
以前試したように Haskell において正規表現を使いたい場合は、Text.Regex モジュールを利用する。(cf. Haskell で正規表現)
「正規表現型の値」を生成 : mkRegex
(1) を利用して一致する部分があるか確かめる : matchRegex
import Text.Regex main = do print $ matchRegex (mkRegex "(piyo)") "123hogepiyofuga" print $ matchRegexAll (mkRegex "(piyo)") "123hogepiyofuga"
Just ["piyo"] Just ("123hoge","piyo","fuga",["piyo"])
ただし、matchRegex において Just で包んで返される値は、 mkRegex の正規表現で subexpression として指定 したもの。
Python でも同様の手順を踏む。
match または search (cf. 4.2.2 マッチング vs 検索)
import re print re.compile("piyo").match("123hogepiyofuga") print re.compile("piyo").search("123hogepiyofuga")
search と match の違い
4.2.3 モジュール コンテンツ によると、
search(pattern, string[, flags])
string全体を走査して、…
match(pattern, string[, flags])
もし string の先頭で0 個以上の文字が正規表現 pattern と マッチすれば、…
Haskell の matchRegex は search に相当するということかな。
上記は正規表現を使い回さないのであれば、compile せずに、
print re.match("piyo", "123hogepiyofuga") print re.search("piyo","123hogepiyofuga")
matchRegexAll のように
Haskell の matchRegexAll と同じものを取得するには、4.2.5 MatchObject オブジェクト を使い、
str = "123hogepiyofuga" m = re.search("(piyo)",str) print str[:m.start()], m.group(1), str[m.end():], m.groups()
123hoge piyo fuga ('piyo',)
Ruby で正規表現と言えばすぐに /正規表現/=~ “文字列” を思い出す。(cf. Regexp - Rubyリファレンスマニュアル) そういう書き方ができるから、テキスト処理をするとき Ruby は扱いやすいなぁ~と思った。組み込み変数 は忘れてしまうけれど。 ^^;
p /(piyo)/ =~ "123hogepiyofuga" p $`, $1, $', $~.to_a
7 "123hoge" "piyo" "fuga" ["piyo", "piyo"]
せっかくなので、上記の組み込み変数だけでも覚えておこう。
Python でも =~ が使えるといいのに…。 (+_+)
Haskell でも =~
Text.Regex.Posix.Wrap
前回、A Haskell regular expression tutorial を読むのを見逃してた。(via Cookbook - HaskellWiki) Haskell でも Ruby と同じように =~ が使えるようだ。
定義されている場所は、Text.Regex の一つ下の階層に Text.Regex.Posix があり、そのまた下の Text.Regex.Posix.Wrap。どういうモジュールかと思って見てみると、
WrapPosix.hsc exports a wrapped version of the ffi imports.
FFIとは - はてなキーワード
ある言語から他言語で作成したライブラリを呼び出すインターフェイスで、ラッパーを作らずに直接呼び出す事が特徴である。
…と言われても、何に対してどうなのか具体的によくわからなかった。 ^^;
それはさておき、 =~ を見ると、
(=~) :: (RegexMaker Regex CompOption ExecOption source, RegexContext Regex source1 target) => source1 -> source -> target
うわっ!(@_@;) この型クラスの制約はどうやって読めばいいのだろうか? QQQ
A Haskell regular expression tutorial によると、とりあえずはシンプルに考えておけと。
this function is polymorphic in both its arguments and its return type; … Here’s a simplified type signature, to give you the idea.
(=~) :: string -> pattern -> result
(I’ve left out the constraints on these type variables. …
なるほど。しかし、引数だけではなく、返り値の型まで多相とは…?
とりあえず、上記にならって使い方を試してみる。
import Text.Regex import Text.Regex.Posix main = do print $ ("123hogepiyofuga" =~ "(piyo)" :: Bool) # True
最後の :: Bool と型を指定するのがポイント。
最初にマッチした文字列を返すには、
print $ ("123hogepiyofuga" =~ "(piyo)" :: String) # "piyo"
マッチした全ての文字列をリストにして返すには、
print $ ("123hogepiyofuga" =~ "(piyo)" :: [String]) # ["piyo"]
マッチした部分よりも前、マッチした文字列、マッチした文字列の後ろを返したい場合は、
print $ ("123hogepiyofuga" =~ "(piyo)" :: (String,String,String)) # ("123hoge","piyo","fuga")
上記に加えて、先ほどのように部分式にマッチした文字列をリストにしたものも加えたい場合は、
print $ ("123hogepiyofuga" =~ "(piyo)" :: (String,String,String,[String])) # ("123hoge","piyo","fuga",["piyo"])
マッチした文字列の位置とその長さを得たい場合は、Text.Regex.Base をインポートしておいた上で、
print $ ("123hogepiyofuga" =~ "(piyo)" :: (MatchOffset,MatchLength)) # (7,4)
投稿者 KURITA Jute 時刻: 18:07 0コメント
ラベル: Haskell , Python , Ruby , 正規表現
2008年10月23日木曜日
素朴にエラトステネスのふるい (1)
Haskell プログラミング ~ 純粋関数型言語への誘い~ を読んでいたら、「エラトステネスのふるい」 (p15) というのがあった。
sieve (p:ps) = p : sieve [n|n <- ps, n ‘mod‘ p /= 0]
Python で真似するなら、
def sieve(L): if not L: return [] else: return [L[0]] + sieve([x for x in L[1:] if x % L[0] != 0])
(ただし、L は有限のリスト)
エラトステネスの篩 – Wikipedia によると、
素数判定法の一種で、指定された整数以下の全ての素数を発見するための単純なアルゴリズムである。
え~ (@_@;) 、こんなシンプルな表現で素数が得られるとは…。てゆうか「素数」なんて言葉何年ぶりに聞いただろうか。 ^^;
1とその数自身以外に正の約数がない(つまり1とその数以外のどんな自然数によっても割り切れない)、1 より大きな自然数のこと。
(素数 – Wikipedia より)
上記 sieve 関数は、定義の中で更に sieve 関数を適用している。苦手な再帰的な表現だ。うーむ。。。 (@_@;)
素数のリストが欲しいときは、2 以上の自然数のリストに関数を適用。これにより素数の無限リストが得られる。
primes = sieve [2..] (同上より)
Python であれば、range(2,100) などのような有限のリストを sieve 関数に渡す。
どのように動作するか具体的な例で考えてみる。例えば、「2 ~ 11 の自然数のリスト」に sieve 関数を適用した場合は、
sieve [2..11] = 2 : sieve [n|n <- [3..11], n `mod` 2 /= 0]
あ~  (+_+) 、再帰はいきなり見ると目が回るので部分ごとに。
まずは、リスト内包表記から。
[n|n <- [3..11], n `mod` 2 /= 0]
sieve 関数に適用したのは [2..11] のリスト。だから、ここでは「seive に適用したリストの先頭以外の要素」の中で「seive に適用したリストの先頭である 2」 で割り切れない要素をリストにしている。これが `ふるい’ にかける様子の一部を表現。
その後 `ふるい’ にかけたリストに対して更に sieve 関数を適用。ここが再帰的に関数を適用しているところで、目が回る原因。(@_@;)
sieve [n|n <- [3..11], n `mod` 2 /= 0]
「ふるいにかける方法は、ふるいにかけたものを、更にふるいにかけること」
… と日本語にしたところで、再帰のイメージがしやすくなるわけではないか。 ^^;
再帰の混乱の元は、再帰的に連なる呼出しをイメージしようとすることにある気がする。 (+_+) あくまでも考えるのは、連なる呼出し全体ではなく、そのスナップショット的な表現。例えば、上記のように sieve [2..11] と適用された場合、その適用された文脈でのみ動作を考える。再帰のそのまた先まで考えない。
具体的に、sieve[2..11] を定義するのであれば、定義は適用された引数 [2..11] に対してどのような作用をするのか考えるということ。あくまでも、一つ先の再帰を手持のコマで表現する。もう一度、以下を見ると、
sieve [n|n <- [3..11], n `mod` 2 /= 0]
再帰的に適用している対象  (リスト内包表記の中の変数) は、その文脈での「関数の適用対象」を使って表現している。
定義の内容を続けて読んでいくと、次に、上記の再帰的な関数の適用によって生成されるリストと、先頭要素である `2’ をくっつけてリストを作成。ここでも同じく、 sieve の再帰的な適用の先の先は読まない。関数は「自分が欲しいものが既に得られた」と仮定し、「それを使ってどうしたいのか」という視点で考えると考えやすい。
2 : sieve [n|n <- [3..11], n `mod` 2 /= 0]
上記を言葉で表現するなら、
「ふるいにかける方法は、『ふるいにかけるリストの先頭』と『その先頭の要素では割り切れない要素に対して更にふるいをかけた結果』をつなげてリストにする。」
ポイントは、ふるいにかけられることによって「何」が残るのかということ。ここが自分はイメージしにくい。 (+_+) 関数が何を返し、それに対してどうしたいのか。再帰的な定義だと急に動作を想像しにくくなる気がする。
これを考えるには、関数の定義で再帰的に考えなくても明らかな部分に注目。上記の例ではリストの先頭要素である `2’ が手がかりとなる。
ところで、seive 関数の全体を眺めると、次のように再帰的に関数を適用している。
sieve リスト = リストの先頭要素 : sieve リストの先頭要素以外に対するリスト内包表記
こうやってみると全体の形が「n からはじまる数の無限リストを得る」再帰と類似しているのがわかる。
ints :: Int -> [Int] ints n = n : ints (n+1)
ints 関数の実際の動作を考えると、例えば ints 1 なら、
1 : ints(2) 1 : 2 : ints(3) 1 : 2 : 3 : ints(4) 1 : 2 : 3 : 4 : ints(5)
再帰的に ints が適用されるごとに先頭要素がひねりだされ、前の要素にくっついていくという感じがする。適用されるごとに ints がリストを生長させているようにも見える。
sieve 関数も同様に見たてることができる。 sieve により適用されたリストの先頭がひねりだされ、リストが生長していく。再帰的に sieve 関数に適用されるリストによって、最終的に生成されるリストの内容が決定される。つまり、sieve に適用するリスト内包表記による操作がリストの要素を構成する決め手。このとき、最初にひねりだされるのが、リストの先頭要素である自明な `2’ 。
しかし、やはり実際に関数が定義と置き換えられていく様子を追ってみないと納得できない。 ^^;
2 : sieve [n|n <- [3..11], n `mod` 2 /= 0] 2 : sieve [3,5,7,9,11] 2 : 3 : sieve [n|n <- [5,7,9,11], n `mod` 3 /= 0] 2 : 3 : sieve [5,7,11] 2 : 3 : 5 : sieve [n|n <- [7,11], n `mod` 5 /= 0] 2 : 3 : 5 : sieve [7,11] 2 : 3 : 5 : 7 : sieve [n|n <- [11], n `mod` 7 /= 0] 2 : 3 : 5 : 7 : sieve [11] 2 : 3 : 5 : 7 : 11 : sieve [n|n <- [], n `mod` 11 /= 0] 2 : 3 : 5 : 7 : 11 : sieve [] -- ここで例外が発生
先ほど ints 関数を見たので、sieve 関数がリストの要素をゾロゾロと生み出しているように見える。 ^^;
ところで、上記では有限のリストに適用したので、例外が発生してしまった。
Prelude> sieve ([2..11]) [2,3,5,7,11*** Exception: :1:4-54: Non-exhaustive patterns in funct ion sieve
例外が発生しないようにするには take 関数を使うか、
Prelude> take 5 $ sieve [2..] [2,3,5,7,11]
空のリストに適用したときに空のリストを返すようにしておく。
sieve [] = []
さて、最初に Python におけるエラトステネスのふるいの実装例を挙げた。そこでは再帰的な定義をしたが、アルゴリズムとしては素朴な内容となっている。「素朴」である理由は、エラトステネスの篩 – Wikipedia のアルゴリズムの説明の中で、「ステップ 4」の一部の判定を省略しているため。
探索リストの最大値が素数リストの最大値の平方よりも小さい場合、素数リストおよび探索リストに残っている数が素数となる。
この判定をする理由については、「エラトステネスの篩い」の説明、「エラトステネスの篩いの原理」の「2.どの数の倍数を取り除くか」がわかりやすい。しかし、ここではこの判定を省略し、「素朴」に倍数を消す作業をリストの終りまで続けることにした。
はじめは、ごく普通に ループを使って実装してみる。
def sieveByHead(L): """ 先頭の要素で割り切れない要素のリストを返す """ result = [] for e in L[1:]: if e % L[0] != 0 : result.append(e) return result def sieve(L): """ 渡されたリストの中の素数を返す """ result = [L[0]] while L: sieved = sieveByHead(L) if sieved: result.append(sieved[0]) L = sieved return result print sieve(range(2,100))
上記の sieveByHead 関数をリスト内包表記で置きかえるとコンパクトになる。
def sieve(L): """ 渡されたリストの中の素数を返す """ result = [L[0]] while L: sieved = [x for x in L if x % L[0] != 0] if sieved: result.append(sieved[0]) L = sieved return result
最初に挙げた再帰的な表現だと、有限のリストにしか適用することができない。 Haskell のように無限リストを扱うには、ジェネレータで書き直す必要がある。
def sieve(L): if not L: return [] else: return [L[0]] + sieve([x for x in L[1:] if x % L[0] != 0])
これをジェネレータに変更すると、
def sieve(L): head = L.next() yield head for e in sieve(x for x in L if x % head != 0): yield e
ジェネレータは next() の呼出しによって、対象となる要素が一つ先へ進む。ジェネレータを代入する変数 L をリストと見たてるなら、最初の next() の呼出しによって先頭の要素がなくなったとイメージするとわかりやすい。また、リスト内包表記を ジェネレータ式 で置き換えていることにも注意。
上記の関数を使うには、無限リストを生成する関数を定義して、その呼出し結果を sieve 関数に渡す。
def ints(n): """ n 以降の自然数の無限リスト """ while True: yield n n += 1 primes = sieve(ints(2)) for i in range(10): print primes.next()
または、有限のリストであるなら、iter 関数を適用してから呼出す。
print list(sieve(iter(range(2,100))))
ここまで来ても、再帰的な定義を見ると、やはりどこかイメージしきれないという感じがする。 ^^; 答えが得られた後もスッキリとしない。なぜだろう。 (+_+) 単に慣れていないのか、そもそも根本的にどこか理解の仕方が違うのだろうか? わかっている人にとってみれば、「何を当り前のことを…」と思うのだろうけれど、その「当り前の考え方」が自分には感覚的に納得しきれないのでこだわってしまう。また、ツールとして再帰を利用することができない。
パタッ(o_ _)o~†
もう一度別の角度からアプローチしていこう…。
投稿者 KURITA Jute 時刻: 22:44 0コメント
ラベル: Haskell , Python , ジェネレータ , 再帰
Python のジェネレータ (5) - 再帰とジェネレータと Composite
Python のジェネレータ (4) - 無限リスト のつづき
例えば、「リストの要素を 2 倍したい」とする。
リスト内包表記や map 関数を使うなら、以下のように書ける。
L = [1,2,3,4,5] print [x*2 for x in L] print map(lambda e: e*2, L)
単純に、for ループでリストを走査しながら、要素を2 倍するなら、
def double(L): result = [] for e in L: result.append(e*2) return result print double(L)
これをジェネレータで置き換える。
def gDouble(L): for e in L: yield e * 2 for e in gDouble(L): print e
def rDouble(L): if not L: return [] else: return [L[0]*2] + rDouble(L[1:]) print rDouble(L)
これをジェネレータで置き換えてみる。ジェネレータは要素をいっぺんに返さず、処理した要素ごとに返すようにする。
def grDouble(L): if not L: return else: yield L[0]*2 for g in grDouble(L[1:]): yield g for e in grDouble(L): print e
ジェネレータを再帰的に呼出すには、再帰的に適用したい部分を for に投入し (next() が呼出されるため)、その要素を yield で返す。渡された引数 L の要素がなければ、何もせず return でジェネレータを終了する。
次のように書き直すこともできる。
def grDouble(L): if L: yield L[0]*2 for g in grDouble(L[1:]): yield g
4. Composite
ジェネレータを再帰的に呼出すことに、何かメリットがあるのだろうか?
ツリー状のノードの要素を走査するためにジェネレータが使われている例 を目にした。これを見ると、Iterator パターン 、Visitor パターン を連想する。
試しに、Composite パターン のオブジェクトに対して、その要素を走査する関数をジェネレータで定義してみる。
Composite パターン - Wikipedia via kwout
class Component: pass class Composite(Component): def __init__(self): self.components = [] def add(self, component): self.components.append(component) return self def __iter__(self): return iter(self.components) class Leaf(Component): def __init__(self, val): self.val = val def gComposite(composite): if isinstance(composite, Leaf): yield composite.val else: for c in composite: for g in gComposite(c): yield g c = Composite().add( Leaf(100)).add( Leaf(200)).add( Composite().add( Leaf(1000)).add( Composite().add( Leaf(10000)).add( Leaf(2000))).add( Leaf(300))) for e in gComposite(c): print e
Composite クラスの __iter__() メソッドの定義については、Python のイテレータ (3) を参照。
投稿者 KURITA Jute 時刻: 16:15 0コメント
ラベル: Python , ジェネレータ , デザインパターン , 再帰
2008年10月19日日曜日
wxPython の準備 – Python で GUI
1. 標準添付の Tkinter は使わない
Python で GUI を作成したい。
wxPython でお手軽 gui によると、
Python には Tkinter, PyQt, PyGTK, wxPython などの gui toolkit があります。 いろいろと物色した結果次のことが分かりました。
これらの toolkit のマニュアル、チュートリアルは極めて不備である。
wxPython はデモスクリプトがあるだけまだましである。
wxPython はいろいろな widget が揃っている。
wxPython は最近人気があるようである。(その結果として web resources が他の toolkit より多い。)
Python に標準で Tkinter がついている。
16. Tkを用いたグラフィカルユーザインターフェイス の 16.1.2.2 簡単なHello Worldプログラム を実行すると、シンプルなウィンドウが表示される。
ただし、Tkinter  は、動作が遅く、長い間アップデートされていない。
Introduction to wxPython
The offcial python "toolkit" is TkInter. It is slow, looks terrible on all platforms, it has not been updated for ages. … It remains a mystery, why it was not excluded years ago.
よって、Tkinter 以外のものを使う。
2. wxPython と wxWidgets の関係
wxPython 1: はじめに によると、
wxPythonとは、Pythonで GUIアプリケーションを作るためのツールキットです。…
wxPythonは wxWidgetsという一般的なツールキットが元になっていて、…
wxWidgets – Wikipedia
The Team - wxWidgets via kwout
wxWidgetsとはクロスプラットホームなウィジェット・ツールキットであり、C++で記述されているが、多くのプログラミング言語向けにバインディングが用意されており、Python、Perl、JavaScriptなどから使うことが出来る。
wxWidgets のベースは C++ で、Python から使うことができる。
wxWidgets のダウンロードページ によると、
Not using C++? Get wxWidgets from the wxPython, wxPerl, and wx.NET download sites. Other ports...
3. wxPython のダウンロードとインストール
Untitled via kwout
wxPython のダウンロードページ に、Python のバージョンと対応した wxPython が用意されている。
現在、最新の Python のバージョンは 2.6。ただし、Google App Engine を使いたいので、Python 2.5 に対応したものを利用する。 Pure Python によると、
The Python runtime environment uses Python 2.5.
wxPython Download より、Python 2.5 の win32-unicode をダウンロードしてインストール。デフォルトでは
C:\Python25\Lib\site-packages
にインストールされた。
IDE にPyScripter を使っている場合、インストール後、一度 PyScripter を起動しなおす必要がある。
4. wxPython の入門サイト
The wxPython tutorial
wxPython Index
A First Application: "Hello, World"
Style Guide for wxPython code
特に、The wxPython tutorial の Introduction to wxPython における
「wxPython」の構造
wxPython API
は、全体を把握するのにわかりやすい。ドキュメントを読むための手がかりとなる。
5. wxPython のドキュメント
wxWidgets 2.8.9: A portable C++ and Python GUI toolkit」。
この中で頻繁に見ることになりそうなのは、
Classes by category
最初は、以下から読む。
wxFrame::wxFrame
投稿者 KURITA Jute 時刻: 17:00 0コメント
ラベル: GUI , Python
Python で部分適用 - functools モジュールの partial 関数
1. Python は一部の引数を与えて関数を呼び出すことができない
Haskell では、関数に複数の引数があるとき、先に一部の引数のみ渡しておき、後から残りの引数を渡すことができる。一部の引数を与えることを「部分適用」と言う。
Python では、普通そういうことはできない。例えば、3つの引数を足し合わせる関数 addThree 関数に対して、1つの引数だけ与える。
def addThree(a,b,c): return a + b + c print addThree(1)
上記を実行すると、引数が足りないとエラーが表示される。
exceptions.TypeError: addThree() takes exactly 3 arguments (1 given)
2. functools の partial 関数で部分適用
6.6 functools モジュールの partial 関数を使うと、部分適用を利用できる。
partial(func[,*args][, **keywords])
Return a new partial object which when called will behave like func called with the positional arguments args and keyword arguments keywords.
例えば、先ほど定義した addThree 関数に対して、partial 関数を使い、引数を1つだけ与える。
import functools addTwo = functools.partial(addThree,1) print addTwo(2,3)
partial 関数により、addThree 関数の最初の引数だけ渡した関数 addTwo を作成した。その後、addTwo 関数に対して、残りの二つの引数を与えている。
以下では、部分適用をした結果から、更に部分適用した addOneFromTwo 関数を作成し、元の addThree に二つ引数を渡した関数 addOne を定義した。
addOneFromTwo = functools.partial(addTwo,2) print addOneFromTwo(3) addOne = functools.partial(addThree,1,2) print addOne(3)
部分適用により、予め抽象的な関数を定義しておき、部分適用によって具体的な関数を導くことができる。上手く使えば、関数のモジュール化 を促進できる。
キーワード引数を利用して
キーワード引数を使うと、部分適用するときの引数を特定できる。
addTwo_ = functools.partial(addThree,c=3) print addTwo_(1,2) addOne_ = functools.partial(addTwo_,a=1) print addOne_(b=2) addOneFromTwo = functools.partial(addThree,a=1,c=3) print addOneFromTwo(b=2)
3. reduce 関数に対して部分適用し、具体的な関数を導く
リストの要素を足し合わせる sum 関数は、畳み込み関数 reduce より導くことができる。
なぜ関数プログラミングは重要か によると、
sum = reduce add 0
reduce 関数に対して、部分適用することによって sum を定義している。
Python の reduce 関数の使い方は、
print reduce(lambda a,b: a+b, [1,2,3,4,5])
reduce 関数に対して部分適用を利用し、シーケンスを後で与えるようにして、sum 関数を定義してみる。
L = [1,2,3,4,5] import operator from functools import partial # 合計 mysum = partial(reduce, operator.add) print mysum(L)
(functools.partial と書くのが面倒だったので、import の仕方を変更した。)
上記の書き方から、sum 関数が reduce というメタ的な関数の特殊パターンであるという雰囲気が伝わって来る。
cf. Python で合計
Python では、(+) のように、二項演算子を渡すことができないので、3.10 operator モジュールの add を利用した。
4. 関数を合成する関数を定義
Haskell の 関数を合成する(.) 関数を、partial を使い Python  で定義してみる。
cf. Haskell の関数合成
関数を合成する関数名を `c’ とした。
cf. function composition
c = lambda f,g: partial(lambda f,g,h: f(g(h)), f, g)
def … return で定義した方が読みやすいかな。
def c(f,g): return partial(lambda f,g,h: f(g(h)), f, g)
それとも、関数をネストして定義してみる。
def c(f,g): def _(f,g,h): return f(g(h)) return partial(_,f,g)
c 関数を使ってみる。
add3 = lambda x: x+3 mul3 = lambda x: x*3 print c(add3,mul3)(10) # 33 print c(mul3,add3)(10) # 39
Python でリスト内包表記を使ってクイックソート
Python の map, filter, reduce とリスト内包表記
Haskell の Prelude 散策 (1) - リスト操作 : 要素の重ね合わせ (folds)
Haskell の部分適用 (2)
投稿者 KURITA Jute 時刻: 12:10 0コメント
ラベル: Haskell , Python , 関数型
Firefox でウェブサイトの表の内容をコピーして表計算ソフトに貼り付ける
Firefox のアドオン「Table2Clipboard」をインストール。
例えば、気象庁 | 毎日の全国データ一覧表 日別値 のデータの一部を得たいとき、Ctrl キーを押しながらドラッグして範囲を選択。
Ctrl + Shift + C でコピー。
表計算ソフトにペースト。
OpenOffice 3.0, Google スプレッドシート では、表の内容をコピーするときに Ctrl + C でも上手くペーストすることができた。ただし、Excel 2003 では必ず Ctrl + Shift + C でないとダメ。
Python で簡単なテキスト処理 (2) - データの抽出
気象庁の、前日の、一時間ごとの「気圧データ」が含まれるページを表示するためのブックマークレット
投稿者 KURITA Jute 時刻: 1:03 0コメント
ラベル: Firefox 3 , Google Spreadsheets , アドオン
2008年10月18日土曜日
Python で二進数、十進数の変換
1. 二進数から十進数へ
Python で、数値を 2 進数から十進数に変換したい。
2.1 組み込み関数 によると、
int([x[, radix]])
文字列または数値を通常の整数に変換します。…
radix 引数は変換の基数を表し、範囲 [2, 36] の整数またはゼロをとることができます。
long([x[, radix]])
文字列または数値を長整数値に変換します。…
radix 引数は int() と同じように解釈され、x が文字列の時だけ与えることができます。
int() 関数を、このような目的で使えることを知らなかった。(@_@;)
例えば、2進数を表す文字列 1010 を、十進数に変更する。
>>> print int('1010',2) 10
2. 十進数から二進数へ
十進数から2進数へ変換するには format 関数を使う。
PEP 3101: Advanced String Formatting によると、
In Python 3.0, the % operator is supplemented by a more powerful string formatting method, format(). Support for the str.format() method has been backported to Python 2.6.…
There’s also a format() built-in that will format a single value. It calls the type’s __format__() method with the provided specifier:…
'b' - Binary. Outputs the number in base 2.
Python 2.6 であれば、次のように書ける。例えば、十進数の 10 を、2進数に変換する。
>>> print format (10,'b') 1010
Binary numbers には
Welcome to General Multiprecision PYthon
を使った方法が紹介されていた。
十進法 – Wikipedia によると、
十進記数法は単に十進法と呼ばれることもあるが、これを「10 進法」と書くのは好ましくない。10 が十を意味するのは十進記数法だからであり、例えば二進記数法ならば二を意味する。漢数字にはそのような曖昧さはない。英語でも同様に base 10 より decimal が好まれる。
6.6 functools -- Higher order functions and operations on callable objects.
Python で文字列が数値に変換できるか確かめる
Python で正確な小数の計算をする
投稿者 KURITA Jute 時刻: 12:48 0コメント
ラベル: Python , 数値
2008年10月17日金曜日
Python のデコレータ式 (3) - デコレートする側とデコレートされる側に引数がある場合
Python のデコレータ式 (2) のつづき
1. デコレートされる関数に引数がある場合を考える
これまで試したデコレータ式は、デコレートされる側の関数が引数を取らなかった。
Python のデコレータ式 (1) より、
def D(f): print u"デコレータが実行された" return f # デコレータを適用したときに、関数 D が適用される。 @D def hoge(): print "hoge" hoge()
前回は `デコレートする側に引数がある’ 場合について考えた。
Python のデコレータ式 (2) より、
def D(arg): def _(f): def __(): print "*--" * arg f() print "--*" * arg return __ return _ @D(5) def hoge(): print "hoge" hoge()
今回は、デコレートされる関数に引数がある場合を考える。
2. デコレータが受け取る関数の引数を固定しないために、可変引数を使う
デコレートする関数は、デコレートされる関数の引数について予め分からない。どのような型の値が渡されるか未知であり、関数が引数をいくつとるのか知らない。
もし、デコレータの受け取る関数の引数の数が固定されていたら、デコレータは使いにくい。これに対処するには、可変引数を使う。
デコレータについて考える前に、Python の可変引数 の書き方を復習しておく。
def test(*args): for e in args: print e test(1,2,3,"hoge","piyo") def test2(**keywords): for k,v in keywords.iteritems(): print k, v test2(a=100, b=200)
Python では、引数の前にアスタリスクを付けると、可変引数となる。
*args, **keywords
3. デコレートされる関数の引数が一つの場合
最初は、「デコレートされる側の関数の引数が一つ」の場合について考える。
def D(f): def _(arg): print "*--" * 10 f(arg) print "--*" * 10 return _ @D def hoge(n): print "hoge" * n ##hoge = D(hoge) hoge(3)
*--*--*--*--*--*--*--*--*--*-- hogehogehoge --*--*--*--*--*--*--*--*—*—*
コードが実行される様子を順に考える。上記コード中のコメントアウトしてある、デコレータ式を使わない場合で考えると分かりやすい。
デコレータ関数 D に、関数 hoge を渡すと、`_ 関数’ が返される。このとき引数 f に hoge がセットされる。
hoge(3) の呼出しは、`_(3)’ となり、ネストされた関数が実行される。
追記 (2009.12.22) : 上記の手順 1 で返される `_ 関数’ は、
引数を一つ受け取る関数
として定義されている。デコレートしたときに、何か特別な機能として arg に引数が渡される仕組みがあるわけではない。
4. デコレートされる関数の引数が複数の場合
次に、デコレートされる関数の引数が、複数の場合に対応できるように変更する。
def D(f): def _(*args): print "*--" * 10 f(*args) print "--*" * 10 return _ @D def hoge(n): print "hoge" * n @D def piyo(a,b): print "piyo" * a print "piyo" * b ##hoge = D(hoge) ##piyo = D(piyo) hoge(3) piyo(3,5)
*--*--*--*--*--*--*--*--*--*-- hogehogehoge --*--*--*--*--*--*--*--*--*--* *--*--*--*--*--*--*--*--*--*-- piyopiyopiyo piyopiyopiyopiyopiyo --*--*--*--*--*--*--*--*--*--*
デコレートする関数におけるネストした関数の引数を
とすることにより、引数の数が異なる hoge(n), piyo(a,b) 関数をデコレートできるようになった。
複数の引数を受け取る関数
として定義されている。
5. デコレートされる関数の引数にキーワード引数が含まれる場合
デコレートされる関数の引数に、キーワード引数 が含まれている場合は、次のように記述する。
def D(f): def _(*args, **keywords): print "*--" * 10 f(*args, **keywords) print "--*" * 10 return _ @D def hoge(n): print "hoge" * n @D def piyo(x,y): print "piyo" * x print "piyo" * y @D def fuga(a,b,c=8,d=10): print "fuga" * a print "fuga" * b print "fuga" * c print "fuga" * d hoge(5) piyo(5,10) fuga(1,2) fuga(1,2,3) fuga(1,2,c=10) fuga(1,2,c=10,d=5)
これまでと同じように、デコレートされたときに
複数の引数とキーワード引数を受け取る関数
が返されるように定義する。
6. デコレートする関数、デコレートされる関数に引数がある場合
前回は、デコレートする関数に引数がある場合について考えた。
デコレートする関数と、デコレートされる関数に引数がある場合を定義してみる。デコレータに引数が渡されるので、ネストが一つ増えることに注意する。
def D(n): def _(f): def __(*args, **keywords): print "*--" * n f(*args, **keywords) print "--*" * n return __ return _ @D(15) def hoge(n): print "hoge" * n @D(10) def fuga(a,b,c=8,d=10): print "fuga" * a print "fuga" * b print "fuga" * c print "fuga" * d ##hoge = D(15)(hoge) hoge(10) fuga(1,2,c=5,d=7)
*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-- hogehogehogehogehogehogehogehogehogehoge --*--*--*--*--*--*--*--*--*--*--*--*--*--*--* *--*--*--*--*--*--*--*--*--*-- fuga fugafuga fugafugafugafugafuga fugafugafugafugafugafugafuga --*--*--*--*--*--*--*--*--*—*
7. デコレータを重ねて利用する
デコレートに必要な情報をデコレータの呼出しのときに渡し、
デコレータを重ねて利用する
def D(top, bottom, x, y): def _(f): def __(*args, **keywords): print top * x f(*args, **keywords) print bottom * y return __ return _ @D("-#-", "-#-", 4, 10) @D("--*", "*--", 3, 9) @D("-+-", "+-+", 2, 7) def fuga(a,b,c=8,d=10): print "fuga" * a print "fuga" * b print "fuga" * c print "fuga" * d fuga(1,2,c=3,d=4)
-#--#--#--#- --*--*--* -+--+- fuga fugafuga fugafugafuga fugafugafugafuga +-++-++-++-++-++-++-+ *--*--*--*--*--*--*--*--*-- -#--#--#--#--#--#--#—#—#—#-
これで、一つのデコレータで様々な装飾を施せるようなった。 ^^
下図に、色分けして見やすくしたコードを示す。
投稿者 KURITA Jute 時刻: 15:39 0コメント
ラベル: Python , デコレータ
Haskell でフィールドに型変数を含んだ型の print
前回の「Haskell で代数的データ型の値を print で出力」では、型のフィールドに型変数が含まれていなかった。今回はフィールドに型変数が含まれる場合について試してみる。
Iremono a 型
例えば、何でも入る「入れ物」を想定し、型変数を一つフィールドに持つ `Iremono a 型’ を定義。
data Iremono a = Iremono a
これを print で出力できるようにしたい。
instance Show Iremono
ここで、次のように Iremono を Show クラスのインスタンスにすると、
instance Show Iremono
次のように怒られる。 (+_+)
`Iremono' is not applied to enough type arguments Expected kind `*', but `Iremono' has kind `* -> *' In the instance declaration for `Show Iremono'
これは kind と言って、型を分類するための概念らしい。 (cf. Kind – HaskellWiki) 詳しくはわからないので横に置いておく。 ^^; QQQ
instance Show (Iremono a)
ところで、Show クラスのインスタンスにしたい対象は Iremono 型ではなくて Iremono a 型。( Iremono は型ではなくて、型コンストラクタ) だから次のように、
instance Show (Iremono a) where show (Iremono x) = "nakami ari" main = print $ Iremono 100
上記は入れ物の中に中身がある場合に「中身あり」と表示させるようにしただけ。
instance Show a => (Iremono a)
しかし、普通 print と言ったら、その中身を表示させたいので、
instance Show (Iremono a) where show (Iremono x) = show x
これでいいのかなと思いきや、また怒られた。 (+_+)
Could not deduce (Show a) from the context (Show (Iremono a)) arising from a use of `show' at functest.hs:4:23-28 Possible fix: add (Show a) to the context of the type signature for `show' In the expression: show x In the definition of `show': show (Iremono x) = show x In the definition for method `show'
deduce とか難しいことが書かれている (@_@;) けれど、ゆっくりとエラーの内容を読むと、show x の式が問題なことがわかる。show x の x と言ったら、「入れ物」の `中身’ のこと。これはどんな型でも入れることができるので、show を適用できるかどうかはわからない。だから、次のように `中身’ も Show クラスのインスタンスでないといけないことを示す必要がある。
instance Show a => Show (Iremono a) where show (Iremono x) = show x
data Iremono a = Iremono a instance Show a => Show (Iremono a) where show (Iremono x) = show x main = print $ Iremono 100
前回教えていただいたように deriving を使うと、instance Show … を書かなくても、
data Iremono a = Iremono a deriving Show main = print $ Iremono 100
結果は、次のように表示される。
Iremono 100
A Gentle Introduction to Haskell: Standard Classes
投稿者 KURITA Jute 時刻: 13:13 0コメント
ラベル: Haskell , 型
Firefox のスクロールが遅い – ハードウェア アクセラレータの値を変更
1. 画像がたくさんあるページで、異常に重くなる
Firefox が特定のページで重い。
画像がたくさんあるとダメなのだろうか? 例えば、
4U - 4u beauty image bookmarking
なんてスクロールさせると CPU が異常に反応して、もたつく。
しかも、不思議なことに、マウスを画像の上に持っていくと、マウスの動きが激烈に悪くなる。 (+_+)
スクロールが遅い原因として、表示の拡大縮小が原因 だったことがあった。しかし、今回の原因はこれではない。
2. background-attachment を設定しても効果なし
調べてみると、firefoxだとこのページが重いです。 - 教えて!goo に
background-attachment:scroll !important;
これをuser.jsではなく、userContent.cssに書けばいいです。
アドオンとして Stylish を入れている。上記を userContent.css に書かなくても、Removes background-attachment: fixed | userstyles.org において、「Load into Stylish」のボタンを押して簡単にインストールできる。
しかし、効果はなかった。
Bug 201307 – slow scrolling in pages with position:fixed elements
に、重くて、もたつくページの例として、
a bit of position:fixed element and a bunch of resized images (2.30 KB, text/html)
があった。開いたら、なかなかスクロールさせることができない。
3. ハードウェア アクセラレータ の値を変更する
更に調べていたら、非常に気になるスレッドが。↓ (@_@;)
AMD Game Forums - 780G HD3200 XP slow 2D / browser scrolling major performance issue
(via. How to disable Powerplay ATI cards - GameReplays.org)
自分の PC のマザーボードは、GA-MA78GM-S2H (rev.1.1) なので、まさに上記に該当する。(cf. はじめての自作 PC の検討 2)
AMD の 780G で HD3200 。かつ Windows XP でブラウザのスクロールの問題。ATI 絡みの問題であることが書かれている。
とりあえずの対策として、次のようなことが書かれていた。
- right-click on your desktop
- click "properties"
- click the "settings" tab
- click the "advanced" button
- click the "troubleshoot" tab
- move the "hardware acceleration" slider ONE point to the left, so the description says something like "Disable cursor and bitmap accelerations. Use this setting..."
早速、上記の設定を試してみた。
コントロールパネル > 画面 より、設定タブ > 詳細設定ボタン
を押す。トラブルシューティングタブ を開いて、
ハードウェア アクセラレータ
の横スクロールバーが「最大」になっていたので、これを一つ左へ移動。
「カーソルおよびビットマップのアクセラレータを無効」
となる。なるほど、それでカーソルの動きが悪くなっていたのか。
4. 結果、スムーズに動くようになった
スクロールが普通にスイスイと動くようになった。 ^^  マウスジェスチャの動きもスムーズに。
これで、Yet Another Smooth Scrolling をインストールしても問題がなくなった。
しかし、最近、カクカクとした動きに慣れていたので、滑らかなスクロールにしたら、目が回った。(@_@;)
5. グラフィックドライバの問題
追記 (2009.1.12) : ATI Catalyst 8.12 にアップデートしたら画像の表示がスムーズになった。
投稿者 KURITA Jute 時刻: 1:10 7コメント
ラベル: Firefox 3
新しい投稿 前の投稿 ホーム
登録: 投稿(Atom)
jutememo.blogspot.com
Google+ Badge
Python で変数の型 (クラス) を調べる – types モジュール
Windows で見やすくて綺麗なフォント表示 - MeiryoKe に変更し、MacType で滑らかにする
Flash Player の設定ダイアログで「許可」ボタンを押せない - Web サイトの記憶領域設定の削除
Firefox, Cyberfox が「応答なし」で固まり、頻繁にフリーズする場合
Gimp で画像を結合する - 複数の画像を並べて一枚に合成。「キャンバスをレイヤーに合わせる」
Firefox の高速ダウンローダー DownThemAll! をデフォルトのダウンローダーの動作に近づける
どんな紙でもポストイットにする糊 - 「貼ってはがせる糊」も100円ショップにあった
サクラエディタで文字コードの変更
特定のアプリケーションを実行するときに「ユーザアカウント制御」ダイアログを表示させない - Compatibility Administrator で「カスタムの互換修正プログラム」を作成する
NVIDIA のグラフィックスドライバーのインストールに失敗する原因は Comodo Firewall だった
■ すぐに忘れる脳みそのための Wiki
■ 計るだけダイエット表の作成
■ Google 検索と同時に Google ブックマーク の検索結果を表示
►  2016 (19)
►  2015 (101)
►  2014 (141)
►  10月 (13)
►  2013 (108)
►  10月 (12)
►  2012 (114)
►  2011 (111)
►  2010 (120)
►  10月 (12)
►  2009 (186)
►  12月 (16)
►  11月 (12)
►  10月 (19)
▼  2008 (505)
►  12月 (24)
►  11月 (36)
▼  10月 (48)
Firefox で特定のサイトのクッキーを受け付けないようにする
落ち着く音楽はないかな? - I Will See You Again
Haskell のリストのデータコンストラクタによるパターンマッチ
素朴にエラトステネスのふるい (3) – Python の実装を Haskell へ
Haskell の fmap
Haskell で文字列の分割と結合
Meadow (Emacs) で矩形領域をカット & ペースト
素朴にエラトステネスのふるい (2) - オブジェクト指向を手がかりに再帰表現を考える
Haskell で簡単なテキスト処理 (2)
Haskell で正規表現 (2) =~ , Python・Ruby と比較しながら
素朴にエラトステネスのふるい (1)
Python のジェネレータ (5) - 再帰とジェネレータと Composite
wxPython の準備 – Python で GUI
Python で部分適用 - functools モジュールの partial 関数
Firefox でウェブサイトの表の内容をコピーして表計算ソフトに貼り付ける
Python で二進数、十進数の変換
Python のデコレータ式 (3) - デコレートする側とデコレートされる側に引数がある場合
Haskell でフィールドに型変数を含んだ型の print
Firefox のスクロールが遅い – ハードウェア アクセラレータの値を変更
OpenOffice Calc で簡易に複数の関数のグラフを重ねて描く
OpenOffice Calc の ソルバー機能
Python のデコレータ式 (2) - デコレータに引数があり、複数のデコレータを適用する場合
Haskell で、繰り返しのある数値を生成する関数を定義 – read, cycle 関数を使って...
Haskell の数値 – Int は型で、Num は型クラス
Haskell でパスカルの三角形
explorer.exe から bb4win_mod へ
Python の文字列はシーケンス (2) - リストと文字列を透過的に扱うには if not L
Python の空リストと再帰
Python, Haskell の サーチ パス - いつも何度でも (o_ _)o~†
Python のデコレータ式 (1)
最近ずっと頭の中をループしている音楽 - A Paw in My Face
Haskell の Prelude 散策 (1) - リスト操作 : 要素の重ね合わせ (folds...
Python でメソッドの実行時間の計測
「Google エラー 申し訳ありません」
Python で逆ポーランド記法の計算
Python におけるバックスラッシュ (\) の扱いと、row stirng と正規表現における注...
Dropbox で Web のマーカーをポータブルに – Wired-Marker のデータをクラウ...
Python の文字列はシーケンスの一種 (1)
Haskell で代数的データ型の値を print で出力には
Make Link で「文章を引用」する形式を作成
AutoHotkey で サイトのタイトルと URL から、 FreeMind の子ノードを作成 (...


langs: ja ja ja ja ja ja ja ja ja ja ja ja

text:
2014年12月27日(土)美はる社 と システムアート広島と、そして、お客様もご招待しまして、忘年会を行いました!      /今年も「ホテル グランヴィア広島」様にお世話になりました\            猪木というサプライズゲストも登場したとか、してないとか・・・?笑なんといっても、盛り上がったのは恒例のビンゴ大会です!!!今年の景品も豪華で、お酒やお米、スピーカーに・・・着ぐるみ?笑目玉商品は、ブ 行事 2015-01-20T17:34:18+09:00 ㈱美はる社 FC2-BLOG http://miharusha.blog56.fc2.com/blog-entry-49.html
「鏡開き」と「1月の誕生会」
美はる社では先週末の1月9日(金)に一足早く「鏡開き」をしましたお餅は「ぜんざい」でおいしくいただきましたそして、1月生まれのスタッフの誕生会も同じ日に開催しました1月生まれのスタッフは全部で3人そのうちの一人は「新成人」です。とりあえず、幸せそうな顔でパチリ 行事 2015-01-13T13:36:33+09:00 ㈱美はる社 FC2-BLOG


langs: ja ja ja ja ja ja ja ja en ja ja en ja ja en ja ja en ja en ja en ja ja en en ja ja ja ja en ja ja ja en ja ja en ja ja ja ja en en ja en ja en ja ja en en en ja en ja en en en ja en ja en en en en ja en ja en ja en ja en ja en ja en en en ja en ja en ja en en ja ja en en ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja ja en en nl ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja

text:
パケットシェア:余ったデータ量を次月に家族にシェアが出来ます
最大5回線まで家族(3親等まで)で使用すると1回線につき50円の割引があります。
●au契約時と同じ使用方法で月額が約4,000円下がった。(30代 男性)
●auの時と何の違いも無く、料金が3分の1になったので満足です。(60代 男性)
●スマートフォンを持とうとすると月額6,000円以上の出費になるが、mineoだとその半値以下の利用料金で済んでいる。(30代 男性)
●今までのキャリアとの違いがわからない。それでいて今までの半分の費用でスマホが使えている。(40代 男性)
● ガラケーの通信料金よりも、端末代込みのmineo料金の方が安く、料金面でも満足度が高い。(40代 男性)
● 交換前のガラケーとほぼ同一金額でスマホが使える。(60代 男性)
●ガラケーの最低プランとスマホはmineoの2台持ちですが、月2,000円くらいです! 実質0円とかで知らずに高いお金払ってる人が沢山いるなか、自分だけ得してる感じです!(40代 女性)
●音声はガラケーのかけ放題が2,200円、データはmineoの定額データ通信で980円。auスマホがこの方法で利用できるのはmineoだけだと思うし、最安の組み合わせだと思う。(40代 男性)
●エリア等auと変わらずに使用出来る事。LTEの体感速度が速い事。(40代 男性)
●LTE回線のみのため、不安はあったが特に問題無く使えている。 スピードもまったく違和感なし、残数もわかる為安心感がある。(20代 女性)
●都市部でも山間部でも、ストレスなく通信できる点と、高速通信の容量も充分なので、満足してます。(20代 男性)
●やはり、au 4G端末が使える、というメリット。ドコモさんのMVNOなどが繋がらない場合でも、mineoだけがつながる、というケースもあり、利便性はいい。(30代 男性)
●スマホに詳しくなくても、設定があまり難しくないのと、わからないことがあってサポートセンターに電話をしたら、丁寧に教えてもらえるから。LaLacallとLINEを使い出してから、通話料がすごく安くすんでいて、助かってます。(30代 女性)
●mineoの端末は他社MVNOが扱っているものと比べてハイスペックなのでストレスなく使用しています。 (40代 男性)
●昼間の時間帯の通信速度が遅い。(20代 男性)
●地方であり、都市部と違い完全にLTE化されているわけではない為に、たまに通信不能になる 。(50代 男性)
上記は、マイネオのコミュニティサイト「マイネ王」でのアンケート結果と実際に使ったユーザーの感想です。ご購入の判断材料にしてください。
半年間基本料無料キャンペーンをやっているのはマイネオだけ!しかも2年縛りもナシ。
↓お申込みはコチラはこちら↓
あなたに合ったプランは?
電話番号を変えたくない
実際に使用している人の意見
格安スマホ(U-mobile)
格安スマホ(イオンスマホ)
mineo(マイネオ)
トーンモバイル(TONE)
BIGLOBE LTE・3G
FREETEL(フリーテル)
なぜ格安スマホは安いの?
wifiで携帯料金を節約する
MVNO(格安SIM)とは
家族で安く携帯料金を下げるには
夫婦・恋人2人でスマホを使う
通話料が多い方向け格安スマホ
格安スマホが故障したら
携帯 デビットカード契約
デビットカード simカード
LTE SIM 無制限
格安スマホは災害時や緊急地震速報などは利用できるの?
格安スマホでテザリングは使えるの?
LINEの格安スマホ通信参入へ
格安スマホでフリーメールで気を付けること
ドコモ「2年縛り」改善
格安SIMのデメリットはどこにある?
大手携帯料会社の新料金体系
大手携帯会社のスマホ回線料引き下げ
Copyright © 2016 格安スマホを比較してみました。格安スマホでお得な会社ランキング All Rights Reserved.