材主

Results 74 issues of 材主

记一次php上的一个bug,明明服务器上的图片都是没问题的,但是通过 `imagepng` 返回后,就是显示不出来。 检查了好多遍,代码逻辑肯定是没问题的了,因为在最后返回之前,debug 到图片都是没问题的,就是最后返回到前端的时候,总是显示错误。 查了好久,最后把返回的图片通过 base_64 来看看图片内容,竟然发现里面多了个 `77u/` 字符串,如下: ``` data:image/png;base64,77u/iVBORw0KGgoAAAANSUhEUgAAAMYAAADGBAMAAAB7teJuAAAAJqE........... ``` 要知道,base64_decode('77u/') 就是 utf-8 文件的 BOM头 efbbbf,这回知道是怎么回事了,查找下代码,看看是哪个文件然后去掉即可。 本项目查到是一个语言包 `zh_cn/common.php` 的问题,应该是之前这个语言包发给翻译的同事翻译的时候,用 windows 机器打开编辑过的原因。 用 phpstorm 的同学,可以这样去掉:[https://blog.csdn.net/coco1118/article/details/86552410](https://blog.csdn.net/coco1118/article/details/86552410) ## BOM 科普(网上资料)...

PHP

```php /** * 程序运行耗时检测(单位:ms) * * @return int */ function get_time_cost_ms() { static $last_time = 0; $current_time = (int)(microtime(true)*1000); $delta_time = $last_time == 0 ? 0 : ($current_time - $last_time);...

PHP

之前遇到过好几次,在发布包的时候,`npm publish` 一直卡着,也没东西输出,就是卡着。 害的我把环境啥的都检查并重装了一遍,最后还是没能解决。 最后还是把代码交给同事,让同事给帮忙发布了…… 直到最近,在新电脑上又出现了,这次决定再认真看下,打开了日志,竟然被我发现了其秘密…… 代码里包含了个 `/demo`,而 `demo` 里有测试代码,我在本地跑的时候,`/demo/node_modules/` 文件夹留了下来忘记删了,导致在 `npm publish` 的时候把整个 `node_modules` 目录都加进去吧,难怪会一直卡在那里呢。 解决方法,添加 `.npmignore` 文件,把 `demo` 文件夹排除了就好了! ``` demo/ ```

如果英文过关,直接看 [官方文档](https://developer.chrome.com/extensions/overview) 就好了,写的还是很清晰简单的,可以直接跳到看最后的 【章节:程序分享与发布】。 ## What are extensions? > Extensions are small software programs that can modify and enhance the functionality of the Chrome browser. You write them using web...

前端开发
环境搭建

Chrome 51 开始,浏览器的 Cookie 新增加了一个 [SameSite](http://www.ruanyifeng.com/blog/2019/09/cookie-samesite.html) 属性,用来防止 CSRF 攻击和用户追踪。 Chrome 80 默认禁用第三方 Cookie,也就是说,会默认会给第三方 Cookie 添加 `SameSite=Lax` 属性,也就是说,A 域名跨域请求 B 域名的时候,Cookie 不会带过去,这会导致以下几种情况 - jsonp 请求跨域,无法通过携带 Cookie - CORS 请求,原有开启 withCredentials 无法携带...

## 官方资源 ### 1. 官方文档 [react-native 官方文档](https://facebook.github.io/react-native/docs/) 其实写的挺好挺全的,在你需要使用一个新东西新组件的时候,不妨先到官方网站搜索一下看看。 ### 2. 官方社区 react-native-community [react-native-community](https://github.com/react-native-community) 是 react-native 的官方社区,现在作者也有意的把一些核心支撑能力从 react-native 核心库中慢慢剥离出来放到官方社区里去了。 所以,在你需要寻找一个组件库的时候,最好先到 [react-native-community](https://github.com/react-native-community) 搜一下看有没有。 ### 3. 版本相关 - [RN CHANGELOG](https://github.com/react-native-community/releases/blob/master/CHANGELOG.md) - [RN VERSIONS](https://facebook.github.io/react-native/versions)...

网上查了好多,都是 windows 版的,mac 版的其实也很简单,退出软件之后,运行以下命令即可: ```bash defaults write com.torusknot.SourceTreeNotMAS completedWelcomeWizardVersion 3 ```

微信小程序有个 [web-view](https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html) 组件,有了它,微信就相当于变成了个浏览器了,让小程序有了无限的可能,简直就是前端同学的福音。 当然,它也有一定的限制,比如: - 只能打开 HTTPS 链接的页面 - 只能打开已认证的「业务域名」下的链接 ![image](https://user-images.githubusercontent.com/7159888/48248345-e3baca00-e431-11e8-9ad2-ad8aa96e7970.png) 有了它,可以让网站的小程序化变的非常简单,只要把 HTTPS 支持上即可,一行代码实现一个小程序,这都不是梦 ^_^ ```html ``` ## 分享功能实现 小程序的最大优势也在于它的流量上面,而流量的获取,就免不了分享功能。在 `web-view` 里分享出去的页面,怎么与首页形成回流关系,整体流程该怎么走,相信用过这个组件的同学都会遇到这个问题。 参考了网上的资料([微信小程序,实现内嵌网页的分享](https://blog.csdn.net/sennyla/article/details/80022187)),折腾了一翻,终于把整个流程搞通了,具体实现思路这里给分享一下。 ### 一、大概思路 一共两个原生页面,一个作为小程序入口,一个作为二级页面承载页: 1. 首页 `pages/index`:小程序入口(包含分享后的页面) 2....

JS 和任何一门语言一样,对其数值的范围有限制。 ```js Number.MAX_VALUE // 1.7976931348623157e+308 Number.MAX_SAFE_INTEGER // 9007199254740991 Number.MIN_VALUE // 5e-324 Number.MIN_SAFE_INTEGER // -9007199254740991 ``` 如果我们想要对一个超大的整数(> Number.MAX_SAFE_INTEGER)进行加法运算,但是又想输出一般形式,那么使用 + 是无法达到的,一旦数字超过 Number.MAX_SAFE_INTEGER 数字会被立即转换为科学计数法,并且数字精度相比以前将会有误差。在此时就需要自己实现一套加法算法。 ```js function sum(a, b) { var res =...

算法

最近在实现一个移动端上的字母快速定位导航的时候,发现了一些问题,在 `touchstart touchmove` 的响应里,获取到的 `e.target` 都是第一次按下去时的 DOM。 ![image](https://user-images.githubusercontent.com/7159888/52100938-93a86980-2614-11e9-9f2b-6beb2498800b.png) 那怎么样才可以获取移动过程中实际手指所在的一个 DOM 节点呢? 首先,通过以下两个获取当手指的真实位置: `e.originalEvent.changedTouches[0].clientX` `e.originalEvent.changedTouches[0].clientY` 然后用这个函数获取真实 DOM 节点: `document.elementFromPoint(x,y)` 按照上面的实现方式,可以实现所要的效果,但是有一个问题,手指在移动的过程中,离开了右边的栏则不生效,因为 X 的位置变了,这时候获取到的是数据列表的 DOM 节点。 所以,在以上函数 `elementFromPoint` 传参的时候,X 值只传入一个固定的值就可以了,这个固定值,可以通过屏幕大小来获取。 最后,核心代码如下: ```js $('.ul-fixed').on('touchstart...

前端开发