IntelliJ IDEA 光标消失问题

碰到这个问题很郁闷啊,一段时间后,光标就莫名消失了,得重启 IntelliJ IDEA 才行,到官方论坛询问才得知,系统时间如果被调前就会发生这个情况(防止 license 过期后用户继续使用?)。我电脑系统(Windows 10)因为系统时间同步的问题,确实老是不准。

总之,把系统时间调准后,IntelliJ IDEA 的光标就回来了。

接下来我把系统时间同步问题解决就一切 OK 了。

Python 替换网址(url)中的文件名

OpenCart 的产品图片使用网址

OpenCart 的产品图片存放在 /image/catalog/ 下,产品图片(img)的 src 会指向这个路径。如果希望产品图片使用绝对路径(http)的话,需要修改:
/catalog/model/tool/image.php
在 resize 方法开始处加入:

OpenCart 图片显示不出来

在 Windows 上安装了 OpenCart (2.3) 后,打开首页,发现产品都不显示图片,查看 img 标签的 src 属性,发现都是空的。一番搜索后,意识到应该是路径问题。

打开 OpenCart 的 config.php、admin/config.php 如下:

define(‘DIR_BASE’, realpath($_SERVER[‘DOCUMENT_ROOT’]) . ‘/’);

Windows 下路径是以“\”间隔的,把 DIR_BASE 这个值改为绝对路径,并且“\”换成“/”即可。

为用户账户“root”指定的密码无效,或者未能连接到数据库服务器

用 IIS 的 Web Platform Installer (Web平台安装程序)安装 OpenCart 时,出现了这很奇怪的错误:

为用户账户“root”指定的密码无效,或者未能连接到数据库服务器

但其实我输入的密码是正确的。Google之发现不少人也碰到这个问题,基本上确定是 MySql Connector/NET 的 bug ,但给出的解决方法也不尽相同……

我的解决方法是:(在控制面板/卸载程序)卸载已经安装的 MySql Connector/Net,然后在 Web Platform Installer 里把 MySql Connector 和 OpenCart 添加到“安装”里,然后一起安装。

xx33

终于成功在 IIS 上安装了 OpenCart 了!

IntelliJ IDEA、PyCharm 运行 Django 的 manage 命令

在开发 Django 项目时,会需要经常执行它的 manage.py  任务。

其实在 IntelliJ IDEA(或者 PyCharm )中可以很方便地运行 manage.py 任务,如图:

20171204163518
IntelliJ IDEA(或PyCharm)可以很方便地执行 django manage.py

然后就可以在 console 窗口中直接输入想要运行的 task 的名称了:
20171204164219

django 使用 mssql 遇到“没有活动事务时,不能发出 SAVE TRANSACTION”

django mssql SAVE TRANSACTION problem
django 使用 mssql 遇到“没有活动事务时,不能发出 SAVE TRANSACTION”的问题

这个问题有两个解决方法:

  • 第一种方法:provider 使用 SQLNCLI11
    SQLNCLI11 即 Microsoft® SQL Server® 2012 Native Client,下载并安装

    install SQLNCLI11
    安装 SQLNCLI11

    但我安装时碰到了 dll 缺失的问题,实在不想再折腾了,跳过。

    install SQLNCLI11 dll
    安装 SQLNCLI11 又遇到 dll 缺失的问题

     

  • 第二种方法:provider 使用 SQLOLEDB,设置 ATOMIC_REQUESTS 为 True
    打开 settings.py 在 DATABASES 下增加 ATOMIC_REQUESTS 的设置:

    20171202113004
    ‘ATOMIC_REQUESTS’:True,

Chrome extension(扩展程序)三大件的调试

Chrome extension 里脚本主要在三个地方运行:background.js、popup.js、content_script.js,这三者都可以通 Chrome 的“开发者工具”来调试。

  • background.js
    截图20171130101219background.js 运行于整个 Chrome extension 环境。默认设定下,background.js 的生命周期是只要 Chrome 打开,那它就会一直处于运行状态。
  • popup.js
    它的运行环境也是整个 Chrome extension 环境。以 pageaction 为例,你点击图标时 popup 出现,等鼠标点击其它地方,popup 消失,它的生命周期也就结束了。
    可能通过鼠标右键“检查”来打开 console 来调试 popup.js
    20171130103938
  • content_script.js
    它的运行环境只在 tab 里,和用户浏览的网页一样,就像是网页里的 js 一样。你关掉网页,它的生命周期也就结束了。打开“开发者工具”在 Sources 那个面板可以看到 Content scripts
    20171130104419
  • 它们之间如何通信
    如果要向 background.js、popup.js 发消息,注意它们的运行环境是 Chrome 运行环境,所以就是向 chrome.runtime 发消息:
    chrome.runtime.sendMessage(...)
    如果要向 content_script.js 发消息,注意它的运行环境是特定的 tab ,所以就是向 chrome.tabs 发消息
    chrome.tabs.sendMessage(...)
    那怎么接收对方发送的消息呢?
    注意!在 background.js、popup.js 和 content_script.js 里侦听对方发送的消息都是用:
    chrome.runtime.onMessage.addListener(...)
    不存在 chrome.tabs.onMessage 的!