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 的!

关于 jQuery 中的 prop 和 attr

  1. 尽量使用 prop,而不是 attr
    在一些 DOM 的常用操作中这两者接近等价(要不然也不会这么容易搞混),但是 attr 在某些 element 的属性上可能不会像你想象的那样(比如 input 的 checked),使用 prop 可以避免这种情况。
  2. attribute (基本上)是 string 的
    attribute 就是你写在 HTML 中 element 的那些“属性”,像这样:

    <input type="hidden" name="type" value="file" crazy-attr="xxxx">

    这个 input 的 attributes 有 type/name/value/crazy-attr,这些“属性”的赋值除了被引号围着,就没有其它的类型声明,那它们只能是 string 的。另外,注意到没有你可以给 element 设定各种奇怪的任意名字的 attribute,而不是非得按照控件的属性来。
    你所设定的 attribute 会保存在 element.attributes 数组中。

  3. property 是定义在 DOM 类中的
    每个 element 都是 DOM 对象,都有它对应 DOM 的类,这个类里所声明的就是这个 element 的 property

用 Google Tag Manager (跟踪代码管理器)加入 51.la 统计代码

Google Tag Manager(跟踪代码管理器)可以很方便让你管理在网站中插入的代码(不管是 JS 还是 HTML)。本文介绍如何在 Google Tag Manager 中插入 51.la 的统计代码。

  1. 进入 Google Tag Manager 的工作区 – 新建代码
    截图20171116102542
  2. 命名为 51.la
    截图20171116102624
  3. 点击代码配置,选择“自定义 HTML”
    截图20171116102656
  4. 粘贴你的 51.la 跟踪代码
    截图20171116102853
  5. 保存 – 触发条件选择“All Pages”
    截图20171116102918
  6. 最后点击“工作区”右上角的“提交”
    截图20171116103004
  7. 大功造成!

IntelliJ IDE 和番茄工作法(pomodoro)

Jetbrains 家的 IDE 是出了名的好用,IntelliJ IDEA 更是最好的 IDE(之一)。番茄工作法(pomodoro )是非常流行的时间管理方法,它的核心原则是:一个番茄时间内不做其他无关的事情。其实 IntelliJ IDE 本身就是……很好的 pomodoro 软件哦……

我已经实践这个方法超过一个月了……非常好用……

方法如下:

  1. 下载并安装 IntelliJ IDEA(或者PyCharm、WebStorm、PHPStorm)
  2. 别搞注册机,别购买授权。如果已经授权了,那么取消授权。
  3. 等 30 天
  4. 接下来,如果你在启动 IDE 时看到这个提示:
    20171113094022那么恭喜你!说明它的番茄定时功能已经正常启用了!
  5. 开始愉快地编程吧,专注你的工作,每 30 分钟你都会收到这个提示:
    20171113093950

而且这个功能完全免费,可见 Jetbrains 真是良心企业 : )

python 上传视频到 youtube

使用 github 上的项目:https://github.com/tokland/youtube-upload/

    1. 安装 google-api-python-client 和 progressbar2
      b87c7aea9c6c469c88017b7e46a17de7
    2. 下载  https://github.com/tokland/youtube-upload/archive/master.zip  解压 zip,手动安装:
      399452eb34d640009ad9ee7560fe6596
    3. 上传视频

      youtube-upload –title=”标题必需写的” 1234.mp4

      • 第一次上传视频时,会出现登录验证(Oauth 2):
        b85a1c64da1d4441b57e75e2c38b1e09
      • 打开登录验证的网页
        截图20171106173202
        把 code 输入到 命令窗口就OK了。
      • 登录数据会保存下来复用(windows上的路径是:
        C:\Users\Administrator\.youtube-upload-credentials.json

        )。

    4. 大功造成!