罗泽轩
罗泽轩
console面板是devtool中使用最多的三个面板之一(另外两个分别是Elements和Sources)。 这一章来介绍下console中的小技巧 :smile: 有一个快捷键可以直接打开console面板:``。 ## js上下文 console中运行的函数位于当前js上下文中。什么是js上下文呢?就是假如你现在正处于某个断点,这个断点所在的上下文中有一个变量a,那么在console中你也可以获取这个变量的值。 当然还可以运行上下文中的函数,包括jQuery函数和Underscore函数。以我的看法,插件中的js应该是跟页面共享一个上下文环境的。不过就算你用的插件中使用了jQuery,如果当前载入的页面没有用到jQuery,你还是没办法使用jQuery的。 ## command line api 下面列出些我觉得比较有用的命令行api。这些api可以直接在console面板中使用。 **$()** 等价于`document.querySelector()` **$$()** 等价于`document.querySelectorAll()` **monitor(function)** 监控给定函数的调用情况。当函数调用时输出函数调用提示和调用参数。使用**unmonitor(function)**来取消监控。 **monitorEvent(object, [events])** 监控发生在给定对象上的事件。给定对象可以是`window`,也可以是`$('.some')`这样的DOM对象。 给定的事件可以是单个事件,也可以是`['click', 'hover']`这样的列表。 简直就是神器。美中不足的是不支持`mouseenter`和`mouseleave`,不能监控hover事件了。 详细的事件支持列表见下: https://developer.chrome.com/devtools/docs/commandline-api#monitoreventsobject-events 同样是用**unmonitorEvent(object, [events])**解除绑定。 **debug(function)**...
作为一个chrome用户 && 写前端的程式设计师, chrome开发者工具(chrome devtool)基本上几乎是每天都用到。 虽然之前已经掌握了devtool的基本用法,比如查看元素和设置js断点,在console中测试js代码之类。不过这些只是一些基本的技巧,只是devtool中常用的20%功能,还有80%的高级功能没有用到呢。而且,自身也没有系统去学习。 所以现在就打算挤出几天时间,把官方的文档浏览一遍,系统地学习下devtool的使用技巧。 这里是第一篇,**开篇**,陈述了我写下这个系列的由头,还有一些不适合放在独立的篇章的内容,比如下面的**一些快捷键**: ## 一些快捷键 `` : 在所有的文件中搜索 `` : 快速打开某个文件 ## 推荐一篇必看的文章 https://developer.chrome.com/devtools/docs/authoring-development-workflow 虽然未能覆盖devtool许多功能,而且某些我觉得重要的功能这里也没提,这篇文章还是相当值得一读。它覆盖了许多devtool使用中的要点。
信号是Unix系统中报告各类事件的机制。在设计信号系统的时候,还没有线程这个东西。Unix默认总是有一个进程来响应某个信号。所以当线程被加入到Unix系统后,如何处理信号就成了标准迫需解决的问题。 APUE中也提到了多线程时代下的信号处理问题,但是讲得比较简略。有些问题我还是弄不明白,所以就写了下面几个实验来验证下。 > 注,以下实验中创建和取消线程的代码从略 ## 1. 同个signal是否发送到每一个线程 这部分代码很简单,就不贴出了。就是创建两个线程,然后在绑定的线程处理函数中输出tid。 测试结果,发现Linux对线程的处理是这样的,无论你创建了多少个线程,从头到尾都只有一个线程可以接收各种信号,其他线程都无法响应该信号。 只让某一个线程统一处理各种信号,这也正好是多线程程序处理信号的最佳方法。一般情况下,用户得使用sigaddser...等等来实现在别的线程中屏蔽所有信号,只让唯一的线程接收信号。 注意,即使在Linux下,总是只有一个线程可以处理所有的信号,我们也应该看到,这个线程的选择是随机的。所以,如果你不想某些工作线程受到打扰的话,你还是需要采用上面的“最佳实践”,在其他线程中屏蔽掉信号,只让选定的线程处理之。 ok,那么进一步说,假如我在某些线程中重绑定了信号处理程序,让它屏蔽掉某些信号,这时会发生什么事呢? ``` c void rebind_sig_handler(int signo) { printf("rebind %d in thread %lu\n", signo, pthread_self()); if (signal(signo, sig_usr) == SIG_ERR)...
映射功能是当下各大编辑器的标配,如果你想要熟悉所用的编辑器,必然不能缺少对它的映射机制的学习。对于vim亦是如此。 这里说到的映射功能,指的是编辑器会捕获用户的输入,并且按照事先的设置来执行某些动作。 ## 基础 在vim里面自定义一个映射,格式如下: ``` maptype key action ``` 如: ``` inoremap jk " 在insert模式下映射jk为Ctrl+[,也即进入normal模式 ``` maptype表示映射的类型,分为两大类,带`nore`的和不带`nore`的(具体意义稍后再谈)……每一类中,根据映射的可用范围再分成若干类,具体类型通过`:help map-overview`可以查到。这里列举下重要的几类: 1. map: 在所有模式下可用的映射 2. vmap:在visual和select模式下可用的映射 3. nmap:在normal模式下可用的映射 4. imap:在insert模式下可用的映射 5. omap:用于motion的一部分的映射。比如vw就是visual模式下选中一个词,可以用omap定义类似于w这样的动作操作符。...
最近惊奇地发现MySQL的默认编码方式居然是Latin1!而不是utf8! 于是即使我用的不是Windows,还是碰上了久违的编码问题…… 错误是传入utf8字符(这里特指中文字符)后,MySQL报错说“奇怪的字符串,\xAC\x12...,不认识啊”。利用Python的decode,可以把这串报错字符还原成原本的utf8字符串。可见应该是MySQL的问题。 上网搜一下,得出是character变量设置的问题。这时候的character相关变量设定如下: ``` mysql> show variables like 'character%'; +--------------------------+---------------------+ | Variable_name | Value | +--------------------------+---------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database |...
Google终于~~彻底~~完蛋了……现在的问题是,即使在教育网下,GFW还是会干扰google.com.hk的连接。在Chrome下,会出现如下的SSL错误: > 您与 www.google.com.hk 之间的安全连接目前正受到干扰。 > > 请等待几分钟后再尝试重新加载网页,或在切换到其他网络后重新加载网页。如果您最近曾连接到新的 Wi-Fi 网络,请先登录再重新加载。 查了下,这就是所谓的“中间人攻击”,在GFW可能采取的手段中已经算轻了,不知将来会不会使用更那啥的方式。 不过通过google.com.de(德国~~骨科~~谷歌),还是可以访问Google的搜索服务。但是Chrome浏览器的搜索框会自动去使用google.com.hk的网址,即便你已经设定默认搜索引擎为google.com.de(真是不知为何) 这是在教育网中的情况。在外网里,自从6月以来,Google已经沦陷大约3个月了,这个纪录超过以往的任何一次封锁,甚至让人觉得Google已步Facebook等网址的后尘。 在外网里,我一直使用search.aol.com来作为替代,因为它是Google的马甲("enhanced by Google")。除了搜出来的内容是全英文,以及没有办法根据用户信息来个性化搜索结果以外,这个网站算是Google的完美替身。不过前几天会偶尔上不了。而且它的知名度越来越高,恐怕…… 如果这些网站都上不了,那我只好退而求其次,选择bing或者duckduckgo。 我为什么要千方百计去访问Google呢?因为其他的搜索引擎都不如它(如果不是远远不如的话)。 bing中太多无效的、肤浅的信息,而且对热词处理的不好,只要你的查询语句中存在那么一个热词,搜索出来的内容明显就是偏向这个热词的。然而,热词一般都不是我们想要的结果,只是无法准确表述遇到的问题时,一种笼统的陈述罢了。 duckduckgo会用你的查询语句到各个主流社交平台去搜索。但是它太看重社交平台了,因此得出的结果未免偏颇而狭隘。另外收录的内容过少,也是一个问题。如果搜索的内容不是错误描述或API之类,搜索出来的结果恐怕就如bing一样。 百度是用来搜索广告的。 只有Google,是现阶段唯一得我心思的搜索引擎。 **说回来,搜索引擎对于程序员,就像刀对于厨师。如果没有一把趁手的刀,厨艺难免会打上折扣,厨师本人亦会不甚愉快。** Google之于我,已经不是一个普通的搜索引擎那么简单,而是彻底融入我的生活,成为我的工具箱的一部分。可以这么说,上不了Google,就像不能使用Vim来编辑文本,不能使用命令行来自动化繁琐的任务,让人感到沮丧而无奈。 所以说,GFW禁掉了Google,但是我还是想方设法绕过去,去访问google,访问一流的搜索引擎。 这不仅是我个人的想法,试下在v2ex下搜索“我要上谷歌”,看看许多同行为了正常地访问一个搜索引擎所付出的种种努力。有时候不禁这么想,禁掉Google,就是让程序员的生活质量大打折扣。 我要上谷歌。我还是会绞尽脑汁发掘一条通往Google的道路。即使荒草遍地,我还是会走出一条路。
Signed-off-by: spacewander ### Description Fixes # (issue) ### Checklist - [ ] I have explained the need for this PR and the problem it solves - [x] I have explained...
### Description Let's remove the deprecated configuration in the APISIX v3, including: - [ ] health_check_retry option https://github.com/apache/apisix/blob/2385768cc004ee6ac9f6d50167d2eb671669f3c0/apisix/cli/etcd.lua#L201 - [ ] lua_shared_dicts https://github.com/apache/apisix/blob/2385768cc004ee6ac9f6d50167d2eb671669f3c0/apisix/cli/ops.lua#L654-L655 - [ ] `audience` in authz-keycloak https://github.com/apache/apisix/blob/2385768cc004ee6ac9f6d50167d2eb671669f3c0/apisix/plugins/authz-keycloak.lua#L123-L129...
### Current State We currently hardcore the APISIX version in the blog or doc, which has misled some newcomers when they read an old blog version. This also makes updating...
### Description Currently, there are two ways to configure APISIX's data source / enable Admin API or not: 1. via various configurations, like `enable_admin` \ `config_center` \ `etcd`. 2. via...