Firefox58.0.1ã§Faviconize Tabã®ããã«ã¿ãã表示ãã
Firefox57ã«ã¢ãããã¼ãããéã«ã¿ããuserChrome.cssを使ってFaviconize Tabっぽくããã®ã§ããã58.0.1ã«ã¢ãããã¼ãããã¨ããxulã®idãæ§é ãå¤ãã£ã¦ãã¾ã£ãã®ããã¾ãå
ã«æ»ã£ã¦ãã¾ãã¾ããã
ã¨ãããã¨ã§ã
ããããåèã«ãã¦ãchrome://browser/content/browser.xulã®ã¤ã³ã¹ãã¯ã¿ã¼ã¨ã«ããã£ããã¤ã¤userChrome.cssã¡ãã£ã¨ããã£ã¦ã¿ã¾ããã大ããã¯tabbrowser-tabsãclassããidã«å¤ãã£ãã¿ããã§ãããæçµçã«ã¯ä»¥ä¸ã®éãã§ãã
@charset "utf-8"; tab .tab-text, tab .tab-text-stack * { margin: 0px; padding: 0px; max-width: 0px; display: none; } tab .tab-content, #tabbrowser-tabs tab[fadein="true"] { min-width: 36px !important; max-width: 52px !important; } #tabbrowser-tabs tab[fadein="true"]:not([selected="true"]), #tabbrowser-tabs tab[fadein="true"] { max-width: 36px !important; } #tabbrowser-tabs tab .tab-close-button { display: none !important; } #tabbrowser-tabs tab[pending] { opacity: .6; }
ããããAppData/Roaming/Mozilla/Firefox/Profiles/xxxxxxxxx.default/chrome/userChrome.cssã¨ãã¦ä¿åï¼åèµ·åããã¨ã
ãããªæãã§è¡¨ç¤ºãããããã«ãªãã¾ããã
Firefox57ã§Faviconize Tabã®ããã«ã¿ãã表示ãã
Firefox57ã«ã¢ãããã¼ãããã®ã§ããã使ç¨ãã¦ããã¢ããªã³ãä¸æ°ã«æ¸ã£ã¦ãã¾ã使ãåæãããªãå¤ãã£ã¦ãã¾ãã¾ãã(æ³£)
ä¸ã§ãã¿ãã®è¡¨ç¤ºã¯10ã¿ã以ä¸éãã¦ããã®ã常ã ã£ãã®ã§Faviconize Tabã使ã£ã¦faviconã ã表示(éããæã¯ä¸ã¯ãªãã¯)ãã¦ãã¾ããããããã横ã«ãã©ã¼ã£ã¨ä¸¦ã¶ããã«ãªã£ã¦ãã¾ã£ã¦ã¢ã¬ãªã®ã§ãuserChrome.cssã§ãªãã¨ããã¦ã¿ã¾ããã
åèã«ããã®ã¯ãFaviconize Tabã§ä½¿ç¨ããã¦ããfaviconizetab.cssã§ãã
ãããã¡ãã£ã¨ã ãå¤æ´ãã¦ã以ä¸ã®ãããªuserChrome.cssãä½æã
@charset "utf-8"; tab .tab-text, tab .tab-text-stack * { margin: 0px; padding: 0px; max-width: 0px; display: none; } .tabbrowser-tabs tab[fadein="true"] { min-width: 36px !important; max-width: 52px !important; } .tabbrowser-tabs tab .tab-icon-image, .tabbrowser-tabs tab .tab-close-button { margin-left: 3px; } .tabbrowser-tabs tab[fadein="true"]:not([selected="true"]), .tabbrowser-tabs tab[fadein="true"] { max-width: 36px !important; } .tabbrowser-tabs tab .tab-close-button { display: none !important; }
ããããAppData/Roaming/Mozilla/Firefox/Profiles/xxxxxxxxx.default/chrome/userChrome.cssã¨ãã¦ä¿åï¼åèµ·åããã¨ã
ãããªæãã§è¡¨ç¤ºãããããã«ãªãã¾ããã
ã¨ããããã¯ããã§åããã¨ã«ãã¾ãã
JsViewsãã¥ã¼ããªã¢ã« - ãã³ãã¬ã¼ãã®ãªã³ã¯ã解é¤ãã
JavaScript製ã§jQueryéä¾åãªãã³ãã¬ã¼ãã¨ã³ã¸ã³ã§ããJsRender/JsViewsã使ã£ããã¥ã¼ããªã¢ã«ãæ¸ãã¦ã¿ããã¨æãã¾ãã
以åã«æ¸ããã¨ã³ããªJsRender入門 - Do You PHP はてなãåç
§ãã¦ãã ããã
ä»åãããã¨
JsViewsã§ãã³ãã¬ã¼ãã®ãªã³ã¯ã解é¤ãã
ã³ã¼ã
<html> <body> <div id="list_simple"></div> <hr/> <button id="add">add</button> <button id="unlink">unlink</button> <button id="empty">empty</button> <script src="https://code.jquery.com/jquery-1.11.1.min.js" type="text/javascript"></script> <script src="http://www.jsviews.com/download/jsviews.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function() { var fruits = {}; $.templates('#template').link("#list_simple", fruits); $(document) .on('click', '#add', function(ev) { $.observable(fruits).setProperty({ code: "99", name: "ããªã¢ã³" }); }) .on('click', '#unlink', function(ev) { $.observable(fruits).setProperty({ code: "01", name: "ããã" }); // ãªã³ã¯ã解é¤ãããã³ã³ãã³ãã¯ãã®ã¾ã¾ $.unlink('#list_simple'); }) .on('click', '#empty', function(ev) { // 空ã«ãããã¨ã§ããªã³ã¯ãèªåçã«è§£é¤ããã $('#list_simple').empty(); }); }); </script> <script id="template" type="text/x-jsrender"> {^{if #data}} <div id="inner"> {^{>code}}/{^{>name}} </div> {{/if}} </script> </body> </html>
説æ
ãã³ãã¬ã¼ãã¸ã®ãªã³ã¯ã解é¤ããå ´åãjsViewsã®unlinkã¡ã½ããã使ç¨ãã¾ãããã ããunlinkã¡ã½ããã¯ãã³ãã¬ã¼ãå ã®scriptã¿ã°ãåé¤ããã ããã¤ã¾ãããªã³ã¯ã解é¤ãããã ãã§æç»æ¸ã¿ã®ã³ã³ãã³ãã¯ãã®ã¾ã¾ã«ãªãã¾ãã®ã§ãå¿ è¦ã«å¿ãã¦ã³ã³ãã³ãã®ã¯ãªã¢ãªã©ãè¡ãå¿ è¦ãããã¾ããã¾ãããªã³ã¯ããããã¼ããåé¤ãããå ´åãèªåçã«ãªã³ã¯ãåé¤ããã¾ãã
JSFiddleã§åä½ãè¦ã
JsViewsãã¥ã¼ããªã¢ã« - ãªã³ã¯ãããã³ãã¬ã¼ããã¾ããã¨å·®ãæ¿ãã
JavaScript製ã§jQueryéä¾åãªãã³ãã¬ã¼ãã¨ã³ã¸ã³ã§ããJsRender/JsViewsã使ã£ããã¥ã¼ããªã¢ã«ãæ¸ãã¦ã¿ããã¨æãã¾ãã
以åã«æ¸ããã¨ã³ããªJsRender入門 - Do You PHP はてなãåç
§ãã¦ãã ããã
ä»åãããã¨
JsViewsã§ãªã³ã¯ãããã³ãã¬ã¼ããå¥ã®ãã³ãã¬ã¼ãã«å·®ãæ¿ãã
ã³ã¼ã
<html> <body> <div id="list_simple"></div> <hr/> <button id="add">add</button> <button id="switch">switch</button> <script src="https://code.jquery.com/jquery-1.11.1.min.js" type="text/javascript"></script> <script src="http://www.jsviews.com/download/jsviews.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function() { var fruits = { foo: 'foo', bar: 'bar' }; $.templates({ template1: "#template1", template2: "#template2" }); var current_template = $.templates.template1; $.link.template1("#list_simple", fruits); $(document) .on('click', '#add', function(ev) { $.observable(fruits).setProperty({ code: "99", name: "ããªã¢ã³" }); }) .on('click', '#switch', function(ev) { /** * ãã³ãã¬ã¼ããå·®ãæ¿ããviewãªãã¸ã§ã¯ããåå¾ãã */ var $view = $.view('#inner'); // $.view($('#inner'))ã§ãOK if (current_template == $.templates.template1) { current_template = $.templates.template2; } else { current_template = $.templates.template1; } /** * ãã³ãã¬ã¼ããå·®ãæ¿ãã * * ã³ã³ãã¤ã«æ¸ã¿ãã³ãã¬ã¼ãã§ãªãå ´åã$.templates('#template1')ã® * ãããªæ¸å¼ã§ãOK */ $view.tmpl = current_template /** * æ°ãããã³ãã¬ã¼ãã§åæç» */ $view.refresh(); }); }); </script> <script id="template1" type="text/x-jsrender"> {^{if #data}} <div id="inner"> {^{>code}}/{^{>name}} </div> {{/if}} </script> <script id="template2" type="text/x-jsrender"> <h1 id="inner"> {^{>foo}}:{^{>bar}} </h1> </script> </body> </html>
説æ
ãªã³ã¯ãããã³ãã¬ã¼ããä½ããã®ã¤ãã³ããçºçããã¿ã¤ãã³ã°ã§ãå¥ã®ãã³ãã¬ã¼ãã«å·®ãæ¿ããäºãã§ãã¾ãããã®å ´åãviewãªãã¸ã§ã¯ãã®tmplããããã£ã«å¥ã®ãã³ãã¬ã¼ããªãã¸ã§ã¯ããä»£å ¥ããviewãªãã¸ã§ã¯ãã®refreshã¡ã½ãããå¼ã³åºããã¨ã§æ°ãããã³ãã¬ã¼ãã使ã£ã¦åæç»ããã¾ãã
JSFiddleã§åä½ãè¦ã
BluetoothçHHKB Professionalãå°çï¼
PFUãã¤ã¬ã¯ãAmazonã·ã§ããã§äºç´ãã¦ããBluetoothçHHKB Professionalãç¡äºå°çãã¾ããã

