æè¿ãŸã§ãå¿
èŠã«å¿ããŠããªãã©ã€ã³ã§äœæ¥ããæ©äŒããŠãŒã¶ãŒã«äžããããã«ãã€ãŸãã¢ã¯ãã£ããªã€ã³ã¿ãŒãããæ¥ç¶ãªãã§ãã·ãã¯ã¯ã©ã€ã¢ã³ããéçºããå¿
èŠããããŸããã ãã®ã¢ãããŒãã§ã¯ããŠãŒã¶ãŒã¯ããŒã«ã«ã«ä¿åãããã¢ããªã±ãŒã·ã§ã³ã«ããŒã¿ãå
¥åãããããã¯ãŒã¯ã³ãŒãã貌ãä»ããŠãããžãã¯ãã¿ã³SynchronizeãæŒããæºè¶³ããŠãè¶ã飲ã¿ã«è¡ããŸãã
説æããã¹ããŒã ã«ã¯ã倪ã£ãã¯ã©ã€ã¢ã³ãã®ãã¹ãŠã®æ¬ ç¹ããããŸãã ããã«ã¯ããã©ãŠã¶ãŒã§äœæ¥ããããã®å¥ã®ã¢ããªã±ãŒã·ã§ã³ãéçºããå¿
èŠæ§ïŒçŸä»£äžçã§ã¯éåžžã®èŠä»¶ã§ãïŒã远å ã®ãœãããŠã§ã¢ãã€ã³ã¹ããŒã«ããå¿
èŠæ§ããããæŽæ°ããåé¡ãããã³äžè¬çãªãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³éçºã¹ãã·ã£ãªã¹ããéãå¿
èŠæ§ãå«ãŸããŸãã ç§ãã¡ã«ã¯ãWebéçºè
ãšããŠããªãã©ã€ã³ã§äœæ¥ãããšããåé¡ãåžžã«åã®éªšã§ããããšã«åæããŸãã
仿¥ããã®åé¡ã¯ãšã¬ã¬ã³ãã«è§£æ±ºãããŸãã-ããŒã«ã«ã¹ãã¬ãŒãžã§HTML5ã䜿çšããïŒãã®ã¹ãã¬ãŒãžãééçã«æäœããæ©èœãåããExt JS 4ãããã³HTML5ã¢ããªã±ãŒã·ã§ã³ãã£ãã·ã¥ïŒã¢ããªã±ãŒã·ã§ã³ãã£ãã·ã¥ïŒïŒã ãããã®æè¡ã®çµã¿åããã«ãããæ¬¡ã®ã¹ããŒã ãå®è£
ã§ããŸãïŒãããã¯ãŒã¯ãååšããå Žåãéçãã¡ã€ã«ïŒHTML / CSS / JSã³ãŒããšç»åïŒããµã€ãããããŠã³ããŒãããããããã¯ãŒã¯ãååšããªãå Žåã¯éäžãµãŒããŒããŒã¿ããŒã¹ã§åäœããéçãã¢ããªã±ãŒã·ã§ã³ãã£ãã·ã¥ããããŠã³ããŒããããããŒã«ã«ã¹ãã¬ãŒãžã§åäœããŸããã€ã³ã¿ãŒããããžã®ã¢ã¯ã»ã¹ã衚瀺ããããšãã«ãµãŒããŒããŒã¿ããŒã¹ã«ä¿åãããŸãã åæã«ãããŒãžURLãžã®ã¢ã¯ãã£ããªæ¥ç¶ããªãå Žåããã©ãŠã¶ã¯ãããã¯ãŒã¯ã¢ã¯ã»ã¹ãšã©ãŒã§ã¯ãªãã
ããŒã«ã«ã¹ãã¬ãŒãžã§æ©èœããæ©èœã·ã¹ãã ã衚瀺ããŸãã 説æãš
åäœäŸ ïŒç§ã®vdsã¯Habroeffectã«è©²åœããªããããããŸããïŒ-ã«ããã®äžã èšäºã¯ããªã倧ããããšã倿ããŸããããããŸãããã°ãéåžžã«æçã§ãã
HTML5
HTML 5ã«ç²ŸéããŠããå Žå-
ãã®ç« ã
ã¹ãããããŠãã ãããããã§ãªãå Žåã¯-ããã§ã䜿çšãããŠããæè¡ã®ç°¡åãªèª¬æããããŸãã
ã¢ããªã±ãŒã·ã§ã³ãã£ãã·ã¥ã¢ããªã±ãŒã·ã§ã³ãã£ãã·ã¥-ã¢ããªã±ãŒã·ã§ã³ãã£ãã·ã¥ãéçãã¡ã€ã«ãããŒã«ã«ã«ä¿åãããããã¯ãŒã¯ã«æ¥ç¶ããã«äœ¿çšã§ããŸãã ãã£ãã·ã³ã°çšã®ãã¡ã€ã«ã®ãªã¹ãã¯ãããã§ã¹ããã¡ã€ã«ã«ããããã®ã¢ãã¬ã¹ã¯htmlã¿ã°ã§ç€ºãããŸããæ¬¡ã«äŸã瀺ããŸãã
<html manifest="http://site.ru/names.appcache">âŠ</html>
ãããã§ã¹ããã¡ã€ã«ã®MIMEã¿ã€ãã¯ãtext / cache-manifestã«èšå®ããå¿
èŠããããŸãã ããšãã°ãApache WebãµãŒããŒã®å Žåãæ§æãã¡ã€ã«ã«è¿œå ããŸãã
AddType text/cache-manifest .appcache
Javaã®å Žåãweb.xmlã«è¿œå ããŸãã
<mime-mapping> <extension>appcache</extension> <mime-type>text/cache-manifest</mime-type> </mime-mapping>
åçŽãªãããã§ã¹ããã¡ã€ã«ã®äŸïŒ
CACHE MANIFEST index.html stylesheet.css images/logo.png scripts/main.js
æåã®è¡ïŒCACHE MANIFESTïŒã¯å¿
é ã§ãã åžžã«ãããã¯ãŒã¯ãå¿
èŠãšãããªãœãŒã¹ã远å ããå Žåã¯ãNETWORKè¡ã®åŸã«è¿œå ããŸãã
CACHE MANIFEST index.html NETWORK: login.php
ãããã§ã¹ããã¡ã€ã«åœ¢åŒã«ã€ããŠè©³ããã¯ããã¡ããã芧ãã ããã ã¢ããªã±ãŒã·ã§ã³ãã£ãã·ã¥ã¯3ã€ã®æ¹æ³ã§æŽæ°ã§ããŸãããã©ãŠã¶ã§ãŠãŒã¶ãŒã匷å¶çã«åé€ããããšããããã§ã¹ããã¡ã€ã«ãæŽæ°ããããšãã£ãã·ã¥ãæŽæ°ãããããšãæåŸã«JavaScriptãããã£ãã·ã¥ã匷å¶çã«æŽæ°ããããšãã§ããŸãã
ãã©ãŠã¶ã®ãµããŒãïŒChrome 4 +ãFirefox 4 +ãSafari 4 +ãOpera 11 +ãIE 10ãiOS 5 +ãAndroid 3+ã
ããŒã«ã«ã¹ãã¬ãŒãžHTML5ã®ããŒã«ã«ã¹ãã¬ãŒãžã䜿çšãããšãããŒã¿ãããŒã«ã«ã«ä¿åã§ããŸããæšå¥šãµã€ãºã®å¶éã¯5 MBã§ãããã ããäžéšã®ãã©ãŠã¶ãŒã§ã¯å¢ããããšãã§ããŸãã ããŒãžãŸãã¯ãã©ãŠã¶ãéããŠãããŒã¿ã¯æ¶ããŸããã
ã¹ãã¬ãŒãžã¯ãã¡ã€ã³ããšã«1ã€ã§ããã€ãŸãããµã€ãã®ç°ãªãããŒãžããåãããŒã¿ãå©çšã§ããŸãã ããã«ãåæã«éããããã¹ãŠã®ããŒãžãããªããžããªå
ã®ããŒã¿ã®å€æŽã远跡ã§ããŸãã ããšãã°ãããŒãžã®1ã€ããªããžããªã®å€æŽãåŒãèµ·ããããã®çµæã飿¥ããã¿ãã§éããŠããå¥ã®ããŒãžã倿Žãããå ŽåããããŸãã ãã£ãããã§ããã
ããŒã«ã«ã¹ãã¬ãŒãžã®æäœã¯ç°¡åã§ã-ããã¯ãã ã®ããŒããªã¥ãŒæ§é ã§ãïŒ
localStorage.setItem('name', 'Hello World!'); localStorage.getItem('name'); localStorage.removeItem('name');
ãµããŒããããŠãããã©ãŠã¶ãŒïŒChrome 5以éãFirefox 3.6以éãOpera 10以éãSafari 4以éãIE 8以éã
Ext JS 4ã®ããŒã«ã«ã¹ãã¬ãŒãž
4çªç®ã®Ext JSã§ã¯ãããŒã«ã«ã¹ãã¬ãŒãžãééçã«æäœããããŒã«ã«ã¹ãã¬ãŒãžã«åå¥ã®ãããã·ãæäŸã§ããŸãã ãããã£ãŠããããã·ã¿ã€ããajaxããlocalstorageã«å€æŽããã ãã§ããã¹ãã¢ã®ãã¹ãŠã®Ext JSããŒã¿ã¯ãµãŒããŒããã§ã¯ãªãããã©ãŠã¶ãŒã®ããŒã«ã«ã¹ãã¬ãŒãžããããŠã³ããŒããããŸãã
远ãããïŒ

