2012 keynote-2

235 views
165 views

Published on

フォーディー・デベロッパー・カンファレンス in 東京秋葉原
Part 3(2012年)

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
235
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

2012 keynote-2

  1. 1. ソースツールキット
  2. 2. ソースツールキット 新しいコマンドテーマ (カテゴリー)
  3. 3. METHOD METHOD METHOD METHOD METHOD METHOD METHOD METHOD METHOD METHOD GET PATHS RESOLVE PATH Get path GET NAMES GET NAMES FORM GET PATHS FORM GET MODIFICATION DA SET ACCESS MODE GET FOLDERS OPEN PATH ソースツールキット 新しいコマンドテーマ (カテゴリー)
  4. 4. ソースツールキット •メソッド
  5. 5. ソースツールキット • メソッド ‣ 全タイプ
  6. 6. ソースツールキット • メソッド ‣ 全タイプ プロジェクトメソッド フォームメソッド オブジェクトメソッド トリガ データベースメソッド
  7. 7. ソースツールキット • メソッド ‣ 全タイプ ‣ Get/Set
  8. 8. ソースツールキット • メソッド ‣ 全タイプ ‣ Get/Set ‣ パス
  9. 9. ソースツールキット • メソッド ‣ 全タイプ ‣ Get/Set ‣ パス "[Invoices]/input_form/save" "[trigger]/Invoices” "[databasemethod]/onSystemEvent"
  10. 10. ソースツールキット •メソッド •コンテキスト
  11. 11. ソースツールキット •メソッド コンテキスト ‣ フォルダ •
  12. 12. ソースツールキット •メソッド コンテキスト ‣ フォルダ • ‣ フォーム名
  13. 13. ソースツールキット •メソッド コンテキスト ‣ フォルダ • ‣ フォーム名 ‣ フィルタリング
  14. 14. ソースツールキット •メソッド •コンテキスト
  15. 15. ソースツールキット •メソッド •コンテキスト •コメント
  16. 16. ソースツールキット •メソッド •コンテキスト •コメント 属性 •
  17. 17. ソースツールキット •メソッド •コンテキスト •コメント 属性 •
  18. 18. ソースツールキット •メソッド •コンテキスト •コメント 属性 • •*
  19. 19. ソースツールキット •メソッド •コンテキスト •コメント 属性 • •*
  20. 20. ソースツールキット •メソッド •コンテキスト •コメント 属性 • •* ! リモートモード でもOK!!
  21. 21. ソースコードの取り出し • ソースツールキッド
  22. 22. ソースコードの取り出し • ソースツールキッド • 任意のバージョンコントロールシステム
  23. 23. ソースコードの取り出し • ソースツールキッド • 任意のバージョンコントロールシステム • バージョン管理 vs 履歴
  24. 24. ソースツールキット 望み通りの開発ツールが設計できます。
  25. 25. ソースツールキット 望み通りの 素晴らしい 開発ツールが設計できます。
  26. 26. 新しいWebサーバー
  27. 27. 新しいWebサーバー ベンチマーク
  28. 28. _ _ _ 一 ど い , て 体 っ ? な の う る 新しいWebサーバー ベンチマーク な 驚異 的! !! い れ v13 Webサーバーは 超高速! ら じ 信 反 違 ド ー ピ ス ディ 15% ス 2月 カウ 1日 ン まで ト
  29. 29. 新しいWebサーバー v12 vs v13
  30. 30. 新しいWebサーバー v12 vs v13 (リクエスト/秒) 41 v12
  31. 31. 新しいWebサーバー v12 vs v13 (リクエスト/秒) 169 41 v12 x4! v13
  32. 32. 新しいWebサーバー
  33. 33. 新しいWebサーバー モダンなデザイン
  34. 34. 新しいWebサーバー モダンなデザイン • Unicode • Carbon 不使用 • プリエムプティブ • IPV6 • RFC準拠 •...
  35. 35. Webサーバー再開発計画
  36. 36. Webサーバー再開発計画 自作の強み •無駄を省いて高出力 •自由にチューニング •一体型
  37. 37. Webサーバー再開発計画 必要に応えるものに •簡単 設定
 簡単 管理
 簡単 運用 •パフォーマンス重視
  38. 38. ネットワークレイヤー
  39. 39. ネットワークレイヤー Mac IPX AppleTalk
  40. 40. ネットワークレイヤー Mac / Windows IPX AppleTalk TCP/IP
  41. 41. ネットワークレイヤー Mac / Windows SSL IPX AppleTalk TCP/IP
  42. 42. ネットワークレイヤー Mac / Windows SSL IPX AppleTalk TCP/IP
  43. 43. ネットワークレイヤー • 機能の絞り込み: ‣ TCP/IP Mac / Windows ‣ POSIXソケット • • 保守の容易性 エラー処理 SSL IPX AppleTalk TCP/IP
  44. 44. ネットワークレイヤー • 機能の絞り込み: ‣ TCP/IP ‣ POSIXソケット • エラー処理 • 保守の容易性 TCP/IP POSIXソケット
  45. 45. 速度の追求
  46. 46. 速度の追求 • 圧縮 ‣ gzip, 自動
  47. 47. 速度の追求 • 圧縮 ‣ gzip, 自動 • キャッシュ
  48. 48. 速度の追求 • 圧縮 ‣ gzip, 自動 • キャッシュ • プリエンムティブ
  49. 49. v12 CPU Webサーバー CPU CPU CPU
  50. 50. v12 CPU Webサーバー CPU CPU CPU
  51. 51. v12 CPU Webサーバー CPU CPU CPU
  52. 52. v13 CPU Webサーバー CPU CPU CPU
  53. 53. v13 CPU Webサーバー CPU CPU CPU
  54. 54. v13 CPU Webサーバー CPU CPU CPU
  55. 55. リクエスト
  56. 56. リクエスト
  57. 57. リクエスト 解析 スタティック キャッシュのチェック (圧縮) 結果を送信 プリエムティブスレッド
  58. 58. リクエスト 解析 スタティック ダイナミック キャッシュのチェック (圧縮) コオペラティブスレッドの プールに転送 完了するまで停止 結果を送信 プリエムティブスレッド
  59. 59. v12 vs v13 ベンチマーク
  60. 60. 新しいWebサーバー v12 vs v13 169 x4! 41 v12 v13
  61. 61. 新しいWebサーバー v12 vs v13 スタティックページ 169 x4! 41 v12 v13 2 コア リクエスト/秒
  62. 62. 新しいWebサーバー v12 vs v13 スタティックページ リクエスト/秒 169 x4! 41 v12 v13 2 コア v13 4 コア
  63. 63. 新しいWebサーバー v12 vs v13 スタティックページ リクエスト/秒 482 x12! 169 x4! 41 v12 v13 2 コア v13 4 コア
  64. 64. スタティック 対 ダイナミック
  65. 65. スタティック 対 ダイナミック • スタティックリクエスト: スピード重視
  66. 66. スタティック 対 ダイナミック • スタティックリクエスト: スピード重視 • テンプレート
  67. 67. スタティック 対 ダイナミック • スタティックリクエスト: スピード重視 • テンプレート • PROCESS HTML TAGS
  68. 68. スタティック 対 ダイナミック • スタティックリクエスト: スピード重視 • テンプレート • PROCESS HTML TAGS
  69. 69. スタティック 対 ダイナミック • スタティックリクエスト: スピード重視 • テンプレート • PROCESS 4D TAGS
  70. 70. コマンド
  71. 71. コマンド • WEB get body parts count • WEB GET BODY PART
  72. 72. 新しいWebサーバー まだまだ続く
  73. 73. If($1="/cart@") GET HTTP HEADER($headers;$values) $idx:=Find in array($headers;"cookie") If ($idx>0) T_sessionID:=web_GetSessionCookie ($values{$idx}) End if End if
  74. 74. If($1="/cart@") GET HTTP HEADER($headers;$values) $idx:=Find in array($headers;"cookie") If ($idx>0) T_sessionID:=web_GetSessionCookie ($values{$idx}) End if End if C_TEXT($1;$value) C_TEXT($0) C_LONGINT($L_pos1;$L_pos2) ! $value:=$1 $L_pos1:=Position("MYCOOKIE=";$value) If ($L_pos1>0) $L_pos2:=Position(";";$value;$L_pos1+1) If ($L_pos2>0) $0:=Substring($value;$L_pos1+11;$L_pos2-$L_pos1-1) Else $0:=Substring($value;$L_pos1+1) End if $0:=s_CleanupWebStr($0) End if
  75. 75. If($1="/cart@") GET HTTP HEADER($headers;$values) $idx:=Find in array($headers;"cookie") If ($idx>0) T_sessionID:=web_GetSessionCookie ($values{$idx}) End if End if
  76. 76. C_TEXT($1;$value) C_TEXT($0) C_LONGINT($L_pos1;$L_pos2) If($1="/cart@") ! GET HTTP HEADER($headers;$values) $idx:=Find in array($headers;"cookie") If ($idx>0) T_sessionID:=web_GetSessionCookie ($values{$idx}) End if End if $value:=$1 $L_pos1:=Position("MYCOOKIE=";$value) If ($L_pos1>0) $L_pos2:=Position(";";$value;$L_pos1+1) If ($L_pos2>0) $0:=Substring($value;$L_pos1+11;$L_pos2-$L_pos1-1) Else $0:=Substring($value;$L_pos1+1) End if $0:=s_CleanupWebStr($0) End if
  77. 77. C_TEXT($1;$value) C_TEXT($0) C_LONGINT($L_pos1;$L_pos2) If($1="/cart@") ! GET HTTP HEADER($headers;$values) $idx:=Find in array($headers;"cookie") If ($idx>0) T_sessionID:=web_GetSessionCookie ($values{$idx}) End if If(T_sessionID="") web_DoNewSession End if End if $value:=$1 $L_pos1:=Position("MYCOOKIE=";$value) If ($L_pos1>0) $L_pos2:=Position(";";$value;$L_pos1+1) If ($L_pos2>0) $0:=Substring($value;$L_pos1+11;$L_pos2-$L_pos1-1) Else $0:=Substring($value;$L_pos1+1) End if $0:=s_CleanupWebStr($0) End if
  78. 78. C_TEXT($1;$value) C_TEXT($0) C_LONGINT($L_pos1;$L_pos2) If($1="/cart@") ! GET HTTP HEADER($headers;$values) $idx:=Find in array($headers;"cookie") If ($idx>0) T_sessionID:=web_GetSessionCookie ($values{$idx}) End if If(T_sessionID="") web_DoNewSession End if End if $value:=$1 $L_pos1:=Position("MYCOOKIE=";$value) If ($L_pos1>0) $L_pos2:=Position(";";$value;$L_pos1+1) If ($L_pos2>0) $0:=Substring($value;$L_pos1+11;$L_pos2-$L_pos1-1) Else $0:=Substring($value;$L_pos1+1) End if $0:=s_CleanupWebStr($0) End if
  79. 79. If($1="/cart@") GET HTTP HEADER $idx:= If ($idx>0) T_sessionID:= End if If(T_sessionID="") web_DoNewSession End if End if C_TEXT($1;$value) C_TEXT($0) C_LONGINT($L_pos1;$L_pos2) ! $value:=$1 $L_pos1:=Position("MYCOOKIE=";$value) If ($L_pos1>0) $L_pos2:=Position(";";$value;$L_pos1+1) If ($L_pos2>0) $0:=Substring($value;$L_pos1+11;$L_pos2-$L_pos1-1) Else $0:=Substring($value;$L_pos1+1) End if $0:=s_CleanupWebStr($0) End if
  80. 80. C_TEXT($1;$value) C_TEXT($0) C_LONGINT($L_pos1;$L_pos2) If($1="/cart@") ! GET HTTP HEADER web_DoNewSession $idx:= If ($idx>0) T_sessionID:= $L_custID:=web_L_CustIDFromQueryStr ($T_url) End if QUERY([Customers];[Customers]ID=$L_custID) If(T_sessionID="") CREATE RECORD([Orders]) web_DoNewSession [Orders]CustomerID:=$L_custID End if SAVE End if RECORD([Orders]) ! CREATE RECORD([Sessions])    //  UUIDは⾃自動的に発⾏行行される   SelectionsToSession ! SAVE RECORD([Sessions]) !    //  このセッションIDでクッキーをセット   T_sessionID:=[Sessions]SessionUID $T_header:="Set-Cookie: MYCOOKIE="+ T_sessionID SET HTTP HEADER($T_header) $value:=$1 $L_pos1:=Position("MYCOOKIE=";$value) If ($L_pos1>0) $L_pos2:=Position(";";$value;$L_pos1+1) If ($L_pos2>0) $0:=Substring($value;$L_pos1+11;$L_pos2-$L_pos1-1) Else $0:=Substring($value;$L_pos1+1) End if $0:=s_CleanupWebStr($0) End if
  81. 81. C_TEXT($1;$value) C_TEXT($0) C_LONGINT($L_pos1;$L_pos2) If($1="/cart@") ! GET HTTP HEADER web_DoNewSession $idx:= If ($idx>0) T_sessionID:= $L_custID:=web_L_CustIDFromQueryStr ($T_url) End if QUERY([Customers];[Customers]ID=$L_custID) If(T_sessionID="") CREATE RECORD([Orders]) web_DoNewSession [Orders]CustomerID:=$L_custID End if SAVE End if RECORD([Orders]) ! CREATE RECORD([Sessions]) // UUID is automatically generated SelectionsToSession ! SAVE RECORD([Sessions]) ! // Set a cookie with this session UID T_sessionID:=[Sessions]SessionUID $T_header:="Set-Cookie: MYCOOKIE="+ T_sessionID SET HTTP HEADER($T_header) $value:=$1 $L_pos1:=Position("MYCOOKIE=";$value) If ($L_pos1>0) $L_pos2:=Position(";";$value;$L_pos1+1) If ($L_pos2>0) $0:=Substring($value;$L_pos1+11;$L_pos2-$L_pos1-1) Else $0:=Substring($value;$L_pos1+1) End if $0:=s_CleanupWebStr($0) End if
  82. 82. C_TEXT($1;$value) C_TEXT($0) C_LONGINT($L_pos1;$L_pos2) If($1="/cart@") ! GET HTTP HEADER web_DoNewSession $idx:= If ($idx>0) T_sessionID:= $L_custID:=web_L_CustIDFromQueryStr ($T_url) End if QUERY([Customers];[Customers]ID=$L_custID) If(T_sessionID="") CREATE RECORD([Orders]) web_DoNewSession [Orders]CustomerID:=$L_custID End if SAVE End if RECORD([Orders]) ! CREATE RECORD([Sessions]) // UUID is automatically generated SelectionsToSession ! SAVE RECORD([Sessions])number([Customers]);[Sessions]Content;... LONGINT TO BLOB(Record ! LONGINT TO BLOB(Record number([Orders]);[Sessions]Content;... // LONGINT($rL_recNums;0) ARRAYSet a cookie with this session UID T_sessionID:=[Sessions]SessionUID VARIABLE TO BLOB($rL_recNums;[Sessions]Content;*) $T_header:="Set-Cookie: MYCOOKIE="+ T_sessionID SET HTTP HEADER($T_header) $value:=$1 $L_pos1:=Position("MYCOOKIE=";$value) If ($L_pos1>0) $L_pos2:=Position(";";$value;$L_pos1+1) If ($L_pos2>0) $0:=Substring($value;$L_pos1+11;$L_pos2-$L_pos1-1) Else $0:=Substring($value;$L_pos1+1) End if $0:=s_CleanupWebStr($0) End if
  83. 83. C_TEXT($1;$value) C_TEXT($0) C_LONGINT($L_pos1;$L_pos2) If($1="/cart@") ! GET HTTP HEADER($headers;$values) $idx:=Find in array($headers;"cookie") If ($idx>0) T_sessionID:=web_GetSessionCookie ($values{$idx}) End if If(T_sessionID="") web_DoNewSession End if End if $value:=$1 $L_pos1:=Position("MYCOOKIE=";$value) If ($L_pos1>0) $L_pos2:=Position(";";$value;$L_pos1+1) If ($L_pos2>0) $0:=Substring($value;$L_pos1+11;$L_pos2-$L_pos1-1) Else $0:=Substring($value;$L_pos1+1) End if $0:=s_CleanupWebStr($0) End if
  84. 84. C_TEXT($1;$value) C_TEXT($0) C_LONGINT($L_pos1;$L_pos2) If($1="/cart@") ! GET HTTP HEADER($headers;$values) $idx:=Find in array($headers;"cookie") If ($idx>0) T_sessionID:=web_GetSessionCookie ($values{$idx}) End if If(T_sessionID="") ! web_DoNewSession End if ! ! End if $value:=$1 $L_pos1:=Position("MYCOOKIE=";$value) If ($L_pos1>0) $L_pos2:=Position(";";$value;$L_pos1+1) If ($L_pos2>0) $0:=Substring($value;$L_pos1+11;$L_pos2-$L_pos1-1) Else $0:=Substring($value;$L_pos1+1) End if $0:=s_CleanupWebStr($0) End if $L_custID:=web_L_CustIDFromQueryStr ($T_url) QUERY([Customers];[Customers]ID=$L_custID) CREATE RECORD([Orders]) [Orders]CustomerID:=$L_custID SAVE RECORD([Orders]) CREATE RECORD([Sessions]) // UUID is automatically generated SelectionsToSession SAVE RECORD([Sessions]) // Set a cookie with this session UID T_sessionID:=[Sessions]SessionUID $T_header:="Set-Cookie: MYCOOKIE="+ T_sessionID SET HTTP HEADER($T_header) LONGINT TO BLOB(Record number([Customers]);[Sessions]Content;... LONGINT TO BLOB(Record number([Orders]);[Sessions]Content;... ARRAY LONGINT($rL_recNums;0) VARIABLE TO BLOB($rL_recNums;[Sessions]Content;*)
  85. 85. C_TEXT($1;$value) C_TEXT($0) C_LONGINT($L_pos1;$L_pos2) If($1="/cart@") ! GET HTTP HEADER($headers;$values) $idx:=Find in array($headers;"cookie") If ($idx>0) T_sessionID:=web_GetSessionCookie ($values{$idx}) End if If(T_sessionID="") ! web_DoNewSession End if ! ! Case of : ($1="cart_addTo") Web_AddToCart($1) ! : (...その他...) ! End case End if $value:=$1 $L_pos1:=Position("MYCOOKIE=";$value) If ($L_pos1>0) $L_pos2:=Position(";";$value;$L_pos1+1) If ($L_pos2>0) $0:=Substring($value;$L_pos1+11;$L_pos2-$L_pos1-1) Else $0:=Substring($value;$L_pos1+1) End if $0:=s_CleanupWebStr($0) End if $L_custID:=web_L_CustIDFromQueryStr ($T_url) QUERY([Customers];[Customers]ID=$L_custID) CREATE RECORD([Orders]) [Orders]CustomerID:=$L_custID SAVE RECORD([Orders]) CREATE RECORD([Sessions]) // UUID is automatically generated SelectionsToSession SAVE RECORD([Sessions]) // Set a cookie with this session UID T_sessionID:=[Sessions]SessionUID $T_header:="Set-Cookie: MYCOOKIE="+ T_sessionID SET HTTP HEADER($T_header) LONGINT TO BLOB(Record number([Customers]);[Sessions]Content;... LONGINT TO BLOB(Record number([Orders]);[Sessions]Content;... ARRAY LONGINT($rL_recNums;0) VARIABLE TO BLOB($rL_recNums;[Sessions]Content;*)
  86. 86. C_TEXT($1;$value) C_TEXT($0) C_LONGINT($L_pos1;$L_pos2) If($1="/cart@") ! GET HTTP HEADER($headers;$values) $idx:=Find in array($headers;"cookie") If ($idx>0) T_sessionID:=web_GetSessionCookie ($values{$idx}) End if If(T_sessionID="") ! web_DoNewSession End if ! ! Case of : ($1="cart_addTo") Web_AddToCart($1) ! : (...その他...) ! End case End if $value:=$1 $L_pos1:=Position("MYCOOKIE=";$value) If ($L_pos1>0) $L_pos2:=Position(";";$value;$L_pos1+1) If ($L_pos2>0) $0:=Substring($value;$L_pos1+11;$L_pos2-$L_pos1-1) Else $0:=Substring($value;$L_pos1+1) End if $0:=s_CleanupWebStr($0) End if $L_custID:=web_L_CustIDFromQueryStr ($T_url) QUERY([Customers];[Customers]ID=$L_custID) CREATE RECORD([Orders]) [Orders]CustomerID:=$L_custID SAVE RECORD([Orders]) CREATE RECORD([Sessions]) // UUID is automatically generated SelectionsToSession SAVE RECORD([Sessions]) // Set a cookie with this session UID T_sessionID:=[Sessions]SessionUID $T_header:="Set-Cookie: MYCOOKIE="+ T_sessionID SET HTTP HEADER($T_header) LONGINT TO BLOB(Record number([Customers]);[Sessions]Content;... LONGINT TO BLOB(Record number([Orders]);[Sessions]Content;... ARRAY LONGINT($rL_recNums;0) VARIABLE TO BLOB($rL_recNums;[Sessions]Content;*)
  87. 87. If($1="/cart@") GET HTTP HEADER $idx:= If ($idx>0) T_sessionID:= End if If(T_sessionID="") web_DoNewSession End if Case of : ($1="cart_addTo") Web_AddToCart ! : (...other cases...) ! End case End if C_TEXT($1;$value) C_TEXT($0) C_LONGINT($L_pos1;$L_pos2) ! $value:=$1 $L_pos1:=Position("MYCOOKIE=";$value) If ($L_pos1>0) $L_pos2:=Position(";";$value;$L_pos1+1) If ($L_pos2>0) $0:=Substring($value;$L_pos1+11;$L_pos2-$L_pos1-1) Else $0:=Substring($value;$L_pos1+1) End if $0:=s_CleanupWebStr($0) End if $L_custID:=web_L_CustIDFromQueryStr ($T_url) QUERY([Customers];[Customers]ID=$L_custID) CREATE RECORD([Orders]) [Orders]CustomerID:=$L_custID SAVE RECORD([Orders]) ! ! ! CREATE RECORD([Sessions]) // UUID is automatically generated SelectionsToSession SAVE RECORD([Sessions]) // Set a cookie with this session UID T_sessionID:=[Sessions]SessionUID $T_header:="Set-Cookie: MYCOOKIE="+ T_sessionID SET HTTP HEADER($T_header) LONGINT TO BLOB(Record number([Customers]);[Sessions]Content;... LONGINT TO BLOB(Record number([Orders]);[Sessions]Content;... ARRAY LONGINT($rL_recNums;0) VARIABLE TO BLOB($rL_recNums;[Sessions]Content;*)
  88. 88. C_TEXT($1;$value) C_TEXT($0) C_LONGINT($L_pos1;$L_pos2) Web_AddToCart If($1="/cart@") ! GET HTTP HEADER $T_url:=$1 $idx:= $L_productID:=web_L_ProductIDFromQueryStr ($T_url) If ($idx>0) ARRAY LONGINT($rL_recNums;0) T_sessionID:= LONGINT End if ARRAY FROM SELECTION([OrderLines];$rL_recNums) ! If(T_sessionID="") ! CREATE RECORD([OrderLines]) web_DoNewSession [OrderLines]OrderID:=[Orders]ID End if ! ! [OrderLines]ProductID:=$L_productID Case of SAVE($1="cart_addTo") : RECORD([OrderLines]) APPEND TO ARRAY($rL_recNums;Record number([OrderLines])) Web_AddToCart ! CREATE SELECTION FROM ARRAY([OrderLines];$rL_recNums) : (...other cases...) ! SET BLOB End case SIZE([Sessions]Content;0) LONGINT TO BLOB(Record number([Customers]);[Sessions]Content;... End if LONGINT TO BLOB(Record number([Orders]);[Sessions]Content;... VARIABLE TO BLOB($rL_recNums;[Sessions]Content;*) SAVE RECORD([Sessions]) ! ARRAY TEXT($rT_names;0) RELATE ONE SELECTION([OrderLines];[Products]) SELECTION TO ARRAY([Products]Name;$rT_names) .  .  .  カートの内容を更更新  .  .  . $value:=$1 $L_pos1:=Position("MYCOOKIE=";$value) If ($L_pos1>0) $L_pos2:=Position(";";$value;$L_pos1+1) If ($L_pos2>0) $0:=Substring($value;$L_pos1+11;$L_pos2-$L_pos1-1) Else $0:=Substring($value;$L_pos1+1) End if $0:=s_CleanupWebStr($0) End if $L_custID:=web_L_CustIDFromQueryStr ($T_url) QUERY([Customers];[Customers]ID=$L_custID) CREATE RECORD([Orders]) [Orders]CustomerID:=$L_custID SAVE RECORD([Orders]) CREATE RECORD([Sessions]) // UUID is automatically generated SelectionsToSession SAVE RECORD([Sessions]) // Set a cookie with this session UID T_sessionID:=[Sessions]SessionUID $T_header:="Set-Cookie: MYCOOKIE="+ T_sessionID SET HTTP HEADER($T_header) LONGINT TO BLOB(Record number([Customers]);[Sessions]Content;... LONGINT TO BLOB(Record number([Orders]);[Sessions]Content;... ARRAY LONGINT($rL_recNums;0) VARIABLE TO BLOB($rL_recNums;[Sessions]Content;*)
  89. 89. C_TEXT($1;$value) C_TEXT($0) C_LONGINT($L_pos1;$L_pos2) If($1="/cart@") ! GET HTTP HEADER($headers;$values) $idx:=Find in array($headers;"cookie") If ($idx>0) T_sessionID:=web_GetSessionCookie ($values{$idx}) End if If(T_sessionID="") ! web_DoNewSession End if ! ! Case of : ($1="cart_addTo") Web_AddToCart($1) ! : (...その他...) ! End case End if $value:=$1 $L_pos1:=Position("MYCOOKIE=";$value) If ($L_pos1>0) $L_pos2:=Position(";";$value;$L_pos1+1) If ($L_pos2>0) $0:=Substring($value;$L_pos1+11;$L_pos2-$L_pos1-1) Else $0:=Substring($value;$L_pos1+1) End if $0:=s_CleanupWebStr($0) End if $L_custID:=web_L_CustIDFromQueryStr ($T_url) QUERY([Customers];[Customers]ID=$L_custID) CREATE RECORD([Orders]) [Orders]CustomerID:=$L_custID SAVE RECORD([Orders]) CREATE RECORD([Sessions]) // UUID is automatically generated SelectionsToSession SAVE RECORD([Sessions]) // Set a cookie with this session UID T_sessionID:=[Sessions]SessionUID $T_header:="Set-Cookie: MYCOOKIE="+ T_sessionID SET HTTP HEADER($T_header) LONGINT TO BLOB(Record number([Customers]);[Sessions]Content;... LONGINT TO BLOB(Record number([Orders]);[Sessions]Content;... ARRAY LONGINT($rL_recNums;0) VARIABLE TO BLOB($rL_recNums;[Sessions]Content;*)
  90. 90. C_TEXT($1;$value) C_TEXT($0) C_LONGINT($L_pos1;$L_pos2) If($1="/cart@") ! GET HTTP HEADER($headers;$values) $idx:=Find in array($headers;"cookie") If ($idx>0) T_sessionID:=web_GetSessionCookie ($values{$idx}) End if If(T_sessionID="") ! web_DoNewSession End if ! ! Case of : ($1="cart_addTo") Web_AddToCart($1) ! : (...その他...) ! ! End case End if ! ! $value:=$1 $L_pos1:=Position("MYCOOKIE=";$value) If ($L_pos1>0) $L_pos2:=Position(";";$value;$L_pos1+1) If ($L_pos2>0) $0:=Substring($value;$L_pos1+11;$L_pos2-$L_pos1-1) Else $0:=Substring($value;$L_pos1+1) End if $0:=s_CleanupWebStr($0) End if $L_custID:=web_L_CustIDFromQueryStr ($T_url) QUERY([Customers];[Customers]ID=$L_custID) CREATE RECORD([Orders]) [Orders]CustomerID:=$L_custID SAVE RECORD([Orders]) CREATE RECORD([Sessions]) // UUID is automatically generated SelectionsToSession SAVE RECORD([Sessions]) // Set a cookie with this session UID T_sessionID:=[Sessions]SessionUID $T_header:="Set-Cookie: MYCOOKIE="+ T_sessionID SET HTTP HEADER($T_header) LONGINT TO BLOB(Record number([Customers]);[Sessions]Content;... LONGINT TO BLOB(Record number([Orders]);[Sessions]Content;... ARRAY LONGINT($rL_recNums;0) VARIABLE TO BLOB($rL_recNums;[Sessions]Content;*) $T_url:=$1 $L_productID:=web_L_ProductIDFromQueryStr ($T_url) ARRAY LONGINT($rL_recNums;0) LONGINT ARRAY FROM SELECTION([OrderLines];$rL_recNums) CREATE RECORD([OrderLines]) [OrderLines]OrderID:=[Orders]ID [OrderLines]ProductID:=$L_productID SAVE RECORD([OrderLines]) APPEND TO ARRAY($rL_recNums;Record number([OrderLines])) CREATE SELECTION FROM ARRAY([OrderLines];$rL_recNums) SET BLOB SIZE([Sessions]Content;0) LONGINT TO BLOB(Record number([Customers]);[Sessions]Content;... LONGINT TO BLOB(Record number([Orders]);[Sessions]Content;... VARIABLE TO BLOB($rL_recNums;[Sessions]Content;*) SAVE RECORD([Sessions]) ! ARRAY TEXT($rT_names;0) RELATE ONE SELECTION([OrderLines];[Products]) SELECTION TO ARRAY([Products]Name;$rT_names) . . . return the result . . .
  91. 91. C_TEXT($1;$value) C_TEXT($0) C_LONGINT($L_pos1;$L_pos2) If($1="/cart@") ! GET HTTP HEADER($headers;$values) $idx:=Find in array($headers;"cookie") If ($idx>0) T_sessionID:=web_GetSessionCookie ($values{$idx}) End if If(T_sessionID="") ! web_DoNewSession End if ! ! Case of : ($1="cart_addTo") Web_AddToCart($1) ! : (...その他...) ! ! End case End if ! ! $value:=$1 $L_pos1:=Position("MYCOOKIE=";$value) If ($L_pos1>0) $L_pos2:=Position(";";$value;$L_pos1+1) If ($L_pos2>0) $0:=Substring($value;$L_pos1+11;$L_pos2-$L_pos1-1) Else $0:=Substring($value;$L_pos1+1) End if $0:=s_CleanupWebStr($0) End if $L_custID:=web_L_CustIDFromQueryStr ($T_url) QUERY([Customers];[Customers]ID=$L_custID) CREATE RECORD([Orders]) [Orders]CustomerID:=$L_custID SAVE RECORD([Orders]) CREATE RECORD([Sessions]) // UUID is automatically generated SelectionsToSession SAVE RECORD([Sessions]) // Set a cookie with this session UID T_sessionID:=[Sessions]SessionUID $T_header:="Set-Cookie: MYCOOKIE="+ T_sessionID SET HTTP HEADER($T_header) LONGINT TO BLOB(Record number([Customers]);[Sessions]Content;... LONGINT TO BLOB(Record number([Orders]);[Sessions]Content;... ARRAY LONGINT($rL_recNums;0) VARIABLE TO BLOB($rL_recNums;[Sessions]Content;*) $T_url:=$1 $L_productID:=web_L_ProductIDFromQueryStr ($T_url) ARRAY LONGINT($rL_recNums;0) LONGINT ARRAY FROM SELECTION([OrderLines];$rL_recNums) CREATE RECORD([OrderLines]) [OrderLines]OrderID:=[Orders]ID [OrderLines]ProductID:=$L_productID SAVE RECORD([OrderLines]) APPEND TO ARRAY($rL_recNums;Record number([OrderLines])) CREATE SELECTION FROM ARRAY([OrderLines];$rL_recNums) SET BLOB SIZE([Sessions]Content;0) LONGINT TO BLOB(Record number([Customers]);[Sessions]Content;... LONGINT TO BLOB(Record number([Orders]);[Sessions]Content;... VARIABLE TO BLOB($rL_recNums;[Sessions]Content;*) SAVE RECORD([Sessions]) ! ARRAY TEXT($rT_names;0) RELATE ONE SELECTION([OrderLines];[Products]) SELECTION TO ARRAY([Products]Name;$rT_names) . . . return the result . . .
  92. 92. If($1="/cart@") If(T_sessionID#WEB Get current session ID) web_DoNewSession End if Case of : ($1="cart_addTo") Web_AddToCart($1) ! : (...その他...)   ! End case End if $L_custID:=web_L_CustIDFromQueryStr ($T_url) QUERY([Customers];[Customers]ID=$L_custID) CREATE RECORD([Orders]) [Orders]CustomerID:=$L_custID SAVE RECORD([Orders]) $T_url:=$1 $L_productID:=web_L_ProductIDFromQueryStr ($T_url) ARRAY LONGINT($rL_recNums;0) LONGINT ARRAY FROM SELECTION([OrderLines];$rL_recNums) ! CREATE RECORD([OrderLines]) [OrderLines]OrderID:=[Orders]ID [OrderLines]ProductID:=$L_productID SAVE RECORD([OrderLines]) APPEND TO ARRAY($rL_recNums;Record number([OrderLines])) ! ! CREATE SELECTION FROM ARRAY([OrderLines];$rL_recNums) ARRAY TEXT($rT_names;0) SELECTION TO ARRAY([Products]Name;$rT_names) . . . return the result . . .
  93. 93. セッション管理
  94. 94. セッション管理 • 自動処理 • 各種設定 • WEB GET/SET OPTION • • Webserver • Webserver • Webserver • Webserver 微調整も Keep session inactive session timeout Max sessions Session cookie name • WEB CLOSE SESSION • データベースメソッド On Web Session Suspend
  95. 95. v13 新しいWebサーバー • モダンでスタイリッシュ • 簡単 ∼セットアップから運用まで∼ • パフォーマンス重視 • セッション管理
  96. 96. 新しいWebサーバー
  97. 97. とにかくスゴイ!
  98. 98. HTTP クライアント
  99. 99. HTTP クライアント
  100. 100. HTTP クライアント •HTTP Get
  101. 101. HTTP クライアント •HTTP Get $resp:=HTTP Get($url;$result)
  102. 102. HTTP クライアント •HTTP Get
  103. 103. HTTP クライアント •HTTP •HTTP Get Request
  104. 104. HTTP クライアント •HTTP •HTTP Get Request DELETE GET HEAD OPTIONS POST PUT TRACE
  105. 105. HTTP クライアント •HTTP •HTTP •HTTP Get Request GET/SET OPTION
  106. 106. HTTP クライアント •HTTP Get •HTTP Request •HTTP GET/SET OPTION •認証,プロキシ(システム設定)
  107. 107. HTTP クライアント デモンストレーション
  108. 108. HTTP クライアント
  109. 109. HTTP クライアント とっても簡単!
  110. 110. HTTP クライアント
  111. 111. 新しいWebサーバー HTTP クライアント

×