約 6,034,241 件
https://w.atwiki.jp/mineplex/pages/25.html
Draw My Thingについて・・ 目の前にあるキャンパスに書かれる物を当てるというゲーム 書く人はランダムで交代制。もちろん海外のサーバーなので英語で回答してください 文字数は経験値バー上に書いてあります kit詳細 Extra Time(Default) 絵を書く時間が+10秒される Selector(4000 Gems) 3つのお題からお題を選択することができる 自分が書く番になるとチャットに表示されるのでクリックして書き始めよう Extra Tools(Achievement) 8個の異なる物を使って絵を描くことができる お題(ネタバレ注意) 4文字 bank 銀行、貯蔵する所、土手 Crab カニ 5文字 booty drums erupt 噴火する giant 巨人 moose phone 電話 puppy 子犬 river 川 slime witch 女の魔法使い 6文字 bottle びん crayon クレヨン pickle ピクルス skinny teapot ティーポット tomato トマト 7文字 giraffe キリン 8文字 campfire キャンプファイア children 子供の複数形 mountain 山 skeleton がい骨 sleeping 4文字・4文字 door knob stop sign
https://w.atwiki.jp/asterisk99/pages/630.html
# SOME DESCRIPTIVE TITLE. # Copyright (C) 2021, PB'99 # This file is distributed under the same license as the NetworkX [Un # official Machine Translate] Japanese Doc package. # FIRST AUTHOR EMAIL@ADDRESS , 2021. # #, fuzzy msgid "" msgstr "" "Project-Id-Version NetworkX [Un official Machine Translate] Japanese Doc \n" "Report-Msgid-Bugs-To \n" "POT-Creation-Date 2021-06-25 23 18+0900\n" "PO-Revision-Date YEAR-MO-DA HO MI+ZONE\n" "Last-Translator FULL NAME EMAIL@ADDRESS \n" "Language-Team LANGUAGE LL@li.org \n" "MIME-Version 1.0\n" "Content-Type text/plain; charset=utf8\n" "Content-Transfer-Encoding 8bit\n" "Generated-By Babel 2.9.1\n" # ../../doc/reference/drawing.rst 5 msgid "Drawing" msgstr "ドローイング" # ../../doc/reference/drawing.rst 7 msgid "" "NetworkX provides basic functionality for visualizing graphs, but its " "main goal is to enable graph analysis rather than perform graph " "visualization. In the future, graph visualization functionality may be " "removed from NetworkX or only available as an add-on package." msgstr "NetworkXにはグラフを視覚化するための基本機能が用意されていますが、その主な目的はグラフの視覚化ではなくグラフの分析を可能にすることです。将来的には、NetworkXからグラフの視覚化機能が削除されるか、アドオン・パッケージとしてのみ使用可能になる場合があります。" # ../../doc/reference/drawing.rst 12 msgid "" "Proper graph visualization is hard, and we highly recommend that people " "visualize their graphs with tools dedicated to that task. Notable " "examples of dedicated and fully-featured graph visualization tools are " "`Cytoscape http //www.cytoscape.org/ `_, `Gephi https //gephi.org/ `_, " "`Graphviz http //www.graphviz.org/ `_ and, for `LaTeX http //www.latex-" "project.org/ `_ typesetting, `PGF/TikZ " " https //sourceforge.net/projects/pgf/ `_. To use these and other such " "tools, you should export your NetworkX graph into a format that can be " "read by those tools. For example, Cytoscape can read the GraphML format, " "and so, ``networkx.write_graphml(G, path)`` might be an appropriate " "choice." msgstr "グラフを正しく視覚化するのは難しいので、ツールを使ってグラフを視覚化することを強くお勧めします。グラフの視覚化に特化したツールの注目すべき例は、`Cytoscape http //www.cytoscape.org/ `_、`Gephi https //gephi.org/ `_、`Graphviz http //www.graphviz.org/ `_、そして`LaTeX http //www.latex-プロジェクト.org/ `_typesetting,`PGF/TikZ https //sourceforge.net/projects/pgf/ `_です。これらのツールや他のこのようなNetworkXを使うためには、ツールが読める形式にグラフをエクスポートする必要があります。例の場合、CytoscapeはGraphML形式を読むことができるので、``NetworkX.write_GraphML(G,path)``は適切な選択かもしれません。" # ../../doc/reference/drawing.rst 26 # 🕷🕷🕷 用語集へ Matplotlib/Matplotlib msgid "Matplotlib" msgstr "マテリアルプロットライブラリ" # ../../doc/reference/drawing.rst 48 # 🕷🕷🕷 AGraph? msgid "Graphviz AGraph (dot)" msgstr "Graphviz agraph(ドット)" # ../../doc/reference/drawing.rst 62 # 🕷🕷🕷 用語集へ Graphviz/Graphviz msgid "Graphviz with pydot" msgstr "グラフィズ・ウィズ・pydot" # ../../doc/reference/drawing.rst 76 msgid "Graph Layout" msgstr "グラフレイアウト" カウンタ: - 名前 コメント
https://w.atwiki.jp/vahren_ency/pages/1010.html
context { quota_view = on scenario_select2 = 50, バリエーション・シナリオ bloom = o_charge, o_flash, a_black, image.dat内の画像周縁をぼやかす picture_trans = tes.png, ru_samaa.png, 立ち絵の底辺をグラデーション半透明にする picture_fade = 24 立ち絵のフェードインフレーム数 picture_floor = msg 立ち絵の底辺をメッセージウィンドウ上辺に合わせる。bottomで画面底辺に合わせる mode_easy = @ mode_normal = blind mode_hard = blind, samecall mode_luna = blind, samecall, dead mode_easy_text = COMと対等の条件で戦います mode_normal_text = 戦場での視界が制限されます mode_hard_text = COM勢力の[[ユニット]]は自分と同じクラスの兵士を雇用します mode_luna_text = 人材ユニットが戦死します member = 8 spot_capacity = 8 war_capacity = 12 gain_per = 200 max_unit = 1000 movement_num = 1 employ_range = 2 support_range = 2 my_range = 2 myhelp_range = 1 power_order = normal 勢力の行動順。通常はランダム default_ending = on デフォルトエンディングを有効にするかどうか watching_replay = on 観戦モードから再復帰できるか force_fire = off 味方遮蔽解除を有効にするかどうか talent_mode = on 人材プレイのon/off battle_fast = off 簡易戦闘の高速化 race_suffix = 族 race_label = 種族 face_colorkey = 0, 0, 131 bgm_volume = 50 sound_volume = -2500 sound_count = 5 spot_fire1 = spot_fire 占領時エフェクトの[[スキル]]名。省略するとimage2内のo_chaegeによるアニメーションになる。 wnd_button = 5 _spot2 = 1 _powerselect2 = 8 wnd_alpha = 100 ウィンドウの透明度 zone_alpha = 192 ゾーン表示円の透明度 zone_radius = 72 ゾーン表示円の半径 circle_alpha_per = 70 領地の表示円の濃さ bold_spotpath = 350 連結線の太さ bold_escapepath = 150 退却線の太さ title_name = [[ヴァーレントゥーガ]] ver5.92 title_bgm = catharsis title_volume = -200 title_bgm_s = 2000 world_bgm = w1, w2, w3, w4, w5, w6, w7, w8, w9 world_volume = -800 battle_bgm = b1, b2, b3, b4, b5, b6, b7, b8, b9 battle_volume = -900 nofade_bgm = my_girl, _fanfare, fairy_of_sword, ukisizumi caution_adjust = 30 COMのプレイヤー敵視率 win_gain = 50 占領時の戦費の経済値に対する割合(%) dead_penalty = 25 死亡時ペナルティ、経験値を(指定%)にする notalent_down = 100 人材指揮下にないユニットの能力補正(%) leave_period = 8 自主退職後、再仕官までのターン数 merits_bonus = 1000 戦功値の加算 training_average = 100 人材の平均レベルに対する訓練限界レベルの倍率(%) roam_avoid = on newpower_flag = flag15, flag16, flag19, flag20, flag21, flag29, flag31, flag34, flag36, flag43, flag44, flag46, flag48, flag50, flag51, flag53, flag54, flag55, flag58, flag60, flag62 neutral_max = 12 neutral_min = 6 neutral_member_min = 3 neutral_member_max = 7 diplo_mode_itv = 12 diplo_down = 10 diplo_cost_per = 10 diplo_budget_per = 40 diplo_league_up = 6 diplo_sup_up = 8 diplo_sup_turndown = 1 diplo_frd_turndown = 1 diplo_frd_peace = 2 diplo_frd_up = 20 diplo_frd_down = 10 diplo_success_frd = 2000 diplo_success_leg = 2000 diplo_success_sup = 2000 diplo_most_power = 200 diplo_bestfriend = 80 unit_level_max = 100 unit_status_hp = 100 unit_status_rec = 10 unit_status_min = -500 unit_action_bdr = 3500 unit_search_bdr = 100 unit_attack_range = 300 unit_escape_range = 300 unit_escape_run = 100 unit_hand_range = 16 unit_view_range = 14 unit_sword_slide = 12 unit_charge_slide = 13 unit_missile_slide = 300 unit_slow_per = 80 unit_knock_speed = 400 unit_poison_per = 10 unit_drain_mul = 5 unit_illusion_miss = 66 unit_confusion_miss = 50 unit_summon_level = 20 unit_summon_min = 1 unit_retreat_damage = 20 unit_retreat_speed = 200 unit_use_coe = 90 unit_specialuse_per = 13 unit_battle_cram = off unit_castle_cram = off unit_castle_forcefire = on 攻城戦、防御側の味方遮蔽解除 unit_keep_form = semi btl_semiauto = on btl_limit = 500 btl_limit_c = 600 btl_unitmax = 400 btl_auto = 100 btl_msgtime = 75 btl_lineshift = 180 btl_breast_width = 15 btl_prepare_min = 50 btl_prepare_max = 100 btl_retreat_coe = 20, 5, 200 btl_raidback = 75 btl_healer = 10 btl_standby = 25 btl_counter = 80 btl_intercept = 50 btl_battlemode = 100 btl_attackmode = 100 btl_chargemode = 25 btl_mode_coe = 33 btl_nocastle_bdr = 70 btl_wingmax = 300 btl_replace_line = 70 btl_blind_alpha = 160 btl_gate_through = 600 skillicon_leader = _leader.png skillicon_all = _all.png skillicon_add = _add.png skillicon_special = @special.png fv_hp_per = 10 fv_mp_per = 100 fv_attack_per = 100 fv_speed_per = 200 fv_move_per = 200 fv_hprec_per = 400 fv_consti_mul = 10 fv_summon_mul = 25 fv_level_per = 10 trust_down_per = 200 trust_down_support = 40 trust_up = 1 support_gain = 10 support_gain_lose = 3 support_trust_bdr = 70 compati_bad = 5 compati_vassal_bdr = 65 loyal_up = 10 loyal_down = 10 loyal_border = 50 loyal_escape_bdr = 1 arbeit_turn = 3 arbeit_gain = 10 arbeit_gain_lose = 0 arbeit_price_coe = 33 arbeit_vassal_coe = 2000 arbeit_money_mini = 4 arbeit_player = on raise_yabo_bdr = 50 raise_most_power = 80 actor_per = 50 executive_bdr = 10 senior_bdr = 30 employ_price_coe = 500 vassal_price_coe = 3000 target_way_coe = 50 raid_bdr = 100 raid_min = -50 raid_max = 50 raid_coe = 15 }
https://w.atwiki.jp/oretomonowa/pages/49.html
ドラッグした文字列を右クリックから検索エンジンを指定して検索結果を新しいタブに表示するアドオン contextSearchとDrag DropuZoneはどちらかあればOK
https://w.atwiki.jp/ketcindy-eng/pages/12.html
1. KeTCindy=KeTpic+Cinderella Since 2006, we have been developed a tool "KeTpic" to put drawings into a TeX document. KeTpic is a mathematical software package, and using KeTpic, you can be put easily the exact drawings into a TeX document. However, because the GUI (Graphical User Interface) was insufficient, we could not say KeTpic is easy to use for beginners. On the other hand, Cinderella is one of the dynamic geometry software. While watching the screen, also while moving the point, it has the great advantage of creating a drawing as we expect. A developer U.Kortenkamp of Cinderella came to Japan in 2014, the collaboration of KeTpic and Cinderella started and KeTCindy was born. KeTCindy became easier to use much than KeTpic by adding a GUI to KeTpic. 2. The Flow of a Drawing (1) Launch the Cinderella by double-clicking a sample file in the KeTCindy folder. (2) Produce a drawing by using Cinderella screen (geometric figures) and CindyScript (input commands). (3) When you press the Texview button in Cinderella screen, you can obtain the Scilab source file and the main TeX file which confirms TeX. (4) kc.sh (.bat) is obtained to a series of processing of the following at the same time. Runs the Scilab source file and obtain a figure TeX file. Compile the main TeX file and obtain a PDF file with a drawing. PDF Viewer displays the PDF file. (5) When you press the Exekc button, you can run the kc.sh (.bat) and the PDF file is displayed automatically. 3. Required Softwares The following software is required. Cinderella Scilab TeX PDF Viewer(Mac is Preview and Windows is Sumatrapdf) The following software is optional. R(Statistical software) Maxima(Computer Algebra System software) Risa/Asir(Computer Algebra System software)
https://w.atwiki.jp/coreldraw/pages/16.html
CorelDRAW とは 特徴 ノウハウ CorelDRAW とは CorelDRAW (コーレルドロー)は、コーレル株式会社が開発、販売するベクトル画像編集ソフトウェアである。プロフェッショナルな観点から、AdobeのPhotoshop、Illustratorに対抗できる、数少ないプロ向け統合グラフィックパッケージである。 WindowsでのDTP(Desktop prepress)用ソフトウェアとして1989年に誕生し、今もなお世界中で使われているソフトのひとつ。現在はPhoto-paintなどのセットパッケージとして発売されており、画像加工も行うことができる。(かつてはAdobe Creative Suite Design Standerdなど高価なセットと比べられていたが、近年はAdobeはダウンロードのみになっている) CorelDRAW Essentialsという廉価版も販売されており、Illustratorのようなグラフィカルなことをしたいけど、まずはお試しで作りたい、という場合1万円台で購入することができる。本家CorelDRAW Graphics Suiteとの大きな違いは、プロユースな機能が付いていなかったり(カラーマネージメントの詳細設定やカスタムキーの設定など)表示できるモードの数など。詳しくはよくある質問を参照のこと。 特徴 Illustratorは月額、年額で支払う必要がある。CorelDRAWは買い切りである。(月額支払いも可) Adobeは画像加工にPhotoshopを別に買う必要があるが、PHOTO-PAINTが同梱している。 Mac発のAdobe系ツールに比べ、Windows発のツールなので右クリック操作が充実している。 プラグインがあまり出ていないので、Adobe系に比べて拡張性に乏しいが、プラグインで導入しないと手に入らない機能がもともとついていることもある。 CorelDRAW 2019ではMac版とWebapp版が同梱されている。 ノウハウ CorelDRAWは複数ページを作成する機能を有しているため、Indesignの役割も果たしてくれるが、ルビ機能などはない。 CorelDRAWはHTMLやフラッシュ形式でのエクスポートに一応対応している。 標準でバーコード作成機能や寸法ツールが搭載されている。また、X7でQRコードの作成にも対応した ___________
https://w.atwiki.jp/api_programming/pages/123.html
下位ページ Content Drawables, Views, And Layouts Viewのライフサイクル リソースファイルで Layouts と Drawables を定義するリソース Layout を使うレイアウト定義の一例 レイアウトリソースの使用方法 Drawables User Interface Making a user interface toolkit that can adapt to multiple products is hard, but it is even harder in the Garmin ecosystem. The mechanical designs of these products may be very different depending on the use case the product is designed for. As a result, the user interfaces of Garmin devices also vary by product some have physical buttons, some have coordinate touch screens, and some provide up, down, and action buttons. Rather than design a user interface toolkit that adapts to what device the UI is running on, the Connect IQ SDK makes it easier to port the user interface to different products. At the resource compiler level, we include a way to define a page in XML as well as specify page definitions per product. These tools make it easy to support multiple devices with a single app. Drawables, Views, And Layouts Watch faces と apps ではページスタック(page stack)をもっている。ヴュー(View)はページを表すオブジェクトである。ヴューはページスタックにプッシュしたちポップされたりする。まさにスタック。 ヴューはtransitionを使って、ページスタック上で別のヴューと入れ替えたりもできる。 View が画面。画面の構成を定義するのが Layout。Layout の要素として配置されるのが Drawables 、といったところか? 本家のページより抜粋 Viewのライフサイクル widgets と watch-apps では onStart() ← これはAppBase、つまりプログラム本体の関数WatchUi.Viewが取り込まれる前に実行される onLayout()リソースの読み込み。表示よりも前に実行される。 onShow()ヴューがForegroundに来た時に実行される。 onUpdate()ここで描画を実行。drawはここで使う。 onShow()の後、勝手に実行 WatchUI.requestUpdate()を実行しても、onUpdate()が実行される。 onHide() watchfaces と datafields では onLayout() onShow() onUpdate() class View { // ヴューのエントリポイントがonLayout(). // リソースが読み込まれ、レイアウトがセットされる前に呼ばれている。 // @param [Graphics.Dc] dc The drawing context // @return [Boolean] true if handled, false otherwise function onLayout( dc ); // When the View is brought into the foreground, onShow() is called. // @return [Boolean] true if handled, false otherwise function onShow(); // When a View is active, onUpdate() is used to update dynamic content. // This function is called when the View is brought to the foreground. // For widgets and watch-apps it is also called when WatchUi.requestUpdate() // is called. For watchfaces it is called once a minute and for datafields // it is called once a second. If a class that extends View does not // implement this function then any Drawables contained in the View will // automatically be drawn. // @param [Graphics.Dc] dc The drawing context // @return [Boolean] true if handled, false otherwise function onUpdate( dc ); // Before the View is removed from the foreground, onHide() is called. function onHide(); // Use setLayout() to set the layout for the View. If the extending class // does not override onUpdate(), then all Drawables contained in layout // will automatically be drawn by the View. // @param [Array] layout An array of Drawables function setLayout(layout); } 各ヴューはレイアウト(layout)を持っている。 レイアウトとはDrawablesとよばれる描画オブジェクトの集まりで、各Drawableはビューに置かれる。 Drawableはdrawメソッドを通じて、デバイスコンテキストへ描画される。 どんなDrawableを拡張したオブジェクトも描画オブジェクトで、プロパティはpublicになる。 Monkey C は、基本的はdrawablesとしてレイアウトにリソースとしてText, Bitmapを配置できる。 リソースファイルで Layouts と Drawables を定義する リソース Layout と Drawable は「リソース」ファイルとして定義する(することができる、が正しいか)。これにより Monkey C を扱わずとも、特定のデバイス向けのレイアウトを作成することができる。 加えて DrawableList オブジェクトを can also be defined, which are Drawable objects that can draw a number of graphics primitives. Layout を使う XML上でレイアウトを定義する場合、描画オブジェクトをレイアウトタグの中に並べればよい。リストに並べられた描画オブジェクトはMonkey Cの描画オブジェクトに変換され、次々と描画される。そのため、2つ以上の描画オブジェクトがあれば、1つ目を描画した上から2つ目が描画されることになる。 レイアウト定義の一例 resources layout id="MainLayout" drawable id="MainBackground" / label text="Page Heading" x="10" y="5" font="Gfx.FONT_LARGE" color="Gfx.COLOR_BLACK" / label text="Your information goes here." x="10" y="25" font="Gfx.FONT_MEDIUM" color="Gfx.COLOR_DK_GREY" / /layout /resources レイアウトリソースの使用方法 onLayout(dc)内で、setLayout()で登録 onUpdate(dc)内でView.onUpdate(dc)を呼び出す。ViewのonUpdate(dc)を呼び出さないとほっとかれる。 class MainView { function onLayout( dc ) { setLayout( Rez.Layouts.MainLayout( dc ) ); // レイアウトを読み込み } function onUpdate( dc ) { // Call parent’s onUpdate(dc) to redraw the layout View.onUpdate( dc ); // この下に更にアップデートする必要のあるものを記述 } } Layout タグでサポートされる属性 属性 定義 値 初期値 補足 id 紐付けるためのID番号This is used to reference the layout in the Rez module 半角文字で始まる値 NA 必須 Drawables (ビットマップファイル、drawable XML リソース) を drawable タグ を使って、レイアウトの中に含めることができる。 属性 定義 値 初期値 補足 id drawable の id The ID provided here references the drawable defined in the resource XML file 半角文字で始まる値 NA 必須; resource XML file で定義される必要あり Text can also be included in layouts. To inlude text use the label tag, which supports the following attributes 属性 内容 値 初期値 補足 text 表示する文字列 NA An empty string font フォント Graphics font constant or the ID of a user-defined font Graphics.FONT_MEDIUM x 表示X位置 ピクセル値、もしくは center 0 y 表示X位置 ピクセル値、もしくは center 0 justifcation How the text should be justified in relation to the X Y location Graphics text justify constant Graphics.TEXT_JUSTIFY_LEFT color The color of the text Graphics color constant or a 24-bit integer of 0xRRGGBB 形式 The current draw context’s foreground color Drawables Drawable XML resources consist of a list of basic drawables bitmaps and shapes. To create an XML drawable, define a drawable-list in an XML resource file. Both bitmap and shape tags should be be placed as child nodes inside the drawable-list . An example drawable-list resources drawable-list id="Smiley" background="Gfx.COLOR_YELLOW" shape type="circle" x="10" y="10" radius="5" color="Gfx.COLOR_BLACK" / shape type="circle" x="30" y="10" radius="5" color="Gfx.COLOR_BLACK" / bitmap id="mouth" x="15" y="25" filename="../bitmaps/mouth.png" / /drawable-list /resources To use this drawable in code do the following function onUpdate( dc ) { var mySmiley = new Rez.Drawables.Smiley(); mySmiley.draw( dc ); } The drawable-list tag supports the following attributes Attribute Definition Valid Values Default Value Notes id The ID of the drawable Any string that starts with a character NA Required x The X coordinate of the top left corner in relation to the parent element pixel value or center 0 y The Y coordinate of the top left corner in relation to the parent element pixel value or center 0 width The width of the drawable list. pixel value or fill fill height The height of the drawable list. pixel value of fill fill foreground The color of elements (shapes and text) drawn in this layout Graphics color constant or a 24-bit integer of the form 0xRRGGBB The current draw context’s foreground color background The background color of this layout Graphics color constant or a 24-bit integer of the form 0xRRGGBB Gfx.COLOR_TRANSPARENT The shape tag supports the following attributes Attribute Definition Valid Values Default Value Notes type The type of the shape to be drawn rectangle, ellipse, circle, or polygon NA Required x The X coordinate of the top left corner in relation to the parent element pixel value or center 0 y The Y coordinate of the top left corner in relation to the parent element pixel value or center 0 points A list of points which defines the polygon x1, y1], [x2, y2], ... , [xN, yN NA Required for polygon; must have at least 3 points width The width of the shape to be drawn pixel value or fill fill Only valid for ellipse and rectangle height The height of the shape to be drawn pixel value or fill fill Only valid for ellipse and rectangle color The color of the shape to be drawn Graphics color constant or a 24-bit integer of the form 0xRRGGBB The current draw context’s foreground color corner_radius The radius of the rounded corners of the rectangle pixel value 0 Only valid for rectangle radius The radius of the circle pixel value 0 Required for circle border_width The width of the border around the shape pixel value 0 Only valid for rectangle, ellipse, and circle border_color The color of the border around the shape Graphics color constant or a 24-bit integer of the form 0xRRGGBB The current draw context’s foreground color Only valid for rectangle, ellipse, and circle The bitmap tag supports the following attributes Attribute Definition Valid Values Default Value Notes id The ID of the drawable Any string that starts with a character NA Required x The X coordinate of the top left corner in relation to the parent element pixel value or center 0 y The Y coordinate of the top left corner in relation to the parent element pixel value or center 0 filename The relative path to the image that should be shown A valid, relative path NA Required Input Handling As if input handling wasn’t already one of the most important and complicated pieces of a UI toolkit, Garmin devices take the complication up a level. Unlike those touchable glowing rectangles that are modern smart phones, Garmin devices come in lots of shapes and sizes. Touch screens are not always ideal for all watch products, so there is a mix of input styles and screen technologies. It’s the job of the UI toolkit to make this coherent to the developer. Input and App Types Not all app types have access to input. Watch faces and data fields cannot handle input, though widgets can receive input (may be limited on some devices) and watch-apps will have the most input capability. Input Delegates The Delegate object is an object that implements a certain interface specific to input handling. Monkey C provides a low level InputDelegate that allows handling of events at a basic level. This is good when the app needs to handle button presses or screen presses in a particular way. module WatchUi { // This class implements basic input handling. A developer needs to override // the events they want to handle. class InputDelegate { // Key event // @param evt KEY_XXX enum value // @return true if handled, false otherwise function onKey( evt ); // Click event // @param evt Event object with click information // @return true if handled, false otherwise function onTap( evt ); // Screen hold event. Sent if user is touching // the screen // @param evt Event object with hold information // @return true if handled, false otherwise function onHold( evt ); // Screen release. Sent after an onHold // @param evt Event object with hold information // @return true if handled, false otherwise function onRelease( evt ); // Screen swipe event // @param evt Event function onSwipe( evt ); } } Behaviors Garmin makes products with a purpose, and that purpose can alter the design of one product line over another. Deciding whether a product has a touch screen or has buttons can depend on the environment in which the user will take. For instance, if the product is intended to be used in water (swimming, canoeing, on a boat), it may not have a touch screen. These decisions make for superior products, but also add to developer frustration due to device fragmentation. Most products will support common behaviors (next page, back a page), but how they are executed by the user may differ based on the available input types. To help with this dilemma, Monkey C exposes events at a behavior level. Behaviors separate high-level intentions from the actual input type—next page versus screen press. The BehaviorDelegate is a super class of InputDelegate and maps its low level inputs to common operations across multiple products. Using the BehaviorDelegate can lead to much more portable code. class BehaviorDelegate extends InputDelegate { // When a next page behavior occurs, onNextPage() is called. // @return [Boolean] true if handled, false otherwise function onNextPage(); // When a previous page behavior occurs, onPreviousPage() is called. // @return [Boolean] true if handled, false otherwise function onPreviousPage(); // When a menu behavior occurs, onMenu() is called. // @return [Boolean] true if handled, false otherwise function onMenu(); // When a back behavior occurs, onBack() is called. // @return [Boolean] true if handled, false otherwise function onBack(); // When a next mode behavior occurs, onNextMode() is called. // @return [Boolean] true if handled, false otherwise function onNextMode(); // When a previous mode behavior occurs, onPreviousMode() is called. // @return [Boolean] true if handled, false otherwise function onPreviousMode(); } Built In Handlers In general, complicated input from users and feedback to users should not be done on a wearable device, but should instead be done via a phone app or web page. However, sometimes the device needs to get some form of user input or provide confirmation to the user. WatchUi provides three widgets to handle input menus, the generic picker, and the number picker (the number picker has been deprecated in favor of the generic picker). Two additional handlers provided by WatchUi can be used to give feedback to the user the confirmation dialog and progress dialog. Menu A menu is a list of options for the user. The options are displayed in a list that matches the device the app is running on. A menu can be defined in the resource XML file using the following format menu id="MainMenu" menu-item id="item_1" Item 1 /menu-item menu-item id="item_2" Item 2 /menu-item /menu The resource compiler will then take this XML and generate a Menu object in the Rez module. In order to use this menu, a developer simply needs to push the menu and a delegate for the menu using Ui.pushView() class MyClass extends Ui.View { function openTheMenu() { Ui.pushView( new Rez.Menus.MainMenu(), new MyMenuDelegate(), Ui.SLIDE_UP ); } } class MyMenuDelegate extends Ui.MenuInputDelegate { function onMenuItem(item) { if ( item == item_1 ) { // Do something here } else if ( item == item_2 ) { // Do something else here } } } Generic Picker The Picker class, along with the PickerDelegate and PickerFactory classes, provides applications with the ability to create onscreen lists of user-selectable objects. A picker consists of one or more choosable objects, a title, a next and previous arrow, and a confirm button. The next and previous arrows and the confirm button are device specific but can be overwritten if desired. Pickers are pushed using WatchUi.pushView(), providing a PickerDelegate for the input delegate. A PickerFactory is required to indicate what should be displayed for each pickable value. Sample picker implementations can be found in the Picker sample project, inside the samples/Picker directory. User Interface [Main components of a generic picker layout] The above image is a representation of the general structure of what a picker should look like on a square screen. Other screen formats should have the same layout with some size differences to account for the screen and button layout. The top red bar represents where the title of the picker is displayed. Up and down arrows to scroll through the available options are placed where the green boxes are. The leftmost blue box is where the last item you selected is shown if the picker has multiple selectable items. The center blue box is the item you are currently selecting. The white box will either be the next selectable item in the list or the button to confirm your selection. Development Interface class Picker extends Toybox.WatchUi.View { // Constructor // @param [Dictionary] options @see Picker#setOptions function initialize( options ); // Set the options for the Picker. // @param [Dictionary] options the options for the Picker // @option options [Drawable] title the title for the Picker. Required. // @option options [Array] pattern an Array of [Object] for the Picker to display. If the Array entry is a PickerFactory then it is presented to the user to make a choice. If it is a Drawable then it is display only. Required. // @option options [Array] defaults an Array of [Number] indicating the starting index for each entry in pattern. Optional. // @option options [Drawable] nextArrow a custom next icon for the Picker. Optional. // @option options [Drawable] previousArrow a custom previous icon for the Picker. Optional. // @option options [Drawable] confirm a custom confirm icon for the Picker. Optional. function setOptions( options ); } class PickerDelegate { // Handle a confirm event from a [Picker] // @param [Array] values The chosen values from the Picker. For [Drawable] entries, null will be returned for that value. function onAccept( values ); // Handle a cancel event from a [Picker] function onCancel(); } class PickerFactory { // Generate a Drawable instance for a given item // @param [Number] item Item index // @param [Boolean] isSelected true if the current item is the selected item, false otherwise // @return [Drawable] object to be rendered function getDrawable( item, isSelected ); // Return a representative value for this item // @param [Number] item Item index // @return [Object] Representative item for the given index function getValue( item ); // Get the number of items in the factory // @return [Number] number of items in the factory function getSize(); } Number Picker - DEPRECATED To allow the user to pick or adjust numerical data, the number picker widget is your best bet. The number picker widget allows for editing or adjusting of common numerical types. Here’s an example of number picker use enum { NUMBER_PICKER_DISTANCE, // A Float in meters NUMBER_PICKER_TIME, // A Duration NUMBER_PICKER_TIME_MIN_SEC, // A Duration NUMBER_PICKER_TIME_OF_DAY, // A Duration representing the number of seconds since midnight NUMBER_PICKER_WEIGHT, // A Float in kilograms NUMBER_PICKER_HEIGHT, // A Float in meters NUMBER_PICKER_CALORIES, // A Number NUMBER_PICKER_BIRTH_YEAR // A Number } class NumberPicker { // Constructor // @param mode An enum value of type NUMBER_PICKER_* // @param initialValue The initial value for the Number Picker, type // depends on mode function initialize( mode, initialValue ); } class NumberPickerDelegate { // When a number is chosen, onNumberPicked() is called, passing the // chosen value. // @param value The chosen number, type depends on the NumberPicker mode function onNumberPicked( value ); } Confirmation Dialog The confirmation dialog provides a simple yes/no dialog. This is useful when presenting a simple selection. enum { CONFIRM_NO, CONFIRM_YES } class Confirmation { // Constructor // @param [String] message A textual confirmation message function initialize( message ); } class ConfirmationDelegate { // When a response is chosen, onResponse() is called, passing // the response of CONFIRM_NO or CONFIRM_YES // @param response The response of the confirmation of CONFIRM_NO or CONFIRM_YES function onResponse( response ); } Progress Bar The progress dialog gives a standard wait dialog. It has two modes—one that shows the completion of some process, and a second that acts a wait timer displaying an indeterminate amount of progress. The look and feel of the progress bar will be device-specific. class ProgressBar { // Constructor // @param [String] displayString The string to display on the progress bar view // @param [Float] startValue The initial value for the progress bar (0-100), null for "busy" function initialize( displayString, startValue ); // Use setProgress() to set the value of the progress bar. // @param [Float] progressValue The value for the progress bar (0-100), null for "busy" function setProgress( progressValue ); // Use setDisplayString() to set the string displayed on the progress bar view. // @param [String] displayString The string to display on the progress bar view function setDisplayString( displayString ); }
https://w.atwiki.jp/sunday_notebook/pages/39.html
JeeGooContextは右クリックで表示するコンテキストメニューを独自実装するためのプラグインです。 これはわりとわかりやすいかもしれませんね。 導入方法 公式サイトからダウンロードし解凍後、任意のフォルダにjquery.jeegoocontext.jsファイルかjquery.jeegoocontext.min.jsファイルを配置します。 また、同じフォルダ内にskinsフォルダも配置してください。 このフォルダ内のファイルを使って表示をしますので。 実装例 HTMLのBody内にリスト構造で表示したいコンテキストメニューを作成します。 JQuery Plugin JeeGooContext 実装は以下のサイトが参考になります。 独自の右クリックメニューを導入できるJavaScript「a jQuery context menu plugin」
https://w.atwiki.jp/directx/pages/26.html
メッシュを拡大、縮小します。 #include d3d9.h #include d3dx9.h #include dinput.h #define SAFE_RELEASE(p) {if(p){(p)- Release();(p)=NULL;}}//安全に解放する LPDIRECT3D9 g_pD3D = NULL;//Direct3D9 LPDIRECT3DDEVICE9 g_pd3dDevice = NULL;//レンダリングデバイス LPD3DXFONT g_pFont = NULL;//フォント LPD3DXMESH pMesh = NULL;//メッシュ D3DMATERIAL9* pMaterials = NULL;//マテリアル LPDIRECT3DTEXTURE9* pTextures = NULL;//テクスチャ LPD3DXMESH pTailMesh = NULL;//メッシュ D3DMATERIAL9* pTailMaterials = NULL;//マテリアル LPDIRECT3DTEXTURE9* pTailTextures = NULL;//テクスチャ D3DXVECTOR3 pos[4]; DWORD dwNumMaterials = 0; DWORD dwNumMaterials2 = 0; D3DXMATRIXA16 matWorld,matScale,matPosition[4]; //テキスト描画 void TextDraw(LPD3DXFONT pFont,char* text,int X,int Y) { RECT rect={X,Y,0,0};//描画位置 //スプライトポインタ(無くても良し),描画文字,文字数(-1で全部),描画範囲,フォーマット,色 pFont- DrawText(NULL, text, -1, rect, DT_LEFT | DT_NOCLIP, D3DCOLOR_ARGB(255, 255, 255, 255)); } //Direct3D初期化 HRESULT InitD3D( HWND hWnd ) { //Direct3Dを生成する if(NULL==(g_pD3D=Direct3DCreate9(D3D_SDK_VERSION))){return E_FAIL;} //デバイス生成用のパラメーター D3DPRESENT_PARAMETERS d3dpp;//パラメーター構造体 ZeroMemory( d3dpp, sizeof(d3dpp) );//ゼロで初期化 d3dpp.Windowed = TRUE;//ウインドウモードで起動 d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;//バックバッファのスワップエフェクト Direct3Dにスワップエフェクトをまかせる d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;//バックバッファのフォーマット今表示されているモニタの設定と同じ d3dpp.BackBufferCount = 1;//バックバッファの数 d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;//マルチサンプリングは行わない d3dpp.MultiSampleQuality = 0;//マルチサンプリングは行わないので0 d3dpp.EnableAutoDepthStencil = TRUE;//Direct3Dに深度バッファの管理をまかせる d3dpp.AutoDepthStencilFormat = D3DFMT_D16;//深度バッファのフォーマット(通常はこの値で問題ない) d3dpp.hDeviceWindow = hWnd;//カバーウィンドウ=アプリケーションのウィンドウ d3dpp.Flags = 0;//フラグは使わない d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;//今のリフレッシュレートをそのまま使う d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;//モニタの垂直回帰を待つ //Direct3Dデバイスの生成 HAL(ハードウェアアクセラレーション) if(FAILED(g_pD3D- CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,D3DCREATE_HARDWARE_VERTEXPROCESSING, d3dpp, g_pd3dDevice))){ //HALが駄目ならHEL(ソフトウェアエミュレーション) if(FAILED(g_pD3D- CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING, d3dpp, g_pd3dDevice))){ //駄目なら終了 return(E_FAIL); } } //フォントの生成 MSゴシック //デバイス,文字高さ,文字幅,フォントスタイル,ミップマップのレベル,斜体にするかどうか,文字セット,出力精度,出力品質,フォントピッチとファミリ,フォント名,フォントポインタ HRESULT hr = D3DXCreateFont( g_pd3dDevice, 20, 0, FW_HEAVY, 1, false, SHIFTJIS_CHARSET, OUT_TT_ONLY_PRECIS, ANTIALIASED_QUALITY, FF_DONTCARE, MS ゴシック , g_pFont ); if FAILED(hr){return(E_FAIL);} // Xファイルからメッシュをロードする LPD3DXBUFFER pD3DXMtrlBuffer = NULL; if( FAILED( D3DXLoadMeshFromX( box.x , D3DXMESH_SYSTEMMEM, g_pd3dDevice, NULL, pD3DXMtrlBuffer, NULL, dwNumMaterials, pMesh ) ) ) { MessageBox(NULL, Xファイルの読み込みに失敗しました ,NULL, MB_OK); return E_FAIL; } D3DXMATERIAL* d3dxMaterials = (D3DXMATERIAL*)pD3DXMtrlBuffer- GetBufferPointer(); pMaterials = new D3DMATERIAL9[dwNumMaterials]; pTextures = new LPDIRECT3DTEXTURE9[dwNumMaterials]; for( DWORD i=0; i dwNumMaterials; i++ ) { pMaterials[i] = d3dxMaterials[i].MatD3D; pMaterials[i].Ambient = pMaterials[i].Diffuse; pTextures[i] = NULL; if( d3dxMaterials[i].pTextureFilename != NULL lstrlen(d3dxMaterials[i].pTextureFilename) 0 ) { if( FAILED( D3DXCreateTextureFromFile( g_pd3dDevice, d3dxMaterials[i].pTextureFilename, pTextures[i] ) ) ) { MessageBox(NULL, テクスチャの読み込みに失敗しました , NULL, MB_OK); } } } pD3DXMtrlBuffer- Release(); LPD3DXBUFFER pD3DXMtrlBuffer2 = NULL; if( FAILED( D3DXLoadMeshFromX( tail.x , D3DXMESH_SYSTEMMEM, g_pd3dDevice, NULL, pD3DXMtrlBuffer2, NULL, dwNumMaterials2, pTailMesh ) ) ) { MessageBox(NULL, Xファイルの読み込みに失敗しました ,NULL, MB_OK); return E_FAIL; } D3DXMATERIAL* d3dxMaterials2 = (D3DXMATERIAL*)pD3DXMtrlBuffer2- GetBufferPointer(); pTailMaterials = new D3DMATERIAL9[dwNumMaterials2]; pTailTextures = new LPDIRECT3DTEXTURE9[dwNumMaterials2]; for( DWORD i=0; i dwNumMaterials2; i++ ) { pTailMaterials[i] = d3dxMaterials2[i].MatD3D; pTailMaterials[i].Ambient = pTailMaterials[i].Diffuse; pTailTextures[i] = NULL; if( d3dxMaterials2[i].pTextureFilename != NULL lstrlen(d3dxMaterials2[i].pTextureFilename) 0 ) { if( FAILED( D3DXCreateTextureFromFile( g_pd3dDevice, d3dxMaterials2[i].pTextureFilename, pTailTextures[i] ) ) ) { MessageBox(NULL, テクスチャの読み込みに失敗しました , NULL, MB_OK); } } } pD3DXMtrlBuffer2- Release(); // Zバッファー処理を有効にする g_pd3dDevice- SetRenderState( D3DRS_ZENABLE, TRUE ); // ライトを有効にする g_pd3dDevice- SetRenderState( D3DRS_LIGHTING, TRUE ); // アンビエントライト(環境光)を設定する g_pd3dDevice- SetRenderState( D3DRS_AMBIENT, 0x00111111 ); // スペキュラ(鏡面反射)を有効にする g_pd3dDevice- SetRenderState(D3DRS_SPECULARENABLE,TRUE); return S_OK; } //終了時解放処理 VOID Cleanup() { SAFE_RELEASE(pTailMesh); SAFE_RELEASE(pMesh); SAFE_RELEASE(g_pFont); SAFE_RELEASE(g_pd3dDevice); SAFE_RELEASE(g_pD3D); } //レンダリング VOID Render() { //デバイスが無いなら終了 if(NULL==g_pd3dDevice){return;} //ワールドトランスフォーム(絶対座標変換) D3DXMatrixIdentity( matWorld); // ビュートランスフォーム(視点座標変換) D3DXVECTOR3 vecEyePt( 0.0f, 3.0f,-2.5f ); //カメラ(視点)位置 D3DXVECTOR3 vecLookatPt( 0.0f, 0.0f, 0.0f );//注視位置 D3DXVECTOR3 vecUpVec( 0.0f, 1.0f, 0.0f );//上方位置 D3DXMATRIXA16 matView; D3DXMatrixLookAtLH( matView, vecEyePt, vecLookatPt, vecUpVec ); g_pd3dDevice- SetTransform( D3DTS_VIEW, matView ); // プロジェクショントランスフォーム(射影変換) D3DXMATRIXA16 matProj; D3DXMatrixPerspectiveFovLH( matProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f ); g_pd3dDevice- SetTransform( D3DTS_PROJECTION, matProj ); // ライトをあてる 白色で鏡面反射ありに設定 D3DXVECTOR3 vecDirection(1,-1,1); D3DLIGHT9 light; ZeroMemory( light, sizeof(D3DLIGHT9) ); light.Type = D3DLIGHT_DIRECTIONAL; light.Diffuse.r = 1.0f; light.Diffuse.g = 1.0f; light.Diffuse.b = 1.0f; light.Specular.r=1.0f; light.Specular.g=1.0f; light.Specular.b=1.0f; D3DXVec3Normalize( (D3DXVECTOR3*) light.Direction, vecDirection ); light.Range = 200.0f; g_pd3dDevice- SetLight( 0, light ); g_pd3dDevice- LightEnable( 0, TRUE ); //バックバッファのクリア g_pd3dDevice- Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(100,100,100), 1.0f, 0 ); //シーンの開始 if(SUCCEEDED(g_pd3dDevice- BeginScene())) { //ここに処理内容を書く D3DXMatrixIdentity( matWorld); D3DXMatrixTranslation( matPosition[0],pos[0].x,pos[0].y,pos[0].z); D3DXMatrixMultiply( matWorld, matWorld, matPosition[0]); g_pd3dDevice- SetTransform( D3DTS_WORLD, matWorld ); for( DWORD i=0; i dwNumMaterials2; i++ ) { g_pd3dDevice- SetMaterial( pTailMaterials[i] ); g_pd3dDevice- SetTexture( 0, pTailTextures[i] ); pTailMesh- DrawSubset( i ); } for(DWORD j=1;j 4;j++) { D3DXMatrixIdentity( matWorld); D3DXMatrixTranslation( matPosition[j],pos[j].x,pos[j].y,pos[j].z); D3DXMatrixMultiply( matWorld, matWorld, matPosition[j]); if(j==3){ D3DXMatrixScaling( matScale,3.0f,1.0f,1.0f); D3DXMatrixMultiply( matWorld, matWorld, matScale); } if(j==2){ D3DXMatrixScaling( matScale,0.5f,2.0f,0.5f); D3DXMatrixMultiply( matWorld, matWorld, matScale); } if(j==1){ D3DXMatrixScaling( matScale,2.0f,1.0f,2.0f); D3DXMatrixMultiply( matWorld, matWorld, matScale); } g_pd3dDevice- SetTransform( D3DTS_WORLD, matWorld ); for( DWORD i=0; i dwNumMaterials; i++ ) { g_pd3dDevice- SetMaterial( pMaterials[i] ); g_pd3dDevice- SetTexture( 0, pTextures[i] ); pMesh- DrawSubset( i ); } } TextDraw(g_pFont, メッシュオブジェクトの拡大、縮小 ,0,0); //シーンの終了 g_pd3dDevice- EndScene(); } //バックバッファを表画面に反映させる g_pd3dDevice- Present( NULL, NULL, NULL, NULL ); } //メッセージプロシージャ LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_DESTROY //終了時 Cleanup(); PostQuitMessage(0); return 0; case WM_PAINT //ウインドウ描画時 Render(); return 0; case WM_SIZE //ウインドウサイズ変更時 InvalidateRect(hWnd,NULL,true);//画面更新 return 0; } return DefWindowProc( hWnd, msg, wParam, lParam ); } //メイン関数 INT WINAPI wWinMain( HINSTANCE hInst, HINSTANCE, LPWSTR, INT ) { //ウインドウクラスの登録 WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, Window1 , NULL }; RegisterClassEx( wc ); //タイトルバーとウインドウ枠の分を含めてウインドウサイズを設定 RECT rect; SetRect( rect,0,0,640,480); AdjustWindowRect( rect, WS_OVERLAPPEDWINDOW, FALSE); rect.right=rect.right-rect.left; rect.bottom=rect.bottom-rect.top; rect.top=0; rect.left=0; //ウインドウの生成 HWND hWnd = CreateWindow( Window1 , Hello DirectX9 World !! , WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, rect.right, rect.bottom, NULL, NULL, wc.hInstance, NULL ); //TailとBox用の座標を初期化 pos[0].x=0; pos[0].y=-0.25; pos[0].z=0; pos[1].x=0.25; pos[1].y=0; pos[1].z=-0.25; pos[2].x=0.75; pos[2].y=0; pos[2].z=0.75; pos[3].x=-0.25; pos[3].y=0; pos[3].z=-0.75; //Direct3D初期化 if(SUCCEEDED(InitD3D(hWnd))) { //ウインドウ表示 ShowWindow(hWnd,SW_SHOWDEFAULT); UpdateWindow(hWnd); //メッセージループ MSG msg; while( GetMessage( msg,NULL,0,0)) { TranslateMessage( msg); DispatchMessage( msg); } } UnregisterClass( Window1 ,wc.hInstance); return 0; }
https://w.atwiki.jp/maymehdell/pages/84.html
20171110 00 12 # coding utf-8 from requests_oauthlib import OAuth1Session import json import settings import pprint twitter = OAuth1Session(settings.CONSUMER_KEY, settings.CONSUMER_SECRET, settings.ACCESS_TOKEN, settings.ACCESS_TOKEN_SECRET) params = {} req = twitter.get( https //api.twitter.com/1.1/statuses/home_timeline.json , params = params) #pprint.pprint(req.text) timeline = json.loads(req.text) textForSave = json.dumps(timeline , ensure_ascii=False, indent=4) with open( gottimeline.json , wb ) as fh fh.write(textForSave.encode( utf-8 )) gtl_gettimeline.py # coding utf-8 import pprint import json import re import sys args = sys.argv # open json Timeline #with open( tlsample.json ) as fh # theTimeline = json.loads(fh.read(), utf-8 ) theTimeline = json.loads(args[1], utf-8 ) theEline = [] for theStatus in theTimeline print(theStatus[ text ]) #theStatus[ context ] = [ aiueo , kakikukeko ] theStatus[ context ] = [] pattern = u おは matchOB = re.search(pattern , theStatus[ text ]) if matchOB theStatus[ context ].append( おはよう ) pattern = u 少女試験中 matchOB = re.search(pattern , theStatus[ text ]) if matchOB theStatus[ context ].append( TEST ) theEline.append(theStatus) #pprint.pprint(theStatus.text) textForSave = json.dumps(theEline , ensure_ascii=False) with open( etimeline.json , wb ) as fh fh.write(textForSave.encode( utf-8 )) tl2c_timeline2context.py # coding utf-8 import pprint import json import sys # open json ContextTape with open( ContextTape.json ) as fh theContextTape = json.loads(fh.read(), utf-8 ) def ContextToIntent ( Context , ContextTape ) theAnswer = { condition [ ] , intent { text } } for theTape in ContextTape if (set(theTape[ condition ]) = set( Context )) #pprint.pprint(theTape[ intent ]) if ( len(theTape[ condition ]) = len(theAnswer[ condition ]) ) theAnswer = theTape return theAnswer args = sys.argv theTimeline = json.loads(args[1], utf-8 ) for theStatus in theTimeline pprint.pprint(theStatus[ context ]) answer = ContextToIntent( theStatus[ context ] , theContextTape ) theStatus[ condition ] = answer[ condition ] theStatus[ intent ] = answer[ intent ] for theStatus in theTimeline pprint.pprint(theStatus[ condition ]) pprint.pprint(theStatus[ intent ]) textForSave = json.dumps(theTimeline , ensure_ascii=False) with open( itimeline.json , wb ) as fh fh.write(textForSave.encode( utf-8 )) c2i_context2intent.py # coding utf-8 import pprint import json import datetime import tweepy import settings import time import sys args = sys.argv auth = tweepy.OAuthHandler(settings.CONSUMER_KEY, settings.CONSUMER_SECRET) auth.set_access_token(settings.ACCESS_TOKEN, settings.ACCESS_TOKEN_SECRET) api = tweepy.API(auth) # open json ContextTape #with open( tt_testtweet.json ) as fh # theIntent = json.loads(fh.read(), utf-8 ) theIntent = json.loads(args[1], utf-8 ) def IntentToAction ( ContextTape ) for theTape in ContextTape if (not intent in theTape) continue else if (not text in theTape[ intent ]) continue elif theTape[ intent ][ text ] == continue else print(theTape[ intent ][ text ] + #少女試験中 + str(datetime.datetime.today())) pprint.pprint(api.update_status(status=theTape[ intent ][ text ] + #少女試験中 + str(datetime.datetime.today()))) time.sleep(10) IntentToAction( theIntent ) #pprint.pprint(answer) i2a_intent2action.py 20171103 16 18 # coding utf-8 import pprint import json # open json Timeline with open( tlsample.json ) as fh #with open( ContextTape.json ) as fh theTimeline = json.loads(fh.read(), utf-8 ) theEline = [] for theStatus in theTimeline print(theStatus[ text ]) theStatus[ condition ] = [ aiueo , kakikukeko ] theEline.append(theStatus) #pprint.pprint(theStatus.text) textForSave = json.dumps(theEline , ensure_ascii=False) with open( eline.json , wb ) as fh fh.write(textForSave.encode( utf-8 )) tl2c.py # coding utf-8 from requests_oauthlib import OAuth1Session import json import settings import pprint twitter = OAuth1Session(settings.CONSUMER_KEY, settings.CONSUMER_SECRET, settings.ACCESS_TOKEN, settings.ACCESS_TOKEN_SECRET) params = {} req = twitter.get( https //api.twitter.com/1.1/statuses/home_timeline.json , params = params) #pprint.pprint(req.text) timeline = json.loads(req.text) textForSave = json.dumps(timeline , ensure_ascii=False) with open( gottimeline.json , wb ) as fh fh.write(textForSave.encode( utf-8 )) gettimeline.py CONSUMER_KEY = XXXXXXXX CONSUMER_SECRET = XXXXXXXX ACCESS_TOKEN = XXXXXXXX ACCESS_TOKEN_SECRET = XXXXXXXX settings.py # coding utf-8 import pprint import json theContextTape = [] theContextTape.append( { condition [ 午前 ] , intent { text おはようございます。 } } ) theContextTape.append( { condition [ 昼 , 昼 ] , intent { text こんにちは。 } } ) theContextTape.append( { condition [ 昼 ] , intent { text どうも。 } } ) theContextTape.append( { condition [ 夜 ] , intent { text こんばんは。 } } ) #pprint.pprint(theContextTape) theContext = [ 昼 , verval , 13時 ] #textForSave = json.dumps(theContext , sort_keys=True, ensure_ascii=False) #with open( Context.json , wb ) as fh # fh.write(textForSave.encode( utf-8 )) # open json ContextTape with open( ContextTape.json ) as fh theContextTape = json.loads(fh.read(), utf-8 ) # open json Context with open( Context.json ) as fh2 theContext = json.loads(fh2.read(), utf-8 ) def ContextToIntent ( Context , ContextTape ) theAnswer = { condition [ ] , intent { text } } for theTape in ContextTape if (set(theTape[ condition ]) = set( Context )) #pprint.pprint(theTape[ intent ]) if ( len(theTape[ condition ]) = len(theAnswer[ condition ]) ) theAnswer = theTape return theAnswer answer = ContextToIntent( theContext , theContextTape ) pprint.pprint(answer) contexttape2017.py [ 夜 , verval , 13時 ] Context.json [ { condition [ 午前 ], intent { text おはようございます。 }}, { condition [ 昼 , 昼 , 昼 , 昼 ], intent { text こんにちは。 }}, { condition [ 昼 ], intent { text どうも。 }}, { condition [ 夜 ], intent { text こんばんは。 }} ] ContextTape.json [upgm@localhost ~]$ 20171013 17 06 Cent OS 64 ビット_for_meacb-padic-NEologdで稼動中。 # coding utf-8 import pprint import json theContextTape = [] theContextTape.append( { condition [ 午前 ] , intent { text おはようございます。 } } ) theContextTape.append( { condition [ 昼 , 昼 ] , intent { text こんにちは。 } } ) theContextTape.append( { condition [ 昼 ] , intent { text どうも。 } } ) theContextTape.append( { condition [ 夜 ] , intent { text こんばんは。 } } ) #pprint.pprint(theContextTape) theContext = [ 昼 , verval , 13時 ] #textForSave = json.dumps(theContext , sort_keys=True, ensure_ascii=False) #with open( Context.json , wb ) as fh # fh.write(textForSave.encode( utf-8 )) # open json ContextTape with open( ContextTape.json ) as fh theContextTape = json.loads(fh.read(), utf-8 ) # open json Context with open( Context.json ) as fh2 theContext = json.loads(fh2.read(), utf-8 ) def ContextToIntent ( Context , ContextTape ) theAnswer = { condition [ ] , intent { text } } for theTape in ContextTape if (set(theTape[ condition ]) = set( Context )) #pprint.pprint(theTape[ intent ]) if ( len(theTape[ condition ]) = len(theAnswer[ condition ]) ) theAnswer = theTape return theAnswer answer = ContextToIntent( theContext , theContextTape ) pprint.pprint(answer) contexttape2017.py [ 夜 , verval , 13時 ] Context.json [ { condition [ 午前 ], intent { text おはようございます。 }}, { condition [ 昼 , 昼 , 昼 , 昼 ], intent { text こんにちは。 }}, { condition [ 昼 ], intent { text どうも。 }}, { condition [ 夜 ], intent { text こんばんは。 }} ] ContextTape.json [upgm@localhost ~]$ ls -al |grep json -rw-rw-r--. 1 upgm upgm 27 10月 13 17 06 Context.json -rwxrw-rw-. 1 upgm upgm 306 10月 13 16 54 ContextTape.json 20171013 16 30 # coding utf-8 import pprint import json theContextTape = [] theContextTape.append( { condition [ 午前 ] , intent { text おはようございます。 } } ) theContextTape.append( { condition [ 昼 , 昼 ] , intent { text こんにちは。 } } ) theContextTape.append( { condition [ 昼 ] , intent { text どうも。 } } ) theContextTape.append( { condition [ 夜 ] , intent { text こんばんは。 } } ) print( テスト中 ) pprint.pprint(theContextTape) theContext = [ 昼 , verval , 13時 ] textForSave = json.dumps(theContextTape , sort_keys=True, ensure_ascii=False, indent=2) with open( ContextTape.json , wb ) as fh fh.write(textForSave.encode( utf-8 )) def ContextToIntent ( Context , ContextTape ) print( test ) theAnswer = { condition [ ] , intent { text } } for theTape in ContextTape pprint.pprint(theTape[ condition ]) if (set(theTape[ condition ]) = set( Context )) pprint.pprint(theTape[ intent ]) if ( len(theTape[ condition ]) = len(theAnswer[ condition ]) ) theAnswer = theTape return theAnswer answer = ContextToIntent( theContext , theContextTape ) pprint.pprint(answer) 20171013 16 00 # coding utf-8 import pprint import json theContextTape = [] theContextTape.append( { condition [ 午前 ] , intent { text おはようございます。 } } ) theContextTape.append( { condition [ 昼 , 昼 ] , intent { text こんにちは。 } } ) theContextTape.append( { condition [ 夜 ] , intent { text こんばんは。 } } ) print( テスト中 ) pprint.pprint(theContextTape) theContext = [ 昼 , verval , 13時 ] textForSave = json.dumps(theContextTape , sort_keys=True, ensure_ascii=False, indent=2) with open( ContextTape.json , wb ) as fh fh.write(textForSave.encode( utf-8 )) def ContextToIntent ( Context , ContextTape ) print( test ) for theTape in ContextTape pprint.pprint(theTape[ condition ]) if (set(theTape[ condition ]) = set( Context )) pprint.pprint(theTape[ intent ]) ContextToIntent( theContext , theContextTape ) # coding utf-8 import pprint import json theContextTape = [] theContextTape.append( { condition [ 午前 ] , intent { text おはようございます。 } } ) theContextTape.append( { condition [ 昼 , 昼 ] , intent { text こんにちは。 } } ) theContextTape.append( { condition [ 昼 ] , intent { text どうも。 } } ) theContextTape.append( { condition [ 夜 ] , intent { text こんばんは。 } } ) #pprint.pprint(theContextTape) theContext = [ 昼 , verval , 13時 ] #textForSave = json.dumps(theContext , sort_keys=True, ensure_ascii=False) #with open( Context.json , wb ) as fh # fh.write(textForSave.encode( utf-8 )) # open json ContextTape with open( ContextTape.json ) as fh theContextTape = json.loads(fh.read(), utf-8 ) # open json Context with open( Context.json ) as fh2 theContext = json.loads(fh2.read(), utf-8 ) def ContextToIntent ( Context , ContextTape ) theAnswer = { condition [ ] , intent { text } } for theTape in ContextTape if (set(theTape[ condition ]) = set( Context )) #pprint.pprint(theTape[ intent ]) if ( len(theTape[ condition ]) = len(theAnswer[ condition ]) ) theAnswer = theTape return theAnswer answer = ContextToIntent( theContext , theContextTape ) pprint.pprint(answer) contexttape2017.py [ 夜 , verval , 13時 ] Context.json [ { condition [ 午前 ], intent { text おはようございます。 }}, { condition [ 昼 , 昼 , 昼 , 昼 ], intent { text こんにちは。 }}, { condition [ 昼 ], intent { text どうも。 }}, { condition [ 夜 ], intent { text こんばんは。 }} ] ContextTape.json [upgm@localhost ~]$