人ã
ã®ãªã¹ããç¶æããããšãå¯èœã«ããã¢ããªã±ãŒã·ã§ã³ãäœæããŸã-ã¹ã¯ãªãŒã³ã·ã§ããã¯èšäºã®ã¿ã€ãã«ã§ç¢ºèªããŸããã ãããã¯ãŒã¯ãååšããªãå Žåã¯ãæ°ããé¡ãå
¥åããæ©èœãç¶æããå¿
èŠããããŸãããããã¯ãŒã¯ã衚瀺ããããšãããŒã«ã«ã¹ãã¬ãŒãžã«ä»¥åã«å
¥åãããããŒã¿ãèªåçã«ãµãŒããŒããŒã¿ããŒã¹ã«ããŒããããŸãã
ãã¡ã€ã«æ§é ã¯ã¹ã¯ãªãŒã³ã·ã§ããã«ç€ºãããŠãããindex.htmlã/ app.jsãããã³/ app /ãã£ã¬ã¯ããªã¯å®éã«éèŠã§ãã
Ext JSã®4çªç®ã®ããŒãžã§ã³ã§ã¯ãMVCã¢ãã«ã䜿çšããŠã€ã³ã¿ãŒãã§ã€ã¹ãéçºããããšãææ¡ããŠããŸãã
- / app / model /-ã¢ãã«ã®ãã£ã¬ã¯ããªã ãã®å Žåã®ã¢ãã«ã¯ãã¹ãã¬ãŒãžãã£ãŒã«ãã®èª¬æãã€ãŸãããŒã¿æ§é ïŒãã¬ãŒã ã¯ãŒã¯ã®ç¬¬3ããŒãžã§ã³ã®Recordã«é¡äŒŒïŒãšãå¿
èŠã«å¿ããŠãããã·ã®èª¬æã§ãã ãããã·ã¯ãããŒã¿ãåä¿¡ããæ¹æ³ïŒAjaxãJSON-PãããŒã«ã«ã¹ãã¬ãŒãžãªã©ïŒãèšè¿°ããŸãã ãã®ã¢ãã«ã䜿çšããŠããããã·ãã¢ãã«ãŸãã¯ãªããžããªã«ãã€ã³ãã§ããŸãã
- / app / view /-ãããã³ã°ã®ãã£ã¬ã¯ããªã ãã¥ãŒ-èŠèŠèŠçŽ ïŒãŠã£ãžã§ããïŒ
- / app / controller /-ã³ã³ãããŒã©ãŒã®ãã£ã¬ã¯ããªã ã³ã³ãããŒã©ãŒ-衚瀺ããžãã¯ãã¢ãã«ã®ã€ã³ã¹ã¿ã³ã¹åãªã©ãã€ãŸããã¢ãã«ããªããžããªãŒããŠã£ãžã§ãããæ¥ç¶ãããã¹ãŠã®ãã®
ã¢ããªã±ãŒã·ã§ã³ã¯ã2ã€ã®ãŠã£ãžã§ããïŒããŒãã«ïŒã°ãªããïŒãå
éšã«ãããŠã£ã³ããŠïŒãŠã£ã³ããŠïŒïŒã§æ§æãããŸãã ããŒãã«ã¯ãã€ã³ã¿ãŒãããæ¥ç¶ã®å¯çšæ§ã«å¿ããŠããµãŒããŒãŸãã¯ããŒã«ã«ã¹ãã¬ãŒãžã䜿çšããŸãã
ãã®ããããã¡ããããã¹ãŠHTMLã§å§ãŸããŸãã
<html manifest="UsersApp.appcache"> <head> <link rel="stylesheet" type="text/css" href="ext-4.0.7-gpl/resources/css/ext-all.css" /> <link rel="stylesheet" type="text/css" href="style.css" /> <script src="ext-4.0.7-gpl/ext-dev.js" type="text/javascript" charset="utf-8"></script> <script src="app.js" type="text/javascript" charset="utf-8"></script> </head> <body style="padding: 25px;"><div id="console"><h2> </h2></div></body> </html>
ãããã§ã¹ããã¡ã€ã«ã«ã¯ãã£ãã·ã¥ã«å¿
èŠãªãªãœãŒã¹ã瀺ããããã¬ãŒã ã¯ãŒã¯ã¹ã¿ã€ã«ãšã«ã¹ã¿ã ã¹ã¿ã€ã«ãæ¥ç¶ãããExt JSã«ãŒãã«ãšã¢ããªã±ãŒã·ã§ã³ãšã³ããªãã€ã³ãapp.jsãããŒããããŸãã Ext JS 4ã¯ãå¿
èŠãªJSãã¡ã€ã«ããªã³ã¶ãã©ã€ã§æ¥ç¶ã§ãã
åçããŒãã¡ã«ããºã ãå®è£
ããŠããŸãããããã£ãŠãapp.jsã¢ããªã±ãŒã·ã§ã³èªäœã®1ã€ã®JSãã¡ã€ã«ã®ã¿ãhtmlã«çŽæ¥æžã蟌ãŸããŸãã
å
¥åJavaScriptãã¡ã€ã«ã¯åçŽã§ãã
Ext.requireïŒïŒæ§é ã¯ãlaunchïŒïŒã¡ãœãããåŒã³åºããŠã¢ããªã±ãŒã·ã§ã³ãèµ·åããåã«ãäŸåé¢ä¿ãã€ãŸãäºåã«ããŒãããå¿
èŠããããªããžã§ã¯ããæå®ããããã«èšèšãããŠããŸãã äžè¬çã«ããã®ãããªäŸåé¢ä¿ãæå®ããªãå ŽåãExt.LoaderããŒãããŒããŒãæ§æãããŠããå Žåãå®è¡æã«èªåçã«ããŒããããŸãããé床ããããã«äœäžãããŸã£ããåé¡ãããŸãããExt.Loaderã¯ããã®ãããªæé©ã§ãªãããŒãã«é¢ããã¡ãã»ãŒãžããã©ãŠã¶ãŒã®JSã³ã³ãœãŒã«ã«è¡šç€ºããŸãExt.requireïŒïŒã®äœ¿çšã®é©åæ§ã
å®éããªããžã§ã¯ãã®ååã¯ããããã®ãªããžã§ã¯ããä¿åãããŠãããã¹ã«å¯Ÿå¿ããŠããããšã«æ³šæããŠãã ããã ããšãã°ãUsersApp.store.storeLocalãªããžã§ã¯ãã¯/app/store/storeLocal.jsãã£ã¬ã¯ããªã«ä¿åãããUsersAppã¢ããªã±ãŒã·ã§ã³åããç©çãã£ã¬ã¯ããªã¢ããªã®ååãžã®ãããã³ã°ã¯Ext.LoaderããŒãããŒããŒèšå®ã§èšå®ãããŸãã
泚ïŒåçããŒãã£ã³ã°ã¡ã«ããºã ã¯ãéçºæ®µéã§äŸ¿å©ã§ããæ¬çªã·ã¹ãã ã§ã¯ã Sencha SDKããŒã« ïŒ äŸ ïŒã䜿çšããŠãã¹ãŠã®JSã³ãŒããåäžã®ãã¡ã€ã«ã«åéããã³ãŒããå«ã倿°ã®ãã¡ã€ã«ã®ããŒããäžèŠãªãµãŒããŒãªã¯ãšã¹ãã®çæãªã©ãåé¿ããããšããå§ãããŸããã®ãããã¢ããªã±ãŒã·ã§ã³ã¯UsersApp.view.winãŠã£ãžã§ãããäœæããã¡ã€ã³ã³ã³ãããŒã©ãŒã䜿çšããŸãã ã³ã³ãããŒã©ãŒã¯ãlaunchïŒïŒã¡ãœãããåŒã³åºããã
åã«åžžã«åŒã³åºãããã·ã¹ãã ã³ã³ããŒãã³ãããã€ã³ãããããã«å¿
èŠãªæºåäœæ¥ããã¹ãŠå®è¡ããŸãã
UsersApp.view.winãŠã£ã³ããŠã®ã³ãŒãã¯åçŽã§ãïŒä»¥éãäž»èŠãªæ§æãã©ã¡ãŒã¿ãŒãé«ãå¹
ãªã©ã®èŠèŠçãªæ§æããã®ä»ã®éèŠã§ãªãç¬éã¯ãèšäºã®æåŸã«ãããªã³ã¯ã®ãœãŒã¹ã³ãŒãã«ãããŸãïŒã
Ext.define('UsersApp.view.win', { extend: 'Ext.Window', requires: ['UsersApp.view.grid'], itemId: 'usersWindow', layout: 'fit', items: [ { xtype: 'NamesGridPanel', itemId: 'NamesGrid' } ] });
ããã§ãUsersApp.view.winã¯ã©ã¹ãå®çŸ©ããŸããããã¯ãæšæºã®Ext.WindowãŠã£ã³ããŠã®ã¯ã©ã¹ãæ¡åŒµããUsersApp.view.gridãããèªäœã§ããŒãããå¿
èŠããããŸãã ããŒãã«ã³ãŒãïŒ
Ext.define('UsersApp.view.grid', { extend: 'Ext.grid.Panel', alias: 'widget.NamesGridPanel', requires: ['Ext.grid.plugin.CellEditing', 'Ext.form.field.*'], itemId: 'usersGrid',
ããã§ã¯æ°ããããšã¯ãããŸãã-ããŒãã«ã¯ã©ã¹ãäœæãããåãæ§æããïŒåïŒãã¬ã³ãŒãã远å /åé€ããããã®ãã¿ã³ãåããããŒã«ããŒã远å ãããŸãïŒã³ãŒããèªã¿ãããããããã«ããããã®ã¡ãœããã®å®è£
ã¯é衚瀺ã«ãªããŸãïŒã ã¹ãã¬ãŒãžã¯ãŸã ããŒãã«ã«ãã€ã³ããããŠããªãããšã«æ³šæããŠãã ãããããã¯ã³ã³ãããŒã©ãŒã§è¡ãããŸãã
ãµãŒããŒãšããŒã«ã«ã®2ã€ã®ãªããžããªãäœæããŸãã ãããã®ã¹ãã¬ãŒãžã¯äž¡æ¹ãšãåãã¢ãã«ïŒå®éã«ã¯åãæ§é ã®ããŒã¿ãå«ãããïŒãæã¡ãŸããããããã·ã¯ç°ãªããŸãã ã¢ãã«ã¯ãUsersApp.model.Namesã¯ã©ã¹ã«ãã£ãŠèšè¿°ãããŸãã
Ext.define('UsersApp.model.Names', { fields: [{name: 'id', type: 'int', useNull: true}, {name: 'firstName'}, {name: 'secondName'}], extend: 'Ext.data.Model',
ã¢ãã«ã¯3ã€ã®ãã£ãŒã«ãã§æ§æãããŸã-人ã®èå¥åã圌ã®ååãšå§ã èå¥åã«ã¯æŽæ°åãæå®ãããuseNullãã©ã¡ãŒã¿ãŒã䜿çšãããŸããããã¯ãæŽæ°ãšããŠèªèã§ããªãå Žåã¯å€ãnullã«èšå®ããŸãïŒããã§ãªãå Žåã¯0ã«ãªããŸãïŒã ã¢ãã«ã«ã¯ããªããŒã¿ãŒã瀺ãããŸã-å人ã®ååãšå§ã¯å°ãªããšã1æåã§ããå¿
èŠããããŸãã
ãµãŒããŒåŽã®ããŒã¿ãããŒãããã¹ãã¬ãŒãžãäœæããŸãã
Ext.define('UsersApp.store.store', { extend: 'Ext.data.Store', requires : ['UsersApp.model.Names', 'Ext.data.proxy.Ajax'], model: 'UsersApp.model.Names', proxy: { type: 'ajax', api: { read: 'crud.php?act=read', update: 'crud.php?act=update', create: 'crud.php?act=create', destroy: 'crud.php?act=delete' }, reader: { type: 'json', root: 'names', idProperty: 'id' }, writer: { type: 'json', writeAllFields: false, root: 'names' } } });
ãã®ããããµãŒããŒèªã¿èŸŒã¿ã¢ãã«ã¯ãããŒã¿æ§é ãèšè¿°ããäœæãããã¢ãã«ãšãããããããŒã¿ã®èªã¿åããšæžã蟌ã¿çšã«æ§æãããããªãŒããŒããªãŒããŒãšãã©ã€ã¿ãŒãã©ã€ã¿ãŒãåããAjaxãããã·ã䜿çšããŸãã apiãã©ã¡ãŒã¿ãŒã¯ãExt JSãããŒã¿ã®èªã¿åããæŽæ°ã远å ãåé€ã®ããã«ã¢ã¯ã»ã¹ããURLã¢ãã¬ã¹ãæå®ããŸãã
ããŒã«ã«ã¹ãã¬ãŒãžã³ãŒãïŒ
Ext.define('UsersApp.store.storeLocal', { extend: 'Ext.data.Store', requires : ['UsersApp.model.Names', 'Ext.data.proxy.LocalStorage'], model: "UsersApp.model.Names", proxy: { type: 'localstorage', id : 'Names' } });
localstorageããããã·ãšããŠæå®ããŸã-ãã¹ãŠã®ããŒã¿ã¯ããŒã«ã«ã¹ãã¬ãŒãžããããŒããããŸãã idã«ã¯ãããŒãšå€ã®ããŒã«ã«ã¹ãã¬ãŒãžã«ååãäœæããããã«äœ¿çšãããäžæã®ãããã·èå¥åãæå®ããŸãã
ãŸãšãããšã ã«ã©ã ãèšå®ãããŠããããã¹ãã¬ãŒãžãæ¥ç¶ãããŠããªãããŒãã«ãå«ããŠã£ã³ããŠãããã1ã€ã®ã¢ãã«ãæã€2ã€ã®ãªããžããªïŒãµãŒããŒãšããŒã«ã«ïŒããããŸãã ããããã¹ãŠãäœæ¥äžã®ã¢ããªã±ãŒã·ã§ã³ã«æ¥ç¶ããå¿
èŠããããŸãïŒ ã³ã³ãããŒã©ãŒã¯ãããè¡ããŸãïŒ
Ext.define("UsersApp.controller.Main", { extend: 'Ext.app.Controller', requires: [
ããããã®ã³ãŒãïŒ é çªã«è¡ããŸãããã ãŸããã³ã³ãããŒã©ãŒã®å Žåãå¿
èŠãªäŸåé¢ä¿ãæå®ããå¿
èŠããããŸãããã®å Žåããããã¯å
éšã®Utilities UsersApp.Utilsãš2ã€ã®ã¹ãã¬ãŒãžã§ãã initã¡ãœããã¯ãã³ã³ãããŒã©ãŒãåæåããããšãã«åŒã³åºãããŸããã€ãŸããã¢ããªã±ãŒã·ã§ã³ãèµ·åããåã«ããã¹ãŠã®æºåã¢ã¯ã·ã§ã³ãå®è¡ããå¿
èŠããããŸãã ã¹ãã¬ãŒãžã€ã³ã¹ã¿ã³ã¹ãäœæããããŒã«ã«ã¹ãã¬ãŒãžãããŒãããŸãïŒãããã¯ãŒã¯ãžã®ã¢ã¯ã»ã¹ã«é¢ä¿ãªãåäœããŸãïŒãã³ãŒã«ããã¯ãæå®ããåŸãããŒãåŸã«UsersApp.Utils.pingã¡ãœãããåŒã³åºããŠãããã¯ãŒã¯ã®å¯çšæ§ã確èªããŸãã ping颿°ã¯ããµãŒããŒäžã®ãã¡ã€ã«ã«Ajaxã«ãªã¯ãšã¹ããéä¿¡ããæåããå Žåã¯successbackã³ãŒã«ããã¯é¢æ°ãåŒã³åºããŸãããã以å€ã®å Žåã¯å€±æãåŒã³åºãããŸãã
ãããã£ãŠããããã¯ãŒã¯ãããå ŽåãããŒã«ã«ã¹ãã¬ãŒãžãšã³ããªããµãŒããŒã¹ãã¬ãŒãžã«è¿œå ããããã®åŸããŒãã«ã¹ãã¬ãŒãžããµãŒããŒã«ã€ã³ã¹ããŒã«ãããŸãã ãããã¯ãŒã¯ããªãå ŽåãããŒãã«ã¹ãã¬ãŒãžã¯åã«ããŒã«ã«ã¹ãã¬ãŒãžã«ã€ã³ã¹ããŒã«ãããŸãã
äœåã®äŸã¯
ãã¡ããã芧ãã ãã ã ãœãŒã¹ïŒPHPã®ãµãŒããŒåŽãšããŠãJavaã§èšè¿°ããŸãã-å¿
èŠãªå Žåã¯æçš¿ããŸãïŒã¯
ãã¡ã ã
PSã æ°ããRustaveliã¢ã«ãã ã®æå¥œå®¶-ãããŠããªãã«æããå¬ã®ããã°ã©ããŒã®å€:)