照明行业
重要导航
行业协会和机构
LED照明标准查询
北美照明协会IES,或称为IESNA,Illuminating Engineering Society of North America,其标准以IES打头
国际电工委员会IEC,International Electrotechnical Commission,其标准以IEC打头
国际照明委员会CIE,International Commission on Illumination,CIE为其法文缩写 Commission internationale de l'éclairage
电气和电子工程师协会IEEE,Institute of Electrical and Electronics Engineers,其标准委员会为IEEE-SA(standard association)。IEEE额Xplore计划,将部分标准0费用面向公众下载,官网为[IEEE Xplore]。(http://ieeexplore.ieee.org/Xplore/guesthome.jsp)。这儿有一份[IEEE Xplore的介绍](https://wenku.baidu.com/view/ed2596dbbed5b9f3f80f1c1f.html)。IEEE的标准制定遵循[开放性标准原则](https://open-stand.org/).
国际照明设计师协会IALD,全球照明界的“奥斯卡”
中国国家标准化管理委员会SAC
国家技术标准资源服务平台:标准在线搜索和阅读
国家电光源质量监督检验中心
中国标准在线服务网:标准购买
中国标准化研究院
中国照明学会CIES
中国照明电器协会
国家半导体照明工程研发及产业联盟CSA,CHINA SOLID STATE LIGHTING ALLIANCE,秘书处为民办非营利机构—北京半导体照明科技促进中心。
半导体照明产业技术创新战略联盟,找不到专门的官网,只有在中国产业技术创新战略联盟下有一个页面。行业地位不明。此网站copyright信息在2011年,似乎自那以后都没有更新过了。
全国照明电器标准化技术委员会,介绍站点,是国标制定单位,为1975年成立的全国电光源标准化中心旗下单位,1997年为与国际接轨而成立,是国际电工委员会IEC(TC34)的国内技术归口单位。秘书处设在北京电光源研究所。
中国照明电器协会标准化技术委员会,是中国照明电器协会旗下的标准化机构。
中国LED智慧照明应用与推广研讨会
中山市半导体照明行业协会, 英文名Zhongshan Semiconductor Lighting Industry Association,缩写为ZS-SLIA,只是网站打不开...
行业网站和媒体
中国之光网:中国照明电器学会官网
中国照明网:中国照明学会官网
LED网
中国半导体照明网
中国灯具商贸网
《中国标准化》杂志
重要标准
路灯控制管理系统系列标准等一批照明电器相关国家标准发布
两项LED产品光辐射国家标准发布
生产厂家
康康,腾讯儿童台灯生产和销售,可能是目前最好的学习台灯。
阳光流
厦门,立达信LEEDARSON, 教育照明网站,一灯一世界网站:校园照明、高端家庭照明、台灯、移动照明
厦门,捷能通Nonton:校园照明、台灯
宁波,凯耀照明KLITE, 集团网站:校园照明,
杭州,纳晶科技LEDISUN,新三板代码830933:量子点LCD、LED开发制造、台灯
佛山,国星光电,主板上市企业,代码002449,LED和灯具开发制造
上海,国幸中国照明,专注于教室健康照明研究和开发
安徽亳州利辛县,九州天极之光,自研无极灯用于教室照明
浙江上虞,阳光照明,主板上市企业,代码600261,在上虞、安徽、河内等地有工厂,灯具范围广泛,包括台灯、智能家居、学校、办公、商业等等。
深圳,汉鼎照明, LED路灯、隧道灯等,以及节能改造项目EMC(Energy Management Contracting)合同能源管理
扬州,科盟,LED灯具制造
深圳,聚飞,LED封装
深圳,春发光电科技有限公司,LED封装工厂
台北,森田光電有限公司,LED封装工厂
厦门,三安光电,主板上市,代码600703,LED芯片公司,收购有美国LED芯片制造和封装公司朗明纳斯公司Luminus Devices,原持有台湾璨圆光电股份19.77%,后由于晶元光电全资收购璨圆而持有台北晶元光电公司股份3.1%,2017年9月已将所持股份完全清退。
台北,晶元光电,LED芯片公司
台中力玛科技LIXMA,灯具制造企业,为台灣勁越(股)有限公司2003年成立。
欧迪电器,浙江绍兴的台灯代工厂
(瑞丰光电)[http://www.refond.com/#]上市企业,深圳LED灯珠厂商,立达信供货商
美国加州,普瑞Bridgelux,LED芯片公司
美国,科锐Cree,纳斯达克上市企业,LED芯片公司
重要研究和相关新闻
照明设施经济运行征求意见稿
中国标准化研究院参与牵头的国家重点研发计划专项“光与健康”在苏州启动, 2017-11-23
“中小学教室照明标准”将列入2018年广州民生实事?
周边相关公司
2018,新年快乐!
时钟不停歇 旧去新来
最冷的日子还没结束 却已经期待春暖花开
或许不应期待更多的阳光
现在还能享受冬日里的晴朗
只是一年年地去了又来
我奢望日子 还有很长很长
很长很长 很长很长
长长短短 短了不再长
长得已经看惯桑田沧海
长得已经看惯爱浓情殇
长得已经不敢奢望更长
活着一刹那 一刹那有多长
chrome如何查看一个https网站的证书?
开发者工具中, 选择security->View Certificate, 自己的站点重点关注证书过期日期, 过期了要及时更新, APP中也是.
关于证书有个很好的文章在这儿
js获取UTF-8字符串的16进制数据
所有都好用, 自然是用库
推荐的库是iconv, iconv-lite.
不过就是临时转一下, 还需要建一个npm项目不成? 有简单的办法吗?下面讲.
先说一个node.js和chrome兼容的做法: charCodeAt
'中文'.charCodeAt(0).toString(16) // "4e2d"
'中文'.charCodeAt(1).toString(16) // "6587"
'abc'..charCodeAt(0).toString(16) // "61"
这种方法得一个一个去取, 当然有个for循环会更方便
这个方法的逆方法是String.fromCharCode(new Uint16Array([0x6587])) ,打印出文
这儿奇怪的是上述内容都是双字节编码...
chrome和firefox等浏览器实现了一个TextEncoder的类
只是这个类现在只支持utf8编码, 不再支持其他类型,如gbk.
var x = new TextEncoder().encode('中文')
//输出 Uint8Array(6) [228, 184, 173, 230, 150, 135]
(new Array(...x)).map(v=>v.toString(16)).join()
//"e4,b8,ad,e6,96,87" 上面先转普通数组, TypedArray不能用map将数字转为字符串, 然后再转16进制表示的字符串,再连接
逆类是TextDecoder, 这个支持gbk
new TextDecoder().decode(new Uint8Array([228, 184, 173, 230, 150, 135]))
//输出 "中文"
new TextDecoder('gbk').decode(new Uint8Array([0xd6,0xd0, 0xce, 0xc4]))
//输出 "中文"
(new TextDecoder('gbk')).decode(new Uint16Array([0xd6d0, 0xcec4]))
// "兄奈", 字节序问题, 这儿应该是小端字节序, 将字节反过来就对了
(new TextDecoder('gbk')).decode(new Uint16Array([0xd0d6, 0xc4ce]))
// "中文"运行于JVM上的JavaScript
既然JVM上面可以运行客体语言, 那么会不会有人在JVM上运行JavaScript? 还别说, 真有!
ringo.js
先说第一个项目,ringo,它在github上有600多的star数目.
解压缩放入path后运行ringo, 进入其REPL, 我试了一下, 下面的是可以运行的:
f = function(s){console.log(s)}
f('hello')
ringo有自己的包管理工具rp, 跟npm差不多. 不过需要安装:
ringo-admin install grob/rp
然而我在windows 10上安装却会报错:
Wrapped java.lang.UnsupportedOperationException
at fs.js:1100 (changePermissions)
at C:\l\tools\admin\install.js:86 (installPackage)
at C:\l\tools\admin\install.js:156 (main)
at C:\l\tools\admin\main.js:14 (main)
at C:\l\tools\admin\main.js:30
哦...这就无法继续了...
一个语言的强大在于其库的强大,如果它能同时使用npm和java库,那就真的非常强大了,看来暂时是无法验证了.
java8 jjs: oracle nashorn
没错. Java8支持JavaScript, 这个运行工具就是jjs, 正式名字叫做Nashorn. Oracle官方的这篇文章 Oracle Nashorn: A Next-Generation JavaScript Engine for the JVM有一些说明, 我查了一下我的java, 还真是8:
λ java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
根据文章说, jjs和java在同一目录, 能运行java就意味着jjs也能运行, 先看看版本:
λ jjs -v
nashorn 1.8.0_111
jjs>
果然进来了呢! 试了一下, 居然不支持console.log...
对应的打印命令,居然是print...
对此, 文章是这样解释的: 虽然我们兼容ECMA, 但是浏览器环境下的特有变量我们是不支持的,比如window, console这些.
好处呢? 一个是在Java中调用JavaScript代码,还能用到JavaScript的库, 恩,这个感觉比较符合oracle的思路...
文中举例了在Java中调用mustache.js库的方式.
package sample2;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import java.io.FileReader;
public class Mustache {
public static void main(String... args) throws Throwable {
ScriptEngineManager engineManager =
new ScriptEngineManager();
ScriptEngine engine =
engineManager.getEngineByName("nashorn");
engine.eval(new FileReader("src/sample2/mustache.js"));
Invocable invocable = (Invocable) engine;
String template = "Email addresses of {{contact.name}}:\n" +
"{{#contact.emails}}\n" +
"- {{.}}\n" +
"{{/contact.emails}}";
String contactJson = "{" +
"\"contact\": {" +
"\"name\": \"Mr A\", \"emails\": [" +
"\"contact@some.tld\", \"sales@some.tld\"" +
"]}}";
Object json = engine.eval("JSON");
Object data =
invocable.invokeMethod(json, "parse", contactJson);
Object mustache = engine.eval("Mustache");
System.out.println(invocable.invokeMethod(
mustache, "render", template, data));
}
}
另一个是在JavaScript中调用Java,这个我比较关心. 哦, 直接调用就好了, 很简单的样子:
print(java.lang.System.currentTimeMillis());
Java对象也可以使用new来实体化, 这个就酷了:
var file =
new java.io.File("sample.js");
print(file.getAbsolutePath());
print(file.absolutePath);
java.io.File虽然没有定义absolutePath,但是定义了getAbsolutePath(), jjs会自动增加absolutePath这个属性. 对set也是一样.
这样来看,nashorn很可能可以同时使用部分npm库和java库,看上去很强大的样子.
剩下一个问题就是速度了. nashorn和v8对比速度如何? 从这篇文章来说,还是要差一些的. 对ES的支持呢? 似乎是支持到ES5.1,还没有对新特性的支持. 试了一下ES6中的箭头函数, 果然是没有支持的. 这点上就远不如node.js那么积极啦.
jjs> var a = ()=>{print()}
ECMAScript Exception: SyntaxError: <shell>:1:9 Expected an operand but found )
var a = ()=>{print()}
^
rhino.js
哦, 这个就是被java8抛弃的那个, mozilla基金会的项目, 官网, github项目地址
如何查看android上每个app对CPU的使用情况?
显示CPU使用情况
其实很简单.在"开发者选项"中,倒数第7项左右,有个"显示CPU使用情况",打开即可.
显示信息的解释(转载自知乎):
三个数字代表在三个不同间隔下(1, 5, 15分钟)估算的平均负载(load average)
数字下面显示的就是正在运行的各种进程,包括系统和应用程序的执行序(process)。
一般都是看后面的两个数字,了解系统是否会有长时间处在高负载的状况下,
短暂、突发的高负载并不会造成问题,可忽略不管。
数字越小越好,数字较大就表示机器过载或有某种问题。
单核CPU ,全负载是1.0 ,超过1.0 就表示有执行序在排队等待。
双核CPU ,全负载是2.0 ,因为它可以同时运行两串执行序。
如想要进一步了解,可用Android Show CPU Usage 找看看。
三星、华为等机子显示的数字也许代表不同的用途和意义?
或许就跟一些app 显示CPU, memory, I/O的负载一样。
顺便提一下,数字行和各个执行序都会有蓝、绿、红色的底色条,
数字行的底色条是所有执行序的底色条的总和。
- 蓝色呈现的是低优先度的执行序
- 绿色呈现的是一般优先度的执行序
- 红色呈现的是系统内核的执行序
android studio
另外,还可以使用android studio 3的Android Profiler来查看.位置在View->Tool Windows->Android Profiler中. 前提是要连接USB线.
Flyme OS的性能监视器
FlymeOS在开发者选项的最后一项是性能优化,其中有个性能监视器,可以对CPU进行监控
其他Tips
在拨号菜单输入*#*#4636#*#* 可以看到一些神秘内容:)
不容忽视的JVM
Java作为当年为解决C/C++问题出现的语言, 在当今快速开发的环境下,总觉得已经慢慢不合时宜.而JVM经过多年的优化,已经早已摆脱当年速度太慢的恶名.于是多种新的语言使用不同于Java的新的语法运行于JVM之上,提供更加现代化的语言特性.
知乎上有这个问答: Groovy,Clojure和Kotlin都是基于jvm的语言,那他们在实际项目中的运用场景有什么区别?
为什么很多语言选择在JVM上实现?
我觉得JVM仍然越来越流行的重要原因,是跨平台和速度.
- 跨平台尤其重要. Javascript, Python如此流行的最重要原因可能也是如此. Java能超越C/C++, 我认为它是第一个提出跨平台概念,一次编码多处运行理念的语言,这其中,JVM功不可没.
- 速度是另一个重要原因. node.js作为晚于python的后起之秀, 之所以比python有更多的实际应用, 是因为其在并发速度上面甚至超过了很多传统语言.
- 丰富的库也是很必要的. Java多年积累,库是极其丰富的,JVM天生拥有这些库, 这一点常常是从头做起的新生语言难以做到的.
另外, JVM上可以任一实现的客体语言(Guest),可以紧跟时代趋势,包含新的语言特性. 比如现在流行的动态化,脚本化,函数式编程等,这样,语言常新,而JVM将用不过时.
android studio gradle问题
ANDROID studio 3.0.1版本默认新建项目下build.gradle如下:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
增加了代理,又增加了aliyun的镜像后, 还是无法下载对应的包, 不知道是不是3.0.1太新了, 修改为2.3.3:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
// maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
// google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
// maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
// google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
下载成功!又提示我gradle太旧,我的是3.1,它说至少得3.3以上. 它也不提示个升级方法...
升级gradle: 下载,解压,改路径到bin.
绍兴城区极简速记地图
二 环 解 中 环 二
环 城 放 兴 城 环
|==|==|二环|=====|
| |==|环城|==| |
|==|==|胜利|==|==|
| | |劳动|==| |
| | 府| | | |
| | |东街|==|云东|
| |==|人民|==|==|
| |==|鲁迅|==| |
| | |延安|==| |
| |和畅|钱 | | |
| | |投醪|==| |
| |==|环城|==| |
| 亭 | | 会 |
| 山 | | 稽 |
| |==|城南|==| |
|==|==|二环|==|==|
安卓自动化测试的几篇文章
测试金字塔,TestPyramid,主要是说你应该运行更多的单元测试,因为它又便宜有全面, 并且所有你在上层GUI测试中遇到的问题, 都应该通过增加和修改单元测试来得到完全地覆盖.
对比Appium和Espressoappium-vs-espresso. Appium是GUI黑盒, Espresso也是GUI测试, 不过要有源码, 可以说是白盒.
溢栈网上对appium和Espresso的对比.appium-vs-espresso-for-automated-testing-framework.主要是说espresso有如下优点:
- 可以直接测试Activity
- 可以直接测试Toast
- 可以看到测试覆盖率
robolectric也是白盒, 但据他所说, 他更接近于黑盒, 并且有如下优势:
- 不需要启动模拟器,直接在JVM中运行,速度快
- 模拟绝大多数真实设备行为
- 不需要mockito这样的mock框架
向谷歌和百度提交页面和站点地图(sitemap)
知乎上的这个回答很好,可以参考:如何让各大搜索引擎搜索收录到刚建的wordpress网站?
里面提到了两个提交单个页面的工具
Google 网站站长工具
Baidu url提交_站长工具
对于google提交站点地图,在google console页面可以先添加站点资源,然后在站点地图里面增加站点地图.
对百度提交,在这个页面下面选择自动提交-sitemap的方式来提交.
不过typecho默认是没有站点地图的, 可以通过插件添加.
添加xml格式的站点地图
在这篇文章里面介绍了typecho的google站点地图插件,下载解压缩后,将其中的Sitemap目录上传到usr/plugins中.登录typecho后台的插件页面,然后访问http://your.site/index.php/sitemap/就能得到google想要的xml格式的站点地图.
由于百度也支持谷歌的xml格式的站点地图,尝试提高上述地址时,却发现百度不能正确识别,似乎站点地图后缀必须是.xml.
于是,将上述插件Sitemap/Plugin.php中做一下修改, 第29~32行改为:
public static function activate()
{
Helper::addRoute('sitemap', '/sitemap.xml', 'Sitemap_Action', 'action');
} // old: 'sitemap', '/sitemap/', 'Sitemap_Action', 'action'
重新上传并启用,新的地址变为http://your.site/index.php/sitemap.xml
再次加入百度的站点地图后成功了.
添加html格式的站点地图
在这篇文章:Typecho 无插件轻松实现html站点地图中,提供了无插件下载站点地图的方式. 将文章中的php上传到usr/themes/default/中, 再在typecho后台创建页面,将连接地址设置为sitemap.html, 选择自定义模板为Template Page Of Sitemap,公开度设置为隐藏, 访问http://your.site/index.php/sitemap.html即可.
node升级后, node-serialport需要重新编译
node-serialport确实是一个非常麻烦的模块,相比来说,python的pyserial就要好用很多啊.
node升级后,到对应的项目目录中, 在node_modules\serialport下,运行node-gyp rebuild,可以重新编译serialport模块.
夜梦
晴日携妻游方时,广场阔阔人如织。玻璃长廊场中现,凌空三米好景观。欲寻入口在场心,一无楼梯二无门。旁置梯子搭来使,梯短口高勉强支。妻子担忧手扶好,场工建议如此般。爬至梯顶手举直,撑开数块压口板。下宽上窄人难爬,思忖我上将妻拉。妻与场工多主意,我仍决定尊自意。方换一边爬上梯,一梦忽断续无期。
从grav转typecho
是在受不了grav的体积...已被撑爆...删除全站转typecho了.
grav号称宇宙最强flat cms,看来不适合我