PFU Happy Hacking Keyboard Professional BT è±èªé å/墨 PD-KB600B
- åºç社/ã¡ã¼ã«ã¼: PFU
- çºå£²æ¥: 2016/04/12
- ã¡ãã£ã¢: Personal Computers
- ãã®ååãå«ãããã° (6件) ãè¦ã
ããéå°ã®å
å°çããè·ç©ã®ç®±ãéããã¨ãããããããããã§ãããããäºç´ç¹å
¸(å
ç)ã®ã¹ãã¼ãã±ã¼ã¹ãä»ãã¦ãã¾ããã
å粧箱ã
ç®±ã¯éè¦ãããªããä¸èº«ã大äºã§ããä»ååãã¦ã墨ããè³¼å
¥ãã¾ããããã¼ã¯ã°ã¬ã¼ã¨ãããæå¤ã¨é»ããªããã§ããã
ä¼ç¤¾ã§ä½¿ã£ã¦ãå代HHKB Professional(PD-KB300)ã¨ä¸¦ã¹ãã¨ãããå代ã¯ããç½è²ã¨è¨ãããèå
ç¯ç¼ããã¦ã¯ãªã¼ã è²ã«ãªã£ã¦ã¾ããã©(æ¶)
ã¡ãã£ã¨ã¿ã¤ãã³ã°ããã¨ãããå代ã¨æ¯ã¹ã¦ããªããã«ãã£ã«ãã£æãããªãã§ãããã¨ãã¿ãããã¡ãã£ã¨è»½ããªã£ã¦ãæ°ããã¾ããProfessional2ãããããªãã§ããããããã
ç°å¢è¨å®
æ®æ®µã¯DELL製ãã¼ãPCï¼Windows7(64Bitç)ï¼å代HHKB Professionalï¼トリニティーワークス社のUSJP Proã¨ããçµã¿åããã§ä½¿ã£ã¦ã¾ãã
USJP Proã§ãã£ã¦ããã¨ã¯
- ãã¼ãã¼ãã®é åå¤æ(106â101)
- CapsLockã¨ctrlãã¼ã®å ¥ãæ¿ã(ãã¼ãPCå´ãå«ã)
ã®2ã¤ãªã®ã§ãããä»åè³¼å ¥ããHHKBãå«ãã¦
- å代HHKBãä»ã¾ã§ã©ãã使ãã
- BluetoothçHHKBãå代ã¨åæ§ã«ä½¿ãã
- ãã¼ãPCã®CapsLockã¯ctrlãã¼ã¨å ¥ãæ¿ã
ã¨ããç°å¢ã«ãããã®ã§ãUSJP Proãããã¦ã¬ã¸ã¹ããªãç´æ¥ããããã¨ã«ãã¾ããã
ãã¼ãã¼ãã®é åå¤æ
使ç¨ãããã¼ãã¼ãæ¯ã«106(ãã¼ãPCã®ãã¼ãã¼ã)ã¨101(HHKBÃ2)ãåãæ¿ããå¿ è¦ãããã¾ããã°ã°ã£ã¦ã¿ãã¨ãããHIDæ¯ã«è¨å®ãä¸æ¸ãã§ãããã¨ãåãã£ãã®ã§æ©éå®æ½ãæé ã¯ä»¥ä¸ã®ã¨ã³ããªãåèã«ãã¾ããã
(1)ã¾ãã¯ãããã¤ã¹ããã¼ã¸ã£ã§2å°åã®HHKBã®ãã¼ãã¦ã§ã¢IDããããã確èªãå¿
è¦ã§ããã°ãã¼ã¹ã³ã³ããã¼IDãã
(2)ã¬ã¸ã¹ããªã¨ãã£ã¿ã使ã£ã¦ãããããã®æå®ã®å ´æã«KeyboardTypeOverrideãKeyboardSubtypeOverrideã追å
CapsLockã¨ctrlãã¼ã®ãã¼ãããã³ã°å¤æ´
ãã¡ããã°ã°ãã¨ããããæ å ±ãåºã¦ãã¾ãããããèããã¨CapsLockãã¼ãctrlãã¼ã«ãªãã°è¦ä»¶ã¯æºãããããã§å ¥ãæ¿ããå¿ è¦ããªãäºã«æ°ã¥ãã¾ãããã¨ãããã¨ã§ã以ä¸ã®ãµã¤ããåèã«ã¬ã¸ã¹ããªãå¤æ´ã
å®éã«ã¯ãã³ããã§regãã¡ã¤ã«ãä½ã£ã¦å®è¡ãã¾ããã
OSåèµ·åãã¦åä½ç¢ºèª
ã¬ã¸ã¹ããªãå¤æ´ãããWindowsãåèµ·åããã¼ãPCã»å代HHKBã»BluetoothçHHKBã§ããããåä½ç¢ºèªããåé¡ããªããã¨ã確èªãã¾ããã
ã¾ã¨ã
ä»æ¥ã®ãæ¼ãããã使ã£ã¦ã¾ããããããããã¼ãã¼ãå¨ãã®ã±ã¼ãã«ãç¡ããªã£ã¦æå
ããã£ãããã¾ããããã«ãã£ã«ãã£æãããªãã®ãæ°ã«ãªãã¾ã(æ±)ããã¾ããã®ãã¡æ
£ããã§ãããã
å¾ã§Android端æ«ã«ãç¹ãã¦ã¿ããããã
ã¤ãã«HHKBã®Bluetoothçãçºå£²ï¼
ãã¼ã£ã¨ãããã°è¯ãã®ã«ãã¨æã£ã¦ããHHKB BluetoothçãPFUããçºå£²ããããã¨ã«ãªã£ãããã§ãï¼
çºå£²æ¥ã¯2016/04/22ãPFUãã¤ã¬ã¯ãAmazonã·ã§ããã§äºç´åä»ä¸ã§ãã
ä»ã®ã¨ãããè²ã¯å¢¨ã®ã¿ãè±èªé
åã»ç¡å»å°ã»æ¥æ¬èªé
åã®3ã¿ã¤ãã

