約 949,248 件
https://w.atwiki.jp/trpg_tools/pages/17.html
SkypeAPIって何? SkypeAPIってどんなもの? SkypeAPIを使って出来ること。 SkypeAPI関連の資料 SkypeAPI for Java SkypeAPIって何? SkypeAPIってどんなもの? SkypeAPIを使って出来ること。 SkypeAPI関連の資料 「APIを使えばSkypeにより便利な機能を拡張できます」pdf http //skypejournal.com/downloads/2005/001/SJ200500101jp_WorkingWithTheSkypeAPI.pdf 「Skype APIとその使い方」pdf http //share.skype.com/media/1.2_api_doc_jp.pdf 「API reference Skype API 1.4」 http //share.skype.com/developer_zone/documentation/api_reference 「Introduction to the skype API」Video http //share.skype.com/directory/introduction_to_the_skype_api/view/ 「Training Chanell」Video http //share.skype.com/directory/training_channel/ 「Skype Public API Forum」 http //forum.skype.com/viewforum.php?f=16 「Skypeはどこに行く?」インタビュー記事 http //itpro.nikkeibp.co.jp/article/DENWA/20051026/223477/?ST=denwa_print SkypeAPI for Java SkypeAPIをSWTの機能またはJNIを使ってたたくことの出来るJavaクラスライブラリ。 久納孝治さんが個人的に作成されたものが、Skype社公認のオフィシャルAPIなったものだそうです。 Skype API For Java() http //skype.sourceforge.jp/index.php?Skype%20API%20For%20Java%20%28Japanese%29
https://w.atwiki.jp/api_programming/pages/171.html
http //developer.garmin.com/connect-iq/programmers-guide/communication/ Widget と Apps は Bluetooth Low Energy (BLE) を用いてスマホ(携帯電話)と通信可能。 スマホはデバイスとデータを共有したり、他のアプリケーションやネットとの橋渡しとして振る舞う。 これにより、スマホがウェアラブルウェブの一部となる。 デバイスとスマホの通信には、やや複雑なところがある。 例えば、時間に関する通信が行われている間に時計のアプリは落ちてしまったり、時計側のアプリがアクティブでない時に携帯のアプリが情報を送信しようしとしたり、といった場合だ。 開発者がこういった問題を簡単に理解できるようにするため、Monkey C は low-level インターフェースを公開せず、代わりに high-levelアプローチ(ソケットメタファではなくメールボックスメタファを)採用している。 メッセージは、情報の小包としてとして作成され、デバイス間を行き来する。 各アプリは受け取るメールボックスを持っていて、新しいメッセージが到着するとイベントを開始する。 JSONや画像のリクエストをつくる high-levelインターフェースもある。 これにより、開発者が独自のスマホアプリを書くことなく、ウェアラブルアプリを開発するオブションを提供している。 Approaches Monkey C はスマホ(携帯電話)との通信手段を2つ準備している。 Germin Connect Mobile Direct Messaging Garmin Connect Mobile Monkey C は Germin Connect Mobile を通じて基本的なウェブサービスを呼び出すことができる。 module Communications { // ウェブのプロクシとして Garmin Connect Mobile を使う方法には makeJsonRequest() を使う // リクエストは非同期で行われる。リクエストが帰ってきたときにレスポンスコールバックが呼ばれる // @param [String] url リクエストURL // @param [Dictionary] parameters GETリクエストやPOSTリクエストでセットされる、キーと値。null も可。 // @param [Dictionary] options オプション。null も可。 // @option options [Number] The HTTP メソッドmethod of the request. HTTP_REQUEST_METHOD_XXX value. // @option options [Dictionary] headers A Dictionary of HTTP headers to include in the request. // @option headers [Number] "Content-Type" In the dictionary of HTTP headers, content // type can be specified using a REQUEST_CONTENT_TYPE_XXX value. If the content type // is not specified, it will default to "appllication/json" for GET and DELETE requests, // and will default to "application/x-www-form-urlencoded" for POST and PUT requests. // This option is only needed for overriding these defaults. // @param [Method] responseCallback This is a callback in the format function // responseCallback(responseCode, data); responseCode has the server response code, and // data contains a Dictionary of content if the request was successful. function makeJsonRequest( url, parameters, options, responseCallback ); // These are the supported HTTP methods enum { HTTP_REQUEST_METHOD_GET = 1, HTTP_REQUEST_METHOD_PUT = 2, HTTP_REQUEST_METHOD_POST = 3, HTTP_REQUEST_METHOD_DELETE = 4 } } These APIs expose JSON requests and image requests as very straightforward APIs for making REST API calls. The JSON calls are converted to serialized Monkey C data and sent across the BLE pipe. Direct Messaging WatchApp の中には、 Garmin Connect Mobile を通す代わりに直接スマホアプリと直接通信したいものもある。 このような場合に、Monkey C は「メールボックス」の概念を提供する。 各Appはメッセージを受け取る独自のメールボックスを持っており、メッセージを受け取った際にはイベントを発生させる。 //! メールボックスからメッセージを読み出すためには MailboxIterator を用いる class MailboxIterator { //! next() メールボックスから次のメッセージを取得する //! @return Message content (メッセージがなければNull) function next(); } //! getMailbox() アプリのメールボックスの MailboxIterator を取得する //! @return [MailboxIterator] メールボックスの MailboxIterator function getMailbox(); //! SetMailboxLister( listener) メールボックスのイベント用のリスナーを追加する。 //! リスナーメソッド は、新しいメッセージを受け取るたびに呼び出される //! @param [Method] listener Callback in the format function listener(iterator). //! iterator is the mailbox iterator for the app. function setMailboxListener( listener ); // emptyMailbox() メールボックスを空にする function emptyMailbox(); //! BLEリンクを通じて、データを送る //! @param [Object] 送られるオブジェクト //! @param [Dictionary] options Additional transmit options (TBD) //! @param [ConnectionListener] listener ConnectionListener classの拡張 function transmit( content, options, listener ); //! Listener class for transmit class ConnectionListener { //! onError() 通信操作がエラーとなった場合に呼び出されるコールバック function onError(); //! onError() 通信操作が完了した場合に呼び出されるコールバック function onComplete(); } Mobile SDK Downloads ConnectIQ Mobile SDK は ConnectIQ Developer SDK とは別にリリースされており、iOS と Android で利用できる。 Mobile SDK には幾つかの種類がある。 Android BLE iOS BLE Android ADB BLE は Android, iOS を用いたデバイスで通信できるアプリの開発をサポートする。 ADB は ConnectIQ シミュレータでのテストで用いられる。 スマホのプラットフォームにあったバージョンをダウンロードするための情報は、Garmin Developer サイトで見つかられるかも。 BLE Simulation Over Android Debug Bridge ConnectIQ シミュレータを用いるときには、ADBを用いている Android デバイスで動いているアプリと通信することができる。 これにより、実際の BLE スピードに近いパフォーマンスでシミュレートすることができる。 The ADB edition of the Android Mobile SDK and companion app is required to use ADB for testing. Here’s how to enable the companion to communicate over ADB Connect the phone to the PC running the simulator via USB Have USB debugging enabled on the Android handset Obtain an instance of ConnectIQ using getInstance( IQCommProtocol.ADB_SIMULATOR ) Optionally call setAdbPort( int port ) to set a specific port to use for communication (the default port is 7381) Call initialize() To allow the simulator to communicate over ADB, forward the TCP port to the Android device in a terminal or console adb forward tcp 7381 tcp 7381 Note that this command will need to be reissued for each connected Android device, or if a device is disconnected and re-connected. Once your app is started on the phone, connect it to the simulator by clicking the Connection menu and selecting Start (CTRL-F1). The Connect IQ apps in the simulator will now be able to communicate with your device via the Communications APIs over ADB.
https://w.atwiki.jp/matlab/pages/18.html
テキストラベルを表示する llSetText(string text, vector color, float alpha) 「Touch」の文字を変える llSetTouchText(string text) 「Sit Here」の文字を変える llSetSitText(string text) テクスチャ色を変える llSetColor(vector color, integer face) テクスチャを変える llSetTexture(string texture, integer side) テクスチャを動かす パーティクルパーティクルを出す llParticleSystem(list parameters) 在庫リスト(inventory)オブジェクトを与える llGiveInventory(key destination, string inventory) UI/コミュニケーションしゃべる IMを送る llInstantMessage(key user, string message) ダイアログを表示する llDialog(key id, string message, list buttons, integer chat_channel) 聞き耳をたてる integer llListen(integer channel, string name, key id, string msg) 聞き耳を終了する llListenRemove(integer number) 移動移動する llMapDestination(string sim_name, vector position, vector lookat) サウンド再生する llPlaySound(string sound, float volume) 事前読み込みする llPreloadSound(string sound) ループ再生する llLoopSound(string sound, float volume) ループ再生を止める llStopSound() 決定/感知所有者のUUIDを取得する key llGetOwner() 感知したアバター/オブジェクトのUUIDを取得する key llDetectedKey(integer number) 力学回転させる llTargetOmega(vector axis, float spinrate, float gain) その他URLを開く llLoadURL(key avatar_id, string message, string url) 参考 テキスト ラベルを表示する llSetText(string text, vector color, float alpha) llSetText("TEST01\nTEST02", 1.0,0.0,0.0 ,1.0); text 表示する文字 color 文字色 alpha 透明度(0~1で0で見えなくなる) 「Touch」の文字を変える llSetTouchText(string text) llSetTouchText("TOUCH"); text 表示する文字 結構狭いので注意。9文字まで。それ以降は切れる。 「Sit Here」の文字を変える llSetSitText(string text) llSetSitText("SIT"); text 表示する文字 結構狭いので注意。9文字まで。それ以降は切れる。 テクスチャ 色を変える llSetColor(vector color, integer face) llSetColor( 1,0,0 , ALL_SIDES); color 色 face 変更面 テクスチャを変える llSetTexture(string texture, integer side) llSetTexture("MyTexture",ALL_SIDES); texture テクスチャ名 face 変更面 テクスチャを動かす llSetTextureAnim(integer mode, integer side, integer x_frames, integer y_frames, float start, float length, float rate); 複雑なので、またあとで調査。 パーティクル パーティクルを出す llParticleSystem(list parameters) llParticleSystem([PSYS_PART_FLAGS, PSYS_PART_WIND_MASK | PSYS_PART_EMISSIVE_MASK, PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_EXPLODE, PSYS_PART_START_COLOR, 1,0,0 ]); parameters パラメータ 複雑なので、またあとで調査。 在庫リスト(inventory) オブジェクトを与える llGiveInventory(key destination, string inventory) llGiveInventory(llDetectedKey(0), "TEST"); destination 送り先のUUID inventory オブジェクト名 権限に注意。 不正利用されたくなければ、①コピー可/②転送不可にしておく。 ※SLの方針で①②同時に不可にはできないが、転送不可にしておけばいくらコピーされてもOK。 UI/コミュニケーション しゃべる llWhisper(0, "Whisper"); llSay(0, "Say"); llShout(0, "Shout"); llOwnerSay("OwnerSay"); channel チャネル IMを送る llInstantMessage(key user, string message) llInstantMessage(llGetOwner(), "CALL YOU!!"); user アバターのUUID message メッセージ ダイアログを表示する llDialog(key id, string message, list buttons, integer chat_channel) llDialog(llDetectedKey(0), "Select one color from among these.", ["White","Black"], 19780419); id 対象のアバターのUUID message 表示するメッセージ buttons 選択肢 chat_channel 結果を受け取るチャネル 聞き耳をたてる integer llListen(integer channel, string name, key id, string msg) Handle = llListen(19780419, "", NULL_KEY, ""); channel チャネル name アバター/オブジェクトの名前 id アバター/オブジェクトのUUID msg 発したメッセージ 実際に聞くのはlistenイベントで処理する。 チャットは0チャネル、チャットで0以外のチャネルでしゃべるには「/19780419 発言」のように打つ。 聞き耳を終了する llListenRemove(integer number) llListenRemove(Handle); number ハンドルID 移動 移動する llMapDestination(string sim_name, vector position, vector lookat) llMapDestination( "Tiny Kingdom", 83, 18, 26 , 83, 18, 26 ); sim_name SIM名 position 位置 lookat 使われていない(positionと同じにしておく?) サウンド 再生する llPlaySound(string sound, float volume) llPlaySound("MySound",1.0); sound サウンド名 volume ボリューム(0~1) 事前読み込みする llPreloadSound(string sound) llPreloadSound("MySound"); sound サウンド名 ループ再生する llLoopSound(string sound, float volume) llPlaySound("MySound",1.0); sound サウンド名 volume ボリューム(0~1) ループ再生を止める llStopSound() llStopSound() 決定/感知 所有者のUUIDを取得する key llGetOwner() Handle = llListen(0, "", llGetOwner(), ""); 感知したアバター/オブジェクトのUUIDを取得する key llDetectedKey(integer number) llGiveInventory(llDetectedKey(0), "TEST"); number インデックス 同時に発生しない限り0でよい。 以下のイベントで有効。 タッチ touch,touch_start,touch_end 衝突 collision,collision_start,collision_end 感知 sensor 力学 回転させる llTargetOmega(vector axis, float spinrate, float gain) llTargetOmega( 0,0,1 ,PI,3); //180度/秒回転する axis 回転方向(基本絶対値1、このベクトルの絶対値は速さに影響するので注意。絶対値2なら2倍の速度) spinrate 回転速度(ラジアン/秒,2*PIが360度) gain 強さ その他 URLを開く llLoadURL(key avatar_id, string message, string url) 確認ダイアログがでる。 llLoadURL(llDetectedKey(0), "Flame on!", "http //www.google.com/"); avatar_id 対象のアバターのUUID message ダイアログに表示するメッセージ url URL 参考 良いもの BlackSheep-LSL@Wiki 一覧系 lslwiki lslwikijp アイピロ LSL関数イベント一覧表 Tips集 アイピロ(多い) セカンドライフJAPAN(少ない) セカンドライフの歩き方(少ない) セカンドライフス(少ない) メモ Makapu セカンドライフ LSLメモ(ちょっと分かってきたら読む) 後で整理 スクリプト覚書
https://w.atwiki.jp/opengl/pages/123.html
Win32API の PlaySound を使用して .wav を再生します。 glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE,GLUT_ACTION_GLUTMAINLOOP_RETURNS); を 指定すると freeglut の場合、 glutMainLoop(); から戻ってくる事が可能です。 いつも解放はOSまかせにしている管理人ですが、今回は解放コードも記述しました。 ファイル main.cpp sample.wav (自分で用意して下さい) main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #pragma comment(lib, winmm.lib ) #include windows.h #include mmsystem.h #include GL/freeglut/freeglut.h #include stdio.h #define WIDTH 320 #define HEIGHT 240 LPCWSTR Sound; class GLFONT { public HFONT Hfont; HDC Hdc; GLFONT(wchar_t *fontname, int size); void DrawStringW(int x,int y,wchar_t *format, ...); }; //コンストラクタ フォント作成 GLFONT GLFONT(wchar_t *fontname, int size) { Hfont = CreateFontW( size, //フォント高さ 0, //文字幅 0, //テキストの角度 0, //ベースラインとx軸との角度 FW_REGULAR, //フォントの太さ FALSE, //イタリック体 FALSE, //アンダーライン FALSE, //打ち消し線 SHIFTJIS_CHARSET, //文字セット OUT_DEFAULT_PRECIS, //出力精度 CLIP_DEFAULT_PRECIS, //クリッピング精度 ANTIALIASED_QUALITY, //出力品質 FIXED_PITCH | FF_MODERN, //ピッチとファミリー fontname); //書体名 Hdc = wglGetCurrentDC(); SelectObject(Hdc, Hfont); } //ワイド文字列の描画 void GLFONT DrawStringW(int x,int y,wchar_t *format, ...) { wchar_t buf[256]; va_list ap; int Length=0; int list=0; //ポインタがNULLの場合は終了 if ( format == NULL ) return; //文字列変換 va_start(ap, format); vswprintf_s(buf, format, ap); va_end(ap); Length = wcslen(buf); list = glGenLists(Length); for( int i=0; i Length; i++ ){ wglUseFontBitmapsW(Hdc, buf[i], 1, list + (DWORD)i); } glDisable(GL_LIGHTING); glRasterPos2i(x, y); //ディスプレイリストで描画 for( int i=0; i Length; i++ ) { glCallList(list + i); } glEnable(GL_LIGHTING); //ディスプレイリスト破棄 glDeleteLists(list, Length); list = 0; Length = 0; } GLFONT *font; void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor4f(0.0f, 0.0f, 1.0f, 1.0f); font- DrawStringW(10,120,L PlaySoundで再生しています。 ); glutSwapBuffers(); } void idle(void) { glutPostRedisplay(); } void Init(){ glClearColor(1.0, 1.0, 1.0, 1.0); glOrtho(0, WIDTH, HEIGHT, 0, -1, 1); font = new GLFONT(L MS明朝 , 24); DWORD dwReadSize; HANDLE FileHandle=CreateFile(L sample.wav ,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if(FileHandle==INVALID_HANDLE_VALUE){ MessageBox(NULL,L ファイルが開けません ,L ERROR!! ,MB_OK); } DWORD dwFileSize=GetFileSize(FileHandle,NULL); Sound=(LPCWSTR)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,dwFileSize); ReadFile(FileHandle,(LPVOID)Sound,dwFileSize, dwReadSize,NULL); CloseHandle(FileHandle); PlaySound(Sound,NULL,SND_MEMORY | SND_ASYNC | SND_LOOP); } void Release(){ PlaySound(NULL,NULL,0); HeapFree(GetProcessHeap(),0,(LPVOID)Sound); MessageBox(NULL,L 解放して終了します。 ,L END ,MB_OK); PostQuitMessage(0); } int main(int argc, char *argv[]) { glutInitWindowPosition(100, 100); glutInitWindowSize(WIDTH, HEIGHT); glutInit( argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutCreateWindow( wavを再生 ); glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE,GLUT_ACTION_GLUTMAINLOOP_RETURNS);//メインループから戻ってくる設定 glutDisplayFunc(display); glutIdleFunc(idle); Init(); glutMainLoop(); Release(); return 0; }
https://w.atwiki.jp/tomokazu0525/pages/32.html
最終更新日時2011-09-29 ここを編集 ■目次 win32とは win32 API ×VBA ページフッタこのページの1階層上のページ このページの1階層下のページ このページに含まれるタグ このページへのアクセス数 ■本文 win32とは Win32とは - 意味/解説/説明/定義 : IT用語辞典 32ビットOSだから、win32なわけで、最近の64ビットOSだとwin64。 なお、出版物をみると、どうやら基本的には、VisualC++などで動かすことを想定されているのかもしれない。 VBAで動かす方法もあるが、これは出版物少ない。わずかに大村あつし氏のデータ販売があるぐらい。 win32 API ×VBA Excel VBAでラクラクAPIプログラミング コメント:あまりセンスの感じられないページの作りなので、怪しいサイトに感じますが、 よく見ると、「大村あつし & ネットフェニックス」と書いてあります。 大村あつし氏といえば、VBAの『かんたんプログラミング』シリーズの著者です。 1年ほど前に購入しました。当然、データは見れましたし、今のところ不正請求もありません(笑) ここを編集 ページフッタ このページの1階層上のページ このページの1階層下のページ このページに含まれるタグ API VBA win32 このページへのアクセス数 今日: - 昨日: - これまで合計: -
https://w.atwiki.jp/otya128/pages/51.html
@WINBTN ボタンを表示させるサブルーチン ボタンの幅と高さは文字によって自動で調整されます。 引数 WINBSTR$ 表示する文字 WINBX X座標 WINBY Y座標 返り値 WINBTNF 押されたらTRUE サンプル WINSTR$="CLICK" WINBX=0 WINBY=0 GOSUB@WINBTN IF WINBTNF==1 THEN BEEP
https://w.atwiki.jp/tamotech/pages/33.html
フィルタ フィルタ概要 登場人物javax.servlet.Filterインタフェース javax.servlet.FilterConfigインタフェース javax.servlet.FilterChainインタフェース web.xmlの設定 概要 リクエストおよびレスポンスに対して、リソース(サーブレット、JSP、HTML)での処理の前および後に何らかの処理を行うオブジェクトのこと。 サーブレット2.3から標準の機能となった。 登場人物 javax.servlet.Filterインタフェース フィルタクラスが実装するインタフェース。 init(javax.servlet.FilterConfig)メソッドを実装する。 フィルタが初めて使用されるときに呼び出される。フィルタ処理の初期処理。 doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)を実装する。 フィルタ処理の中身。 destroy()メソッドを実装する。 フィルタが破棄されるときに呼び出される。フィルタ処理の後処理。 javax.servlet.FilterConfigインタフェース Filter#initの引数に指定されるインタフェースで、web.xmlに記述した初期化パラメータを取得する際などに使用する。 getFilterName()メソッド フィルタ名(web.xmlで指定しているもの)を返す。 getInitParameter(String)メソッド 指定した初期化パラメータ名に対応する値を返す。 getInitParameterNames()メソッド web.xmlで指定している初期化パラメータ名をEnumerationで返す。 getServletContext()メソッド 実行されているServletContextオブジェクトを返す。 javax.servlet.FilterChainインタフェース フィルタ処理をチェインして(連続して)呼び出すときに使用される。Filter#doFilterの引数に指定される。 doFilter(ServletRequest, ServletResponse)メソッド フィルタ処理の中身。 web.xmlの設定 filter タグと filter-mapping タグ filter filter-name フィルタ名 /filter-name filter-class フィルタクラス(フルパッケージ) /filter-class /filter filter-mapping filter-name フィルタ名 /filter-name url-pattern /*(とか) /url-pattern /filter-mapping サーブレットの書き方と同じですな。。
https://w.atwiki.jp/sevenlives/pages/1675.html
要素セレクタ? IDセレクタ? クラスセレクタ? 子セレクタ? 子孫セレクタ? ユニバーサルセレクタ? グループセレクタ? 隣接セレクタ? 間接セレクタ?
https://w.atwiki.jp/api_programming/pages/217.html
下位ページ Content Pythonでウェブスクレイピング ライブラリの使用BeautifulSoup urllib3リクエストの方法デコード Httpレスポンスコンテナ seleniumwebdriver ページを取得する(開く) 要素の取得idで classで テキストを取得する ヘッドレス化 2段階認証が必要な必要なサイトを何とかするとりあえず認証作業は手作業で行って、途中から自動にするWebDriverWait expected_conditions 要素が表示されたら発火 ログイン情報に cookie を使用するcookie 情報を書き出す cookie 情報を読み込む Pythonでウェブスクレイピング ライブラリの使用 BeautifulSoup urllib3 リクエストの方法 基本?PoolManagerインスタンスを使って、操作を行う PoolManager で request を実行するHttpレスポンスオブジェクトを返すstatus header data などなど import urllib3 http = urllib3.PoolManager() r = http.request( GET , http //httpbin.org/robots.txt ) r.status 200 r.data User-agent *\nDisallow /deny\n デコード r.data.decode( utf-8 ) Httpレスポンスコンテナ Httpレスポンスコンテナ selenium JavaScriptも動かしてページを表示させているページだったので、ブラウザも一旦起動する方法をとった。その際に使った。 https //www.seleniumhq.org/ browser を動かせる状態にする ブラウザ上の要素を取得する 走査を加える 2,3を繰り返す webdriver ブラウザを開く(操作する?)ためのドライバーも準備(selenuimのぺーじからダウンロードした) 自動でパスが通る場所においていなかったので、バスを通す from selenium import webdriver url = "http //www.....com" # version 2.0 は webdriver付属、みたいに書いてあったのだが・・・ driver = webdriver.Firefox(executable_path="C /Users/.../geckodriver.exe") driver.get(url) print(driver.find_element_by_id("zansu6").text) driver.close() ページを取得する(開く) https //www.seleniumhq.org/docs/03_webdriver.jsp#fetching-a-page driver.get(url) 要素の取得 https //www.seleniumhq.org/docs/03_webdriver.jsp#locating-ui-elements-webelements idで classで cheeses = driver.find_elements_by_class_name("cheese") テキストを取得する element.text textプロパティで取得できる。このとき、タグは含んでいない。 Getting text values - Selenium ヘッドレス化 データを取得するだけなら、ウィンドウを開く必要はない。「ヘッドレスブラウザ」は画面を表示しないブラウザ。 Chrome や Firefox はヘッドレスブラウザとして動かすことができる。 Firefoxの場合 from selenium.webdriver.firefox.options import Options # selenium と geckodriver を つかって、firefox を開く(ヘッドレス) options = Options() options.add_argument("--headless") driver = webdriver.Firefox(executable_path="/PathOfFirefox/geckodriver.exe", \ firefox_options=options) 2段階認証が必要な必要なサイトを何とかする やりたかったこと自分があるサイトに構築している、複数ページに渡るリストを取得すること 現状リスト取得に対してはAPIが公開されていない。 リストは単純な追加作業ばかりでなく、途中で部分的に削除することもある しかしながら、そのサイトは「独自のアカウント」がないgoogleだったりYahooだったりDocomoだったりのアカウントを使っての登録が必須 自分が使っているgoogleのアカウントで入ろうとすると、スマホ端末での認証が必要となり、ウェブの範囲を超えている。 思いつく、「ステップ」としては次くらいか? とりあえず認証を手作業でやる 一度認証できたら、cookieなどで記憶させて次回以降のログインを飛ばす (最初から自動ログインにする←2ができていたら、多分、この作業はあまり意味がない) とりあえず認証作業は手作業で行って、途中から自動にする 作業の途中からseleniumに任せる方法がわからなかったので、最初はログインの認証画面に遷移されたタイミングで import time time.sleep(60) sleepメソッドで止めようとしたが、「確立された接続が。。。。」というエラーメッセージで止まってしまう。さらに言えば、selenium IDEで作業を追ってみても、「次へ」ボタンがうまく特定できない。この辺は実力の無さか? WebDriverWait WebDriverWaitで作業を止めて、作業ができる状態になったら、再スタートするようにした。 from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC ... wait = WebDriverWait(driver,120) wait.until(EC.title_contains("リスト")) 流れは ログインができるページに飛ぶ(自動) google認証のページに飛ぶ(手動) googleのアカウント名を入力→確認ボタン(手動) googleのアカウントのパスワードを入力→確認ボタン(手動) スマホで2段階認証(当然手動) リダイレクト トップページ→目的のページへのリンククリック(手動) 目的にページが開かれたら、発火(ここから自動化) 認証を済ませる。そのあと、リストのあるページに行く。 まだまだ自動化できる部分もあるが、エラーもぼちぼち出て、面倒になって、この方法に。 wait.until(value) value が真になったら発火させる 何で発火させるかは、expected_conditions を使って指定している。 本来の使い方は、動的に表示データを生成するようなページに向けての模様。 使い方の分類としては明示的な待機になるのか?「何を待つか」に関して、準備されているものもあれば、独自に作ることもできるらしい。 参考サイト 5. Waits - Selenium with Python https //kurozumi.github.io/selenium-python/waits.html https //titirobo-develop.hatenablog.jp/entry/2018/03/19/202207 expected_conditions 要素が表示されたら発火 要素の表示で使い場合は、 EC.presence_of_element_located https //selenium-python.readthedocs.io/api.html#selenium.webdriver.support.expected_conditions.presence_of_element_located selenium.webdriver.common.by ログイン情報に cookie を使用する 普段はログイン作業を通らずにリストが表示される、ということは、クッキーにセッション情報か何かが残っているわけで、一度ログインをすればクッキーが使えるはず。 ※最初からログインした状態のブラウザから読み出した cookie 情報でログインすればよかったのだが、後述のミスで、cookie 情報の読み込みができなかった。。。 cookie 情報を書き出す driver.get_cookies() 複数クッキーがあるかもしれないので、読み出した後 for か何かで回したものを print すればOK .get_cookies() - selenium driver.get_cookie(name) もあるが、nameがわからないと呼び出せないので、上が良い? cookie 情報を読み込む driver.add_cookie(cookie) cookie の情報としては、dict 型で記述した cookie を準備しておいて、読み込ませる。 読み込ませる(書き込む)タイミングは、関連付けるドメインで get した後。まだ開いていない状態で add_cookie をすると Document is cookie-abverse とエラーが出て止まってしまう。 .add_cookie(dict)
https://w.atwiki.jp/opengles/pages/23.html
OpenGL® ES is a software interface to graphics hardware. The interface consists of a set of procedures and functions that allow a programmer to specify the objects and operations involved in producing high-quality graphical images, specifically color images of three-dimensional objects. [n.n.n] refers to sections and tables in the OpenGL ES 2.0 specification. [n.n.n] refers to sections in the OpenGL ES Shading Language 1.0 specification. Specifications are available at www.opengl.org/registry/gles