PFU Happy Hacking Keyboard Professional BT è±èªé å/墨 PD-KB600B
- åºç社/ã¡ã¼ã«ã¼: PFU
- çºå£²æ¥: 2016/04/12
- ã¡ãã£ã¢: Personal Computers
- ãã®ååãå«ãããã° (6件) ãè¦ã

PFU Happy Hacking Keyboard Professional BT ç¡å»å°/墨 PD-KB600BN
- åºç社/ã¡ã¼ã«ã¼: PFU
- çºå£²æ¥: 2016/04/12
- ã¡ãã£ã¢: Personal Computers
- ãã®ååãå«ãããã° (1件) ãè¦ã

PFU Happy Hacking Keyboard Professional BT æ¥æ¬èªé å/墨 PD-KB620B
- åºç社/ã¡ã¼ã«ã¼: PFU
- çºå£²æ¥: 2016/04/12
- ã¡ãã£ã¢: Personal Computers
- ãã®ååãå«ãããã° (4件) ãè¦ã
Motorola Moto 360(1st Gen)ã«Android 6.0.1ãéã£ã¦ãã
ä¹
ã
ã®ã¨ã³ããªã§ãããPHPãã¿ã§ã¯ããã¾ããã
2nd Genããªãªã¼ã¹ããã¦é½ã®ç®ãå½ãããªããªã£ãMoto 360(1st Gen)ã§ãããTaskerï¼AutoVoiceï¼AutoWearã®ã´ã¼ã«ãã³ã³ã³ãã®ãããã§å人çã«ã¯ã¾ã ã¾ã ç¾å½¹ã§ãã以åãããä»ããæéãé·ããªããä»äºä¸ã¯ã»ã¼ã¤ãã£ã±ãªãã§ãããªã¥ã¼ãºåãã¡ãã£ããã©ããã
ã§ãä»æããã¤ãéãè
ã«ã¤ãã¦ãµã¨è¦ãã¨ãããï¼Moto360ã®ããããã»ã»ã»
ã«ã¼ããéãã¦ã¿ãã¨ããã
ããï¼jugglyããã§ã¢ãããã¼ãããããããã¨ãã£ããã©åä¿¡åçã§ãããããããªãã(æ±)
ä¼ç¤¾ã«å°çå¾ãã¢ãããã¼ããå®è¡ã
å¾
ã¤ãã¨5åãç¡äºãAndroid 6.0.1(MEC23I)ã«ãªãã¾ããã
ã¡ãã£ã¨ããã£ã¦ã¿ãã¨ã¡ãã¥ã¼ãã¡ãã£ã¨å¤ãã£ãã£ã½ãã®ã§ã¾ã¨ãã¦ããã¾ãã
æé¦ã®ã¸ã§ã¹ãã£ã¼
è¨å®ã¢ããªãã表示ãããã¡ãã¥ã¼ã«ãæä½ãã¨ãã¦ã¾ã¨ããããããã§ãã
ããã«æé¦ã®æä½ã®æå¹ç¡å¹ã®ã¹ã¤ãããããã¾ããã¾ãããã¥ã¼ããªã¢ã«ãèµ·åãã¦ä¸éãã¸ã§ã¹ãã£ã¼ã確èªã§ãã¾ãã
ã«ãã¦ããè
ãä¸ãã«ããã®ã£ã¦çµæ§é£ãããªãã®ããªããã
権é管ç
æ°ããã権éãã¡ãã¥ã¼ã追å ããã¦ãã¾ãã
éãã¦ã¿ãã¨ãã¤ã³ã¹ãã¼ã«ããã¦ããã¢ããªã®ä¸è¦§ã表示ããã¾ãã
ã¢ããªãé¸æããã¨æ¨©éã®ä¸è¦§ã表示ãããã®ã§ãããã§æ¨©éã®æå¹ç¡å¹ã®åãæ¿ããè¡ããããã§